golang/go

cmd/compile: internal compiler error: Invalid PPC64 rotate mask

ALTree opened this issue · 5 comments

$ go version
go version go1.16.3 linux/amd64
$ gotip version
go version devel go1.17-31e12b953a Thu Apr 15 14:58:38 2021 +0000 linux/amd64
package p

func f() {
	var a, b byte

	switch a {
	case 2:
	case a:
		a, b = 1, a&1
	}
	if b > 0 {
		b = 2
	}

	println(a >> b &^ b)
}
$ GOARCH=ppc64 go tool compile crash.go

crash.go:16:1: internal compiler error: 'f': panic during lower while compiling f:

Invalid PPC64 rotate mask

goroutine 1 [running]:
cmd/compile/internal/ssa.Compile.func1(0xc00045c550, 0xc000152420)
	/usr/local/go/src/cmd/compile/internal/ssa/compile.go:48 +0xa5
panic(0xc252e0, 0xdb4950)
	/usr/local/go/src/runtime/panic.go:965 +0x1b9
cmd/compile/internal/ssa.encodePPC64RotateMask(0x20, 0xffffffff, 0x20, 0xc0004003f0)
	/usr/local/go/src/cmd/compile/internal/ssa/rewrite.go:1402 +0x165
cmd/compile/internal/ssa.mergePPC64AndSrwi(0xffffffffffffffff, 0x0, 0xc000459250)
	/usr/local/go/src/cmd/compile/internal/ssa/rewrite.go:1472 +0x8f
cmd/compile/internal/ssa.rewriteValuePPC64_OpPPC64AND(0xc000400850, 0xffffffffffffff01)
	/usr/local/go/src/cmd/compile/internal/ssa/rewritePPC64.go:4319 +0x36f
cmd/compile/internal/ssa.rewriteValuePPC64(0xc000400850, 0x0)
	/usr/local/go/src/cmd/compile/internal/ssa/rewritePPC64.go:442 +0x4b9
cmd/compile/internal/ssa.applyRewrite(0xc000152420, 0xcc9508, 0xcc9588, 0x6c142f4bd301)
	/usr/local/go/src/cmd/compile/internal/ssa/rewrite.go:129 +0x50d
cmd/compile/internal/ssa.lower(0xc000152420)
	/usr/local/go/src/cmd/compile/internal/ssa/lower.go:10 +0x4b
cmd/compile/internal/ssa.Compile(0xc000152420)
	/usr/local/go/src/cmd/compile/internal/ssa/compile.go:96 +0x98d
cmd/compile/internal/gc.buildssa(0xc0001522c0, 0x0, 0x0)
	/usr/local/go/src/cmd/compile/internal/gc/ssa.go:470 +0x11ba
cmd/compile/internal/gc.compileSSA(0xc0001522c0, 0x0)
	/usr/local/go/src/cmd/compile/internal/gc/pgen.go:319 +0x5d
cmd/compile/internal/gc.compile(0xc0001522c0)
	/usr/local/go/src/cmd/compile/internal/gc/pgen.go:277 +0x39e
cmd/compile/internal/gc.funccompile(0xc0001522c0)
	/usr/local/go/src/cmd/compile/internal/gc/pgen.go:220 +0xc5
cmd/compile/internal/gc.Main(0xcc92b8)
	/usr/local/go/src/cmd/compile/internal/gc/main.go:762 +0x3525
main.main()
	/usr/local/go/src/cmd/compile/main.go:52 +0xb1

cc @laboger @pmur

Change https://golang.org/cl/310569 mentions this issue: cmd/compile: fix ANDI/SRWI merge on ppc64

pmur commented

@gopherbot backport to 1.16 please

Backport issue(s) opened: #45636 (for 1.16).

Remember to create the cherry-pick CL(s) as soon as the patch is submitted to master, according to https://golang.org/wiki/MinorReleases.

Change https://golang.org/cl/311378 mentions this issue: [release-branch.go1.16] cmd/compile: fix ANDI/SRWI merge on ppc64

@ALTree Does this also impact 1.15? If so, we can open a backport for 1.15 as well.