]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: remove ir.OGETCALLERPC
authorMichael Pratt <mpratt@google.com>
Mon, 16 Sep 2024 17:17:39 +0000 (13:17 -0400)
committerGopher Robot <gobot@golang.org>
Mon, 16 Sep 2024 19:10:50 +0000 (19:10 +0000)
Nothing ever creates this op, so it can be safely removed. Note that SSA
still intrinsifies runtime.getcallerpc.

The similar ir.OGETCALLERSP is still used for defer handling in
typecheck/func.go:tcRecover.

For #54766.

Change-Id: I6bdb2072af2c068080ae977c0cbd4684d0c7c752
Reviewed-on: https://go-review.googlesource.com/c/go/+/613496
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>

src/cmd/compile/internal/escape/expr.go
src/cmd/compile/internal/ir/expr.go
src/cmd/compile/internal/ir/node.go
src/cmd/compile/internal/ir/op_string.go
src/cmd/compile/internal/ssagen/ssa.go
src/cmd/compile/internal/typecheck/typecheck.go
src/cmd/compile/internal/walk/expr.go
src/cmd/compile/internal/walk/walk.go

index 3c47bdf9e16af3b6c6f215606560373b3960f6ff..f479a2913a3f8090b8d37d921e3ef06998304b2a 100644 (file)
@@ -38,7 +38,7 @@ func (e *escape) exprSkipInit(k hole, n ir.Node) {
        default:
                base.Fatalf("unexpected expr: %s %v", n.Op().String(), n)
 
-       case ir.OLITERAL, ir.ONIL, ir.OGETG, ir.OGETCALLERPC, ir.OGETCALLERSP, ir.OTYPE, ir.OMETHEXPR, ir.OLINKSYMOFFSET:
+       case ir.OLITERAL, ir.ONIL, ir.OGETG, ir.OGETCALLERSP, ir.OTYPE, ir.OMETHEXPR, ir.OLINKSYMOFFSET:
                // nop
 
        case ir.ONAME:
index 345828c1638a8979badbe22f7237658d6cc52411..4a2e996569450dbf81e3d629753ae14032ff6cb6 100644 (file)
@@ -211,7 +211,7 @@ func (n *CallExpr) SetOp(op Op) {
        case OAPPEND,
                OCALL, OCALLFUNC, OCALLINTER, OCALLMETH,
                ODELETE,
-               OGETG, OGETCALLERPC, OGETCALLERSP,
+               OGETG, OGETCALLERSP,
                OMAKE, OMAX, OMIN, OPRINT, OPRINTLN,
                ORECOVER, ORECOVERFP:
                n.op = op
index 4f5ad53d632f5b4b5de89cdd224a60c7c6987410..1daa181610186aee30aeb92d7104b639cd9436cb 100644 (file)
@@ -303,7 +303,6 @@ const (
        // arch-specific opcodes
        OTAILCALL    // tail call to another function
        OGETG        // runtime.getg() (read g pointer)
-       OGETCALLERPC // runtime.getcallerpc() (continuation PC in caller frame)
        OGETCALLERSP // runtime.getcallersp() (stack pointer in caller frame)
 
        OEND
index d8b5c177b54e341db903f06ef5cf86cb1bb44a47..a1806d1349d6155664ab591d25ba5b2e8103350d 100644 (file)
@@ -157,14 +157,13 @@ func _() {
        _ = x[ODYNAMICTYPE-146]
        _ = x[OTAILCALL-147]
        _ = x[OGETG-148]
-       _ = x[OGETCALLERPC-149]
-       _ = x[OGETCALLERSP-150]
-       _ = x[OEND-151]
+       _ = x[OGETCALLERSP-149]
+       _ = x[OEND-150]
 }
 
-const _Op_name = "XXXNAMENONAMETYPELITERALNILADDSUBORXORADDSTRADDRANDANDAPPENDBYTES2STRBYTES2STRTMPRUNES2STRSTR2BYTESSTR2BYTESTMPSTR2RUNESSLICE2ARRSLICE2ARRPTRASAS2AS2DOTTYPEAS2FUNCAS2MAPRAS2RECVASOPCALLCALLFUNCCALLMETHCALLINTERCAPCLEARCLOSECLOSURECOMPLITMAPLITSTRUCTLITARRAYLITSLICELITPTRLITCONVCONVIFACECONVNOPCOPYDCLDCLFUNCDELETEDOTDOTPTRDOTMETHDOTINTERXDOTDOTTYPEDOTTYPE2EQNELTLEGEGTDEREFINDEXINDEXMAPKEYSTRUCTKEYLENMAKEMAKECHANMAKEMAPMAKESLICEMAKESLICECOPYMULDIVMODLSHRSHANDANDNOTNEWNOTBITNOTPLUSNEGORORPANICPRINTPRINTLNPARENSENDSLICESLICEARRSLICESTRSLICE3SLICE3ARRSLICEHEADERSTRINGHEADERRECOVERRECOVERFPRECVRUNESTRSELRECV2MINMAXREALIMAGCOMPLEXUNSAFEADDUNSAFESLICEUNSAFESLICEDATAUNSAFESTRINGUNSAFESTRINGDATAMETHEXPRMETHVALUEBLOCKBREAKCASECONTINUEDEFERFALLFORGOTOIFLABELGORANGERETURNSELECTSWITCHTYPESWINLCALLMAKEFACEITABIDATASPTRCFUNCCHECKNILRESULTINLMARKLINKSYMOFFSETJUMPTABLEINTERFACESWITCHDYNAMICDOTTYPEDYNAMICDOTTYPE2DYNAMICTYPETAILCALLGETGGETCALLERPCGETCALLERSPEND"
+const _Op_name = "XXXNAMENONAMETYPELITERALNILADDSUBORXORADDSTRADDRANDANDAPPENDBYTES2STRBYTES2STRTMPRUNES2STRSTR2BYTESSTR2BYTESTMPSTR2RUNESSLICE2ARRSLICE2ARRPTRASAS2AS2DOTTYPEAS2FUNCAS2MAPRAS2RECVASOPCALLCALLFUNCCALLMETHCALLINTERCAPCLEARCLOSECLOSURECOMPLITMAPLITSTRUCTLITARRAYLITSLICELITPTRLITCONVCONVIFACECONVNOPCOPYDCLDCLFUNCDELETEDOTDOTPTRDOTMETHDOTINTERXDOTDOTTYPEDOTTYPE2EQNELTLEGEGTDEREFINDEXINDEXMAPKEYSTRUCTKEYLENMAKEMAKECHANMAKEMAPMAKESLICEMAKESLICECOPYMULDIVMODLSHRSHANDANDNOTNEWNOTBITNOTPLUSNEGORORPANICPRINTPRINTLNPARENSENDSLICESLICEARRSLICESTRSLICE3SLICE3ARRSLICEHEADERSTRINGHEADERRECOVERRECOVERFPRECVRUNESTRSELRECV2MINMAXREALIMAGCOMPLEXUNSAFEADDUNSAFESLICEUNSAFESLICEDATAUNSAFESTRINGUNSAFESTRINGDATAMETHEXPRMETHVALUEBLOCKBREAKCASECONTINUEDEFERFALLFORGOTOIFLABELGORANGERETURNSELECTSWITCHTYPESWINLCALLMAKEFACEITABIDATASPTRCFUNCCHECKNILRESULTINLMARKLINKSYMOFFSETJUMPTABLEINTERFACESWITCHDYNAMICDOTTYPEDYNAMICDOTTYPE2DYNAMICTYPETAILCALLGETGGETCALLERSPEND"
 
-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, 294, 298, 301, 308, 314, 317, 323, 330, 338, 342, 349, 357, 359, 361, 363, 365, 367, 369, 374, 379, 387, 390, 399, 402, 406, 414, 421, 430, 443, 446, 449, 452, 455, 458, 461, 467, 470, 473, 479, 483, 486, 490, 495, 500, 507, 512, 516, 521, 529, 537, 543, 552, 563, 575, 582, 591, 595, 602, 610, 613, 616, 620, 624, 631, 640, 651, 666, 678, 694, 702, 711, 716, 721, 725, 733, 738, 742, 745, 749, 751, 756, 758, 763, 769, 775, 781, 787, 794, 802, 806, 811, 815, 820, 828, 834, 841, 854, 863, 878, 892, 907, 918, 926, 930, 941, 952, 955}
+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, 294, 298, 301, 308, 314, 317, 323, 330, 338, 342, 349, 357, 359, 361, 363, 365, 367, 369, 374, 379, 387, 390, 399, 402, 406, 414, 421, 430, 443, 446, 449, 452, 455, 458, 461, 467, 470, 473, 479, 483, 486, 490, 495, 500, 507, 512, 516, 521, 529, 537, 543, 552, 563, 575, 582, 591, 595, 602, 610, 613, 616, 620, 624, 631, 640, 651, 666, 678, 694, 702, 711, 716, 721, 725, 733, 738, 742, 745, 749, 751, 756, 758, 763, 769, 775, 781, 787, 794, 802, 806, 811, 815, 820, 828, 834, 841, 854, 863, 878, 892, 907, 918, 926, 930, 941, 944}
 
 func (i Op) String() string {
        if i >= Op(len(_Op_index)-1) {
index 9a566732d270427138f646ec39801ffc0dfa263a..89a8ce00735896e0fcdc687ff27be879b283d6c9 100644 (file)
@@ -3459,10 +3459,6 @@ func (s *state) exprCheckPtr(n ir.Node, checkPtrOK bool) *ssa.Value {
                n := n.(*ir.CallExpr)
                return s.newValue1(ssa.OpGetG, n.Type(), s.mem())
 
-       case ir.OGETCALLERPC:
-               n := n.(*ir.CallExpr)
-               return s.newValue0(ssa.OpGetCallerPC, n.Type())
-
        case ir.OGETCALLERSP:
                n := n.(*ir.CallExpr)
                return s.newValue1(ssa.OpGetCallerSP, n.Type(), s.mem())
index 0ebc13cac3cbdc3102a0b7b3d29854b4aa5d9d8e..c97220e6c23291301dd8105144d69fc6b849f134 100644 (file)
@@ -490,7 +490,7 @@ func typecheck1(n ir.Node, top int) ir.Node {
                n.SetType(types.Types[types.TUINTPTR])
                return n
 
-       case ir.OGETCALLERPC, ir.OGETCALLERSP:
+       case ir.OGETCALLERSP:
                n := n.(*ir.CallExpr)
                if len(n.Args) != 0 {
                        base.FatalfAt(n.Pos(), "unexpected arguments: %v", n)
index 8c36e03aa07a81f01e46115c50e1b4705f7d9ec0..ec35ba735c83eab2b5e307e1bdd5b9ad92f53e71 100644 (file)
@@ -87,7 +87,7 @@ func walkExpr1(n ir.Node, init *ir.Nodes) ir.Node {
                base.Fatalf("walkExpr: switch 1 unknown op %+v", n.Op())
                panic("unreachable")
 
-       case ir.OGETG, ir.OGETCALLERPC, ir.OGETCALLERSP:
+       case ir.OGETG, ir.OGETCALLERSP:
                return n
 
        case ir.OTYPE, ir.ONAME, ir.OLITERAL, ir.ONIL, ir.OLINKSYMOFFSET:
index d7bab160adb4c234d268fd47fc6929f4bba8cf77..9d84f316945b8c911c3a24cf98e61f04932a05a0 100644 (file)
@@ -342,7 +342,7 @@ func mayCall(n ir.Node) bool {
                        ir.OCAP, ir.OIMAG, ir.OLEN, ir.OREAL,
                        ir.OCONVNOP, ir.ODOT,
                        ir.OCFUNC, ir.OIDATA, ir.OITAB, ir.OSPTR,
-                       ir.OBYTES2STRTMP, ir.OGETG, ir.OGETCALLERPC, ir.OGETCALLERSP, ir.OSLICEHEADER, ir.OSTRINGHEADER:
+                       ir.OBYTES2STRTMP, ir.OGETG, ir.OGETCALLERSP, ir.OSLICEHEADER, ir.OSTRINGHEADER:
                        // ok: operations that don't require function calls.
                        // Expand as needed.
                }