cmd/compile: small program does not pass ssachecks on arm (internal compiler error: bad AuxInt value)
ALTree opened this issue · 1 comments
ALTree commented
$ gotip version
go version devel +578e066862 Wed Jun 20 16:04:33 2018 +0000 linux/amd64
The following program:
package p
func f() {
var x int
var B0 bool
B0 = !B0 || B0
if B0 && B0 {
x = -1
}
var AI []int
var AB []bool
_ = AI[x] > 0 && AB[x]
}
does not pass the ssa checks when compiled for GOARCH=arm
, triggers an internal compiler error:
$ GOARCH=arm gotip tool compile -d=ssa/check/on crash.go
crash.go:12:8: internal compiler error: bad int32 AuxInt value for v23
goroutine 1 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)
/home/alberto/go/src/runtime/debug/stack.go:24 +0xa7
cmd/compile/internal/gc.Fatalf(0xcbb48c, 0x1d, 0xc000046cc0, 0x1, 0x1)
/home/alberto/go/src/cmd/compile/internal/gc/subr.go:182 +0x1f7
cmd/compile/internal/gc.(*ssafn).Fatalf(0xc00000f9e0, 0xc08000000002, 0xcbb48c, 0x1d, 0xc000046cc0, 0x1, 0x1)
/home/alberto/go/src/cmd/compile/internal/gc/ssa.go:5540 +0x67
cmd/compile/internal/ssa.(*Func).Fatalf(0xc0003442c0, 0xcbb48c, 0x1d, 0xc000046cc0, 0x1, 0x1)
/home/alberto/go/src/cmd/compile/internal/ssa/func.go:562 +0x73
cmd/compile/internal/ssa.checkFunc(0xc0003442c0)
/home/alberto/go/src/cmd/compile/internal/ssa/check.go:140 +0x1931
cmd/compile/internal/ssa.Compile(0xc0003442c0)
/home/alberto/go/src/cmd/compile/internal/ssa/compile.go:110 +0x3c6
cmd/compile/internal/gc.buildssa(0xc000344000, 0x0, 0x0)
/home/alberto/go/src/cmd/compile/internal/gc/ssa.go:210 +0xaa7
cmd/compile/internal/gc.compileSSA(0xc000344000, 0x0)
/home/alberto/go/src/cmd/compile/internal/gc/pgen.go:259 +0x39
cmd/compile/internal/gc.compile(0xc000344000)
/home/alberto/go/src/cmd/compile/internal/gc/pgen.go:238 +0x1a0
cmd/compile/internal/gc.funccompile(0xc000344000)
/home/alberto/go/src/cmd/compile/internal/gc/pgen.go:209 +0xbd
cmd/compile/internal/gc.Main(0xccc458)
/home/alberto/go/src/cmd/compile/internal/gc/main.go:637 +0x261d
main.main()
/home/alberto/go/src/cmd/compile/main.go:51 +0x96
This also happens in go1.10, so it's not a recent regression.
gopherbot commented
Change https://golang.org/cl/120335 mentions this issue: cmd/compile: convert uint32 to int32 in ARM constant folding rules