From: Matthew Dempsky Date: Fri, 18 Aug 2023 06:04:08 +0000 (-0700) Subject: cmd/compile/internal/ir: remove OFUNCINST and InstExpr X-Git-Tag: go1.22rc1~1208 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f9410990e60529d74733e557d26f34d6237548dc;p=gostls13.git cmd/compile/internal/ir: remove OFUNCINST and InstExpr These were only ever used by the pre-unified generics frontend. I initially kept them because I thought they'd be useful for the unified frontend eventually too, but that hasn't manifested. Change-Id: Iaa31a76ac4d62533ec269d2a7141442b8e344180 Reviewed-on: https://go-review.googlesource.com/c/go/+/520608 Auto-Submit: Matthew Dempsky TryBot-Result: Gopher Robot Reviewed-by: Cuong Manh Le Run-TryBot: Matthew Dempsky Reviewed-by: Dmitri Shuralyov --- diff --git a/src/cmd/compile/internal/ir/expr.go b/src/cmd/compile/internal/ir/expr.go index 69edd1c3cf..5eed85ed84 100644 --- a/src/cmd/compile/internal/ir/expr.go +++ b/src/cmd/compile/internal/ir/expr.go @@ -753,25 +753,6 @@ func (n *UnaryExpr) SetOp(op Op) { } } -// Probably temporary: using Implicit() flag to mark generic function nodes that -// are called to make getGfInfo analysis easier in one pre-order pass. -func (n *InstExpr) Implicit() bool { return n.flags&miniExprImplicit != 0 } -func (n *InstExpr) SetImplicit(b bool) { n.flags.set(miniExprImplicit, b) } - -// An InstExpr is a generic function or type instantiation. -type InstExpr struct { - miniExpr - X Node - Targs []Ntype -} - -func NewInstExpr(pos src.XPos, op Op, x Node, targs []Ntype) *InstExpr { - n := &InstExpr{X: x, Targs: targs} - n.pos = pos - n.op = op - return n -} - func IsZero(n Node) bool { switch n.Op() { case ONIL: diff --git a/src/cmd/compile/internal/ir/node.go b/src/cmd/compile/internal/ir/node.go index 4ba560bba7..317c716b16 100644 --- a/src/cmd/compile/internal/ir/node.go +++ b/src/cmd/compile/internal/ir/node.go @@ -280,7 +280,6 @@ const ( // OTYPESW: X := Y.(type) (appears as .Tag of OSWITCH) // X is nil if there is no type-switch variable OTYPESW - OFUNCINST // instantiation of a generic function // misc // intermediate representation of an inlined call. Uses Init (assignments diff --git a/src/cmd/compile/internal/ir/node_gen.go b/src/cmd/compile/internal/ir/node_gen.go index 2dda76b1e3..debaeefc3d 100644 --- a/src/cmd/compile/internal/ir/node_gen.go +++ b/src/cmd/compile/internal/ir/node_gen.go @@ -866,40 +866,6 @@ func (n *InlinedCallExpr) editChildrenWithHidden(edit func(Node) Node) { editNodes(n.ReturnVars, edit) } -func (n *InstExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) } -func (n *InstExpr) copy() Node { - c := *n - c.init = copyNodes(c.init) - c.Targs = copyNtypes(c.Targs) - return &c -} -func (n *InstExpr) doChildren(do func(Node) bool) bool { - if doNodes(n.init, do) { - return true - } - if n.X != nil && do(n.X) { - return true - } - if doNtypes(n.Targs, do) { - return true - } - return false -} -func (n *InstExpr) editChildren(edit func(Node) Node) { - editNodes(n.init, edit) - if n.X != nil { - n.X = edit(n.X).(Node) - } - editNtypes(n.Targs, edit) -} -func (n *InstExpr) editChildrenWithHidden(edit func(Node) Node) { - editNodes(n.init, edit) - if n.X != nil { - n.X = edit(n.X).(Node) - } - editNtypes(n.Targs, edit) -} - func (n *JumpTableStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) } func (n *JumpTableStmt) copy() Node { c := *n diff --git a/src/cmd/compile/internal/ir/op_string.go b/src/cmd/compile/internal/ir/op_string.go index 1d8d61da05..500a534d14 100644 --- a/src/cmd/compile/internal/ir/op_string.go +++ b/src/cmd/compile/internal/ir/op_string.go @@ -144,31 +144,30 @@ func _() { _ = x[OSELECT-133] _ = x[OSWITCH-134] _ = x[OTYPESW-135] - _ = x[OFUNCINST-136] - _ = x[OINLCALL-137] - _ = x[OEFACE-138] - _ = x[OITAB-139] - _ = x[OIDATA-140] - _ = x[OSPTR-141] - _ = x[OCFUNC-142] - _ = x[OCHECKNIL-143] - _ = x[ORESULT-144] - _ = x[OINLMARK-145] - _ = x[OLINKSYMOFFSET-146] - _ = x[OJUMPTABLE-147] - _ = x[ODYNAMICDOTTYPE-148] - _ = x[ODYNAMICDOTTYPE2-149] - _ = x[ODYNAMICTYPE-150] - _ = x[OTAILCALL-151] - _ = x[OGETG-152] - _ = x[OGETCALLERPC-153] - _ = x[OGETCALLERSP-154] - _ = x[OEND-155] + _ = x[OINLCALL-136] + _ = x[OEFACE-137] + _ = x[OITAB-138] + _ = x[OIDATA-139] + _ = x[OSPTR-140] + _ = x[OCFUNC-141] + _ = x[OCHECKNIL-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] } -const _Op_name = "XXXNAMENONAMETYPELITERALNILADDSUBORXORADDSTRADDRANDANDAPPENDBYTES2STRBYTES2STRTMPRUNES2STRSTR2BYTESSTR2BYTESTMPSTR2RUNESSLICE2ARRSLICE2ARRPTRASAS2AS2DOTTYPEAS2FUNCAS2MAPRAS2RECVASOPCALLCALLFUNCCALLMETHCALLINTERCAPCLEARCLOSECLOSURECOMPLITMAPLITSTRUCTLITARRAYLITSLICELITPTRLITCONVCONVIFACECONVIDATACONVNOPCOPYDCLDCLFUNCDELETEDOTDOTPTRDOTMETHDOTINTERXDOTDOTTYPEDOTTYPE2EQNELTLEGEGTDEREFINDEXINDEXMAPKEYSTRUCTKEYLENMAKEMAKECHANMAKEMAPMAKESLICEMAKESLICECOPYMULDIVMODLSHRSHANDANDNOTNEWNOTBITNOTPLUSNEGORORPANICPRINTPRINTNPARENSENDSLICESLICEARRSLICESTRSLICE3SLICE3ARRSLICEHEADERSTRINGHEADERRECOVERRECOVERFPRECVRUNESTRSELRECV2MINMAXREALIMAGCOMPLEXALIGNOFOFFSETOFSIZEOFUNSAFEADDUNSAFESLICEUNSAFESLICEDATAUNSAFESTRINGUNSAFESTRINGDATAMETHEXPRMETHVALUEBLOCKBREAKCASECONTINUEDEFERFALLFORGOTOIFLABELGORANGERETURNSELECTSWITCHTYPESWFUNCINSTINLCALLEFACEITABIDATASPTRCFUNCCHECKNILRESULTINLMARKLINKSYMOFFSETJUMPTABLEDYNAMICDOTTYPEDYNAMICDOTTYPE2DYNAMICTYPETAILCALLGETGGETCALLERPCGETCALLERSPEND" +const _Op_name = "XXXNAMENONAMETYPELITERALNILADDSUBORXORADDSTRADDRANDANDAPPENDBYTES2STRBYTES2STRTMPRUNES2STRSTR2BYTESSTR2BYTESTMPSTR2RUNESSLICE2ARRSLICE2ARRPTRASAS2AS2DOTTYPEAS2FUNCAS2MAPRAS2RECVASOPCALLCALLFUNCCALLMETHCALLINTERCAPCLEARCLOSECLOSURECOMPLITMAPLITSTRUCTLITARRAYLITSLICELITPTRLITCONVCONVIFACECONVIDATACONVNOPCOPYDCLDCLFUNCDELETEDOTDOTPTRDOTMETHDOTINTERXDOTDOTTYPEDOTTYPE2EQNELTLEGEGTDEREFINDEXINDEXMAPKEYSTRUCTKEYLENMAKEMAKECHANMAKEMAPMAKESLICEMAKESLICECOPYMULDIVMODLSHRSHANDANDNOTNEWNOTBITNOTPLUSNEGORORPANICPRINTPRINTNPARENSENDSLICESLICEARRSLICESTRSLICE3SLICE3ARRSLICEHEADERSTRINGHEADERRECOVERRECOVERFPRECVRUNESTRSELRECV2MINMAXREALIMAGCOMPLEXALIGNOFOFFSETOFSIZEOFUNSAFEADDUNSAFESLICEUNSAFESLICEDATAUNSAFESTRINGUNSAFESTRINGDATAMETHEXPRMETHVALUEBLOCKBREAKCASECONTINUEDEFERFALLFORGOTOIFLABELGORANGERETURNSELECTSWITCHTYPESWINLCALLEFACEITABIDATASPTRCFUNCCHECKNILRESULTINLMARKLINKSYMOFFSETJUMPTABLEDYNAMICDOTTYPEDYNAMICDOTTYPE2DYNAMICTYPETAILCALLGETGGETCALLERPCGETCALLERSPEND" -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, 129, 141, 143, 146, 156, 163, 170, 177, 181, 185, 193, 201, 210, 213, 218, 223, 230, 237, 243, 252, 260, 268, 274, 278, 287, 296, 303, 307, 310, 317, 323, 326, 332, 339, 347, 351, 358, 366, 368, 370, 372, 374, 376, 378, 383, 388, 396, 399, 408, 411, 415, 423, 430, 439, 452, 455, 458, 461, 464, 467, 470, 476, 479, 482, 488, 492, 495, 499, 504, 509, 515, 520, 524, 529, 537, 545, 551, 560, 571, 583, 590, 599, 603, 610, 618, 621, 624, 628, 632, 639, 646, 654, 660, 669, 680, 695, 707, 723, 731, 740, 745, 750, 754, 762, 767, 771, 774, 778, 780, 785, 787, 792, 798, 804, 810, 816, 824, 831, 836, 840, 845, 849, 854, 862, 868, 875, 888, 897, 911, 926, 937, 945, 949, 960, 971, 974} +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, 129, 141, 143, 146, 156, 163, 170, 177, 181, 185, 193, 201, 210, 213, 218, 223, 230, 237, 243, 252, 260, 268, 274, 278, 287, 296, 303, 307, 310, 317, 323, 326, 332, 339, 347, 351, 358, 366, 368, 370, 372, 374, 376, 378, 383, 388, 396, 399, 408, 411, 415, 423, 430, 439, 452, 455, 458, 461, 464, 467, 470, 476, 479, 482, 488, 492, 495, 499, 504, 509, 515, 520, 524, 529, 537, 545, 551, 560, 571, 583, 590, 599, 603, 610, 618, 621, 624, 628, 632, 639, 646, 654, 660, 669, 680, 695, 707, 723, 731, 740, 745, 750, 754, 762, 767, 771, 774, 778, 780, 785, 787, 792, 798, 804, 810, 816, 823, 828, 832, 837, 841, 846, 854, 860, 867, 880, 889, 903, 918, 929, 937, 941, 952, 963, 966} func (i Op) String() string { if i >= Op(len(_Op_index)-1) { diff --git a/src/cmd/compile/internal/typecheck/typecheck.go b/src/cmd/compile/internal/typecheck/typecheck.go index 2bc7f19af6..16e6db6a25 100644 --- a/src/cmd/compile/internal/typecheck/typecheck.go +++ b/src/cmd/compile/internal/typecheck/typecheck.go @@ -673,9 +673,6 @@ func typecheckargs(n ir.InitNode) { // rewriting f()(...) to t0 := f(); t0(...). func RewriteNonNameCall(n *ir.CallExpr) { np := &n.X - if inst, ok := (*np).(*ir.InstExpr); ok && inst.Op() == ir.OFUNCINST { - np = &inst.X - } if dot, ok := (*np).(*ir.SelectorExpr); ok && (dot.Op() == ir.ODOTMETH || dot.Op() == ir.ODOTINTER || dot.Op() == ir.OMETHVALUE) { np = &dot.X // peel away method selector }