]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: remove racefuncenterfp when it is not needed
authorCherry Zhang <cherryyz@google.com>
Sun, 1 Nov 2020 22:05:32 +0000 (17:05 -0500)
committerCherry Zhang <cherryyz@google.com>
Mon, 2 Nov 2020 03:03:16 +0000 (03:03 +0000)
We already remove racefuncenter and racefuncexit if they are not
needed (i.e. the function doesn't have any other race  calls).
racefuncenterfp is like racefuncenter but used on LR machines.
Remove unnecessary racefuncenterfp as well.

Change-Id: I65edb00e19c6d9ab55a204cbbb93e9fb710559f1
Reviewed-on: https://go-review.googlesource.com/c/go/+/267099
Trust: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
src/cmd/compile/internal/ssa/rewrite.go
test/codegen/race.go

index 974c5ac8c30f3fcdd1b5159d6e1f9cb8e36eeb9e..39aa63d94750b8dbe827b7216d0ebafed83f1037 100644 (file)
@@ -1573,18 +1573,18 @@ func needRaceCleanup(sym *AuxCall, v *Value) bool {
        if !f.Config.Race {
                return false
        }
-       if !isSameCall(sym, "runtime.racefuncenter") && !isSameCall(sym, "runtime.racefuncexit") {
+       if !isSameCall(sym, "runtime.racefuncenter") && !isSameCall(sym, "runtime.racefuncenterfp") && !isSameCall(sym, "runtime.racefuncexit") {
                return false
        }
        for _, b := range f.Blocks {
                for _, v := range b.Values {
                        switch v.Op {
                        case OpStaticCall:
-                               // Check for racefuncenter will encounter racefuncexit and vice versa.
+                               // Check for racefuncenter/racefuncenterfp will encounter racefuncexit and vice versa.
                                // Allow calls to panic*
                                s := v.Aux.(*AuxCall).Fn.String()
                                switch s {
-                               case "runtime.racefuncenter", "runtime.racefuncexit",
+                               case "runtime.racefuncenter", "runtime.racefuncenterfp", "runtime.racefuncexit",
                                        "runtime.panicdivide", "runtime.panicwrap",
                                        "runtime.panicshift":
                                        continue
index ed6706f8807d9bae10b8b748d495fe8f27ed0373..b9778239069248332d8bd12fd16995f85435d773 100644 (file)
@@ -10,6 +10,8 @@ package codegen
 // functions with no calls (but which might panic
 // in various ways). See issue 31219.
 // amd64:-"CALL.*racefuncenter.*"
+// arm64:-"CALL.*racefuncenter.*"
+// ppc64le:-"CALL.*racefuncenter.*"
 func RaceMightPanic(a []int, i, j, k, s int) {
        var b [4]int
        _ = b[i]     // panicIndex