]> Cypherpunks repositories - gostls13.git/commit
[dev.simd] cmd/compile: mark SIMD types non-fat
authorJunyang Shao <shaojunyang@google.com>
Sat, 12 Jul 2025 08:13:04 +0000 (08:13 +0000)
committerJunyang Shao <shaojunyang@google.com>
Mon, 14 Jul 2025 16:35:17 +0000 (09:35 -0700)
commit3f789721d6298b7f4406a0106670c4d4ad70a28d
treeb0efe22298735be14932a13b4e0ba750c915ad7b
parentb69622b83e38b58a461938163fdef03683a2a871
[dev.simd] cmd/compile: mark SIMD types non-fat

This CL fixes the merge locals error.
The culprit is that liveness analysis wrongly mark SIMD structs fat,
hence making `StoreReg` of SIMD vectors not a varkill effect, making the
liveness range of SIMD vectors not closed correctly, further making
mergelocals merged 2 concurrently-live SIMD vectors.

Is looks like mergelocals will treat the live range as one instruction
if it's not closed: [st, st+1). Should we make it [st, +inf) instead? So
that we won't have similar errors in the future.

Also, I feel we really need to examine every "case types.TSTRUCT" or "if
t.Kind() == types.TSTRUCT" in the codebase correctly for SIMD types...

Change-Id: I2f4f4f36a890bd317d582cfa73a8f6a789382d91
Reviewed-on: https://go-review.googlesource.com/c/go/+/687775
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
src/cmd/compile/internal/liveness/plive.go
src/cmd/compile/internal/ssa/func.go