]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/ir: remove FuncType and OTFUNC
authorMatthew Dempsky <mdempsky@google.com>
Tue, 3 May 2022 23:12:01 +0000 (16:12 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 5 May 2022 18:49:32 +0000 (18:49 +0000)
No longer needed. We now always directly construct TFUNC types when
needed.

Change-Id: I1bb286c08539cbf97e331824f0f5464b5fd9c873
Reviewed-on: https://go-review.googlesource.com/c/go/+/403936
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>

src/cmd/compile/internal/ir/fmt.go
src/cmd/compile/internal/ir/node.go
src/cmd/compile/internal/ir/node_gen.go
src/cmd/compile/internal/ir/op_string.go
src/cmd/compile/internal/ir/type.go

index c97bc5831bdafa7aaaee20e74d1218a865592c26..760ae7df1e4465b81c68be2015a900bcf03a3664 100644 (file)
@@ -210,7 +210,6 @@ var OpPrec = []int{
        OSTR2BYTES:     8,
        OSTR2RUNES:     8,
        OSTRUCTLIT:     8,
-       OTFUNC:         8,
        OTYPE:          8,
        OUNSAFEADD:     8,
        OUNSAFESLICE:   8,
@@ -645,9 +644,6 @@ func exprFmt(n Node, s fmt.State, prec int) {
                }
                fmt.Fprintf(s, "%v", n.Type())
 
-       case OTFUNC:
-               fmt.Fprint(s, "<func>")
-
        case OCLOSURE:
                n := n.(*ClosureExpr)
                if !exportFormat {
index 0d91d1734416a61a15feeaf05875b4efd3cc444b..3b69f984265bbb44467d20eebc5dbf6f207aa1c2 100644 (file)
@@ -286,12 +286,6 @@ const (
        OTYPESW
        OFUNCINST // instantiation of a generic function
 
-       // types
-       // OTFUNC: func() - Recv is receiver field, Params is list of param fields, Results is
-       // list of result fields.
-       // TODO(mdempsky): Remove.
-       OTFUNC
-
        // misc
        // intermediate representation of an inlined call.  Uses Init (assignments
        // for the captured variables, parameters, retvars, & INLMARK op),
index 5b82b5569416d5d101cdd591e7f558c3c7f3a7c7..30d5b23de966dbc94393cca2625d894561d3e73c 100644 (file)
@@ -513,32 +513,6 @@ func (n *ForStmt) editChildren(edit func(Node) Node) {
 
 func (n *Func) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
 
-func (n *FuncType) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
-func (n *FuncType) copy() Node {
-       c := *n
-       c.Recv = copyField(c.Recv)
-       c.Params = copyFields(c.Params)
-       c.Results = copyFields(c.Results)
-       return &c
-}
-func (n *FuncType) doChildren(do func(Node) bool) bool {
-       if doField(n.Recv, do) {
-               return true
-       }
-       if doFields(n.Params, do) {
-               return true
-       }
-       if doFields(n.Results, do) {
-               return true
-       }
-       return false
-}
-func (n *FuncType) editChildren(edit func(Node) Node) {
-       editField(n.Recv, edit)
-       editFields(n.Params, edit)
-       editFields(n.Results, edit)
-}
-
 func (n *GoDeferStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
 func (n *GoDeferStmt) copy() Node {
        c := *n
index 8927f18ceab72824267ac6a1a8370890bac1400e..5d475a799571ae2167519315743bbc5bf5a8e0d5 100644 (file)
@@ -140,34 +140,33 @@ func _() {
        _ = x[OSWITCH-129]
        _ = x[OTYPESW-130]
        _ = x[OFUNCINST-131]
-       _ = x[OTFUNC-132]
-       _ = x[OINLCALL-133]
-       _ = x[OEFACE-134]
-       _ = x[OITAB-135]
-       _ = x[OIDATA-136]
-       _ = x[OSPTR-137]
-       _ = x[OCFUNC-138]
-       _ = x[OCHECKNIL-139]
-       _ = x[OVARDEF-140]
-       _ = x[OVARKILL-141]
-       _ = x[OVARLIVE-142]
-       _ = x[ORESULT-143]
-       _ = x[OINLMARK-144]
-       _ = x[OLINKSYMOFFSET-145]
-       _ = x[OJUMPTABLE-146]
-       _ = x[ODYNAMICDOTTYPE-147]
-       _ = x[ODYNAMICDOTTYPE2-148]
-       _ = x[ODYNAMICTYPE-149]
-       _ = x[OTAILCALL-150]
-       _ = x[OGETG-151]
-       _ = x[OGETCALLERPC-152]
-       _ = x[OGETCALLERSP-153]
-       _ = x[OEND-154]
+       _ = x[OINLCALL-132]
+       _ = x[OEFACE-133]
+       _ = x[OITAB-134]
+       _ = x[OIDATA-135]
+       _ = x[OSPTR-136]
+       _ = x[OCFUNC-137]
+       _ = x[OCHECKNIL-138]
+       _ = x[OVARDEF-139]
+       _ = x[OVARKILL-140]
+       _ = x[OVARLIVE-141]
+       _ = x[ORESULT-142]
+       _ = x[OINLMARK-143]
+       _ = x[OLINKSYMOFFSET-144]
+       _ = x[OJUMPTABLE-145]
+       _ = x[ODYNAMICDOTTYPE-146]
+       _ = x[ODYNAMICDOTTYPE2-147]
+       _ = x[ODYNAMICTYPE-148]
+       _ = x[OTAILCALL-149]
+       _ = x[OGETG-150]
+       _ = x[OGETCALLERPC-151]
+       _ = x[OGETCALLERSP-152]
+       _ = x[OEND-153]
 }
 
-const _Op_name = "XXXNAMENONAMETYPELITERALNILADDSUBORXORADDSTRADDRANDANDAPPENDBYTES2STRBYTES2STRTMPRUNES2STRSTR2BYTESSTR2BYTESTMPSTR2RUNESSLICE2ARRPTRASAS2AS2DOTTYPEAS2FUNCAS2MAPRAS2RECVASOPCALLCALLFUNCCALLMETHCALLINTERCAPCLOSECLOSURECOMPLITMAPLITSTRUCTLITARRAYLITSLICELITPTRLITCONVCONVIFACECONVIDATACONVNOPCOPYDCLDCLFUNCDCLCONSTDCLTYPEDELETEDOTDOTPTRDOTMETHDOTINTERXDOTDOTTYPEDOTTYPE2EQNELTLEGEGTDEREFINDEXINDEXMAPKEYSTRUCTKEYLENMAKEMAKECHANMAKEMAPMAKESLICEMAKESLICECOPYMULDIVMODLSHRSHANDANDNOTNEWNOTBITNOTPLUSNEGORORPANICPRINTPRINTNPARENSENDSLICESLICEARRSLICESTRSLICE3SLICE3ARRSLICEHEADERRECOVERRECOVERFPRECVRUNESTRSELRECV2REALIMAGCOMPLEXALIGNOFOFFSETOFSIZEOFUNSAFEADDUNSAFESLICEMETHEXPRMETHVALUEBLOCKBREAKCASECONTINUEDEFERFALLFORFORUNTILGOTOIFLABELGORANGERETURNSELECTSWITCHTYPESWFUNCINSTTFUNCINLCALLEFACEITABIDATASPTRCFUNCCHECKNILVARDEFVARKILLVARLIVERESULTINLMARKLINKSYMOFFSETJUMPTABLEDYNAMICDOTTYPEDYNAMICDOTTYPE2DYNAMICTYPETAILCALLGETGGETCALLERPCGETCALLERSPEND"
+const _Op_name = "XXXNAMENONAMETYPELITERALNILADDSUBORXORADDSTRADDRANDANDAPPENDBYTES2STRBYTES2STRTMPRUNES2STRSTR2BYTESSTR2BYTESTMPSTR2RUNESSLICE2ARRPTRASAS2AS2DOTTYPEAS2FUNCAS2MAPRAS2RECVASOPCALLCALLFUNCCALLMETHCALLINTERCAPCLOSECLOSURECOMPLITMAPLITSTRUCTLITARRAYLITSLICELITPTRLITCONVCONVIFACECONVIDATACONVNOPCOPYDCLDCLFUNCDCLCONSTDCLTYPEDELETEDOTDOTPTRDOTMETHDOTINTERXDOTDOTTYPEDOTTYPE2EQNELTLEGEGTDEREFINDEXINDEXMAPKEYSTRUCTKEYLENMAKEMAKECHANMAKEMAPMAKESLICEMAKESLICECOPYMULDIVMODLSHRSHANDANDNOTNEWNOTBITNOTPLUSNEGORORPANICPRINTPRINTNPARENSENDSLICESLICEARRSLICESTRSLICE3SLICE3ARRSLICEHEADERRECOVERRECOVERFPRECVRUNESTRSELRECV2REALIMAGCOMPLEXALIGNOFOFFSETOFSIZEOFUNSAFEADDUNSAFESLICEMETHEXPRMETHVALUEBLOCKBREAKCASECONTINUEDEFERFALLFORFORUNTILGOTOIFLABELGORANGERETURNSELECTSWITCHTYPESWFUNCINSTINLCALLEFACEITABIDATASPTRCFUNCCHECKNILVARDEFVARKILLVARLIVERESULTINLMARKLINKSYMOFFSETJUMPTABLEDYNAMICDOTTYPEDYNAMICDOTTYPE2DYNAMICTYPETAILCALLGETGGETCALLERPCGETCALLERSPEND"
 
-var _Op_index = [...]uint16{0, 3, 7, 13, 17, 24, 27, 30, 33, 35, 38, 44, 48, 54, 60, 69, 81, 90, 99, 111, 120, 132, 134, 137, 147, 154, 161, 168, 172, 176, 184, 192, 201, 204, 209, 216, 223, 229, 238, 246, 254, 260, 264, 273, 282, 289, 293, 296, 303, 311, 318, 324, 327, 333, 340, 348, 352, 359, 367, 369, 371, 373, 375, 377, 379, 384, 389, 397, 400, 409, 412, 416, 424, 431, 440, 453, 456, 459, 462, 465, 468, 471, 477, 480, 483, 489, 493, 496, 500, 505, 510, 516, 521, 525, 530, 538, 546, 552, 561, 572, 579, 588, 592, 599, 607, 611, 615, 622, 629, 637, 643, 652, 663, 671, 680, 685, 690, 694, 702, 707, 711, 714, 722, 726, 728, 733, 735, 740, 746, 752, 758, 764, 772, 777, 784, 789, 793, 798, 802, 807, 815, 821, 828, 835, 841, 848, 861, 870, 884, 899, 910, 918, 922, 933, 944, 947}
+var _Op_index = [...]uint16{0, 3, 7, 13, 17, 24, 27, 30, 33, 35, 38, 44, 48, 54, 60, 69, 81, 90, 99, 111, 120, 132, 134, 137, 147, 154, 161, 168, 172, 176, 184, 192, 201, 204, 209, 216, 223, 229, 238, 246, 254, 260, 264, 273, 282, 289, 293, 296, 303, 311, 318, 324, 327, 333, 340, 348, 352, 359, 367, 369, 371, 373, 375, 377, 379, 384, 389, 397, 400, 409, 412, 416, 424, 431, 440, 453, 456, 459, 462, 465, 468, 471, 477, 480, 483, 489, 493, 496, 500, 505, 510, 516, 521, 525, 530, 538, 546, 552, 561, 572, 579, 588, 592, 599, 607, 611, 615, 622, 629, 637, 643, 652, 663, 671, 680, 685, 690, 694, 702, 707, 711, 714, 722, 726, 728, 733, 735, 740, 746, 752, 758, 764, 772, 779, 784, 788, 793, 797, 802, 810, 816, 823, 830, 836, 843, 856, 865, 879, 894, 905, 913, 917, 928, 939, 942}
 
 func (i Op) String() string {
        if i >= Op(len(_Op_index)-1) {
index 39d36b3f4abf743a7cb3b6eb5b937819221d1b76..e2ed5ecd76215ffc330253b7354fcebd574b7d0f 100644 (file)
@@ -26,70 +26,13 @@ type Ntype interface {
        CanBeNtype()
 }
 
-// A miniType is a minimal type syntax Node implementation,
-// to be embedded as the first field in a larger node implementation.
-type miniType struct {
-       miniNode
-       typ *types.Type
-}
-
-func (*miniType) CanBeNtype() {}
-
-func (n *miniType) Type() *types.Type { return n.typ }
-
-// setOTYPE changes n to be an OTYPE node returning t.
-// Rewriting the node in place this way should not be strictly
-// necessary (we should be able to update the uses with
-// proper OTYPE nodes), but it's mostly harmless and easy
-// to keep doing for now.
-//
-// setOTYPE also records t.Nod = self if t.Nod is not already set.
-// (Some types are shared by multiple OTYPE nodes, so only
-// the first such node is used as t.Nod.)
-func (n *miniType) setOTYPE(t *types.Type, self Ntype) {
-       if n.typ != nil {
-               panic(n.op.String() + " SetType: type already set")
-       }
-       n.op = OTYPE
-       n.typ = t
-       t.SetNod(self)
-}
-
-func (n *miniType) Sym() *types.Sym { return nil }   // for Format OTYPE
-func (n *miniType) Implicit() bool  { return false } // for Format OTYPE
-
-// A FuncType represents a func(Args) Results type syntax.
-type FuncType struct {
-       miniType
-       Recv    *Field
-       Params  []*Field
-       Results []*Field
-}
-
-func NewFuncType(pos src.XPos, rcvr *Field, args, results []*Field) *FuncType {
-       n := &FuncType{Recv: rcvr, Params: args, Results: results}
-       n.op = OTFUNC
-       n.pos = pos
-       return n
-}
-
-func (n *FuncType) SetOTYPE(t *types.Type) {
-       n.setOTYPE(t, n)
-       n.Recv = nil
-       n.Params = nil
-       n.Results = nil
-}
-
-// A Field is a declared struct field, interface method, or function argument.
+// A Field is a declared function parameter.
 // It is not a Node.
 type Field struct {
-       Pos      src.XPos
-       Sym      *types.Sym
-       Type     *types.Type
-       Embedded bool
-       IsDDD    bool
-       Note     string
-       Decl     *Name
+       Pos   src.XPos
+       Sym   *types.Sym
+       Type  *types.Type
+       IsDDD bool
 }
 
 func NewField(pos src.XPos, sym *types.Sym, typ *types.Type) *Field {
@@ -103,55 +46,6 @@ func (f *Field) String() string {
        return fmt.Sprint(f.Type)
 }
 
-// TODO(mdempsky): Make Field a Node again so these can be generated?
-// Fields are Nodes in go/ast and cmd/compile/internal/syntax.
-
-func copyField(f *Field) *Field {
-       if f == nil {
-               return nil
-       }
-       c := *f
-       return &c
-}
-func doField(f *Field, do func(Node) bool) bool {
-       if f == nil {
-               return false
-       }
-       if f.Decl != nil && do(f.Decl) {
-               return true
-       }
-       return false
-}
-func editField(f *Field, edit func(Node) Node) {
-       if f == nil {
-               return
-       }
-       if f.Decl != nil {
-               f.Decl = edit(f.Decl).(*Name)
-       }
-}
-
-func copyFields(list []*Field) []*Field {
-       out := make([]*Field, len(list))
-       for i, f := range list {
-               out[i] = copyField(f)
-       }
-       return out
-}
-func doFields(list []*Field, do func(Node) bool) bool {
-       for _, x := range list {
-               if doField(x, do) {
-                       return true
-               }
-       }
-       return false
-}
-func editFields(list []*Field, edit func(Node) Node) {
-       for _, f := range list {
-               editField(f, edit)
-       }
-}
-
 // A typeNode is a Node wrapper for type t.
 type typeNode struct {
        miniNode