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:
David Chase 2025-07-02 18:00:12 -04:00 committed by Cherry Mui
parent ebb72bef44
commit ab043953cb

View file

@ -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