]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.simd] cmd/compile: minor tweak for race detector
authorDavid Chase <drchase@google.com>
Wed, 2 Jul 2025 22:00:12 +0000 (18:00 -0400)
committerDavid Chase <drchase@google.com>
Tue, 8 Jul 2025 14:06:02 +0000 (07:06 -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.

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>
src/cmd/compile/internal/walk/walk.go

index 2fa51f1280936252afa7427b7a021ed981254c0d..8b4381980d58eb7c98f629fadd01b3da8b93693b 100644 (file)
@@ -311,6 +311,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