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