]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: minor tweak for race detector
authorDavid Chase <drchase@google.com>
Wed, 2 Jul 2025 22:00:12 +0000 (18:00 -0400)
committerCherry Mui <cherryyz@google.com>
Fri, 3 Oct 2025 19:30:00 +0000 (12:30 -0700)
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

src/cmd/compile/internal/walk/walk.go

index a7d8182a747ce7c5a7607ee24c8d92bdd90bebe5..25add3d8043905729f6ce2a35045475bd27deb2b 100644 (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