mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00:00
cmd/compile: remove racefuncenterfp when it is not needed
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>
This commit is contained in:
parent
fdba080220
commit
0387bedadf
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user