mirror of
https://github.com/golang/go.git
synced 2026-02-02 17:05:05 +03:00
cmd/compile: minor tweak for race detector
This makes the front-end a little bit less temp-happy when instrumenting, which repairs the "is it a constant?" test in the simd intrinsic conversion which is otherwise broken by race detection. Also, this will perhaps be better code. Cherry-picked from the dev.simd branch. This CL is not necessarily SIMD specific. Apply early to reduce risk. Change-Id: I84b7a45b7bff62bb2c9f9662466b50858d288645 Reviewed-on: https://go-review.googlesource.com/c/go/+/685637 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Junyang Shao <shaojunyang@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-on: https://go-review.googlesource.com/c/go/+/708856
This commit is contained in:
@@ -275,6 +275,15 @@ func backingArrayPtrLen(n ir.Node) (ptr, length ir.Node) {
|
||||
// function calls, which could clobber function call arguments/results
|
||||
// currently on the stack.
|
||||
func mayCall(n ir.Node) bool {
|
||||
// This is intended to avoid putting constants
|
||||
// into temporaries with the race detector (or other
|
||||
// instrumentation) which interferes with simple
|
||||
// "this is a constant" tests in ssagen.
|
||||
// Also, it will generally lead to better code.
|
||||
if n.Op() == ir.OLITERAL {
|
||||
return false
|
||||
}
|
||||
|
||||
// When instrumenting, any expression might require function calls.
|
||||
if base.Flag.Cfg.Instrumenting {
|
||||
return true
|
||||
|
||||
Reference in New Issue
Block a user