]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: always use StackMapDontCare as register map index when reg map is not...
authorCherry Zhang <cherryyz@google.com>
Wed, 27 May 2020 15:37:00 +0000 (11:37 -0400)
committerCherry Zhang <cherryyz@google.com>
Thu, 28 May 2020 14:43:19 +0000 (14:43 +0000)
When go115ReduceLiveness is true (so we don't emit actual
register maps), use StackMapDontCare consistently for the
register map index, so RegMapValid is always false.

This fixes a compiler crash when doing -live=2 debug print.

Fixes #39251.

Change-Id: Ice087af491fa69c413f8ee59f923b72d592c0643
Reviewed-on: https://go-review.googlesource.com/c/go/+/235418
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
src/cmd/compile/internal/gc/plive.go

index a4c051bda6defa66f74734c35ab9fa371a3d0d87..e2de6286a03ff7378dd44363c52607c0b211d727 100644 (file)
@@ -1249,7 +1249,7 @@ func (lv *Liveness) compact(b *ssa.Block) {
                if go115ReduceLiveness {
                        hasStackMap := lv.hasStackMap(v)
                        isUnsafePoint := lv.allUnsafe || lv.unsafePoints.Get(int32(v.ID))
-                       idx := LivenessIndex{StackMapDontCare, 0, isUnsafePoint}
+                       idx := LivenessIndex{StackMapDontCare, StackMapDontCare, isUnsafePoint}
                        if hasStackMap {
                                idx.stackMapIndex = lv.stackMapSet.add(lv.livevars[pos].vars)
                                pos++