1
0
mirror of https://github.com/golang/go synced 2024-11-24 04:50:07 -07:00

cmd/compile: don't crash on -d=ssa/

I forgot how to pull up the ssa debug options help, so instead of
writing -d=ssa/help, I just wrote -d=ssa/. Much to my amusement, the
compiler just crashed, as shown below. Fix that.

	panic: runtime error: index out of range

	goroutine 1 [running]:
	cmd/compile/internal/ssa.PhaseOption(0x7ffc375d2b70, 0x0, 0xdbff91, 0x5, 0x1, 0x0, 0x0, 0x1, 0x1)
	    /home/mvdan/tip/src/cmd/compile/internal/ssa/compile.go:327 +0x1876
	cmd/compile/internal/gc.Main(0xde7bd8)
	    /home/mvdan/tip/src/cmd/compile/internal/gc/main.go:411 +0x41d0
	main.main()
	    /home/mvdan/tip/src/cmd/compile/main.go:51 +0xab

Change-Id: Ia2ad394382ddf8f4498b16b5cfb49be0317fc1aa
Reviewed-on: https://go-review.googlesource.com/c/154421
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
Daniel Martí 2018-12-16 18:44:31 +01:00
parent 467456b0af
commit be9c534cde
2 changed files with 6 additions and 1 deletions

View File

@ -212,7 +212,8 @@ var BuildDump string // name of function to dump after initial build of ssa
// BOOT_GO_GCFLAGS=-d='ssa/~^.*scc$/off' GO_GCFLAGS='-d=ssa/~^.*scc$/off' ./make.bash
//
func PhaseOption(phase, flag string, val int, valString string) string {
if phase == "help" {
switch phase {
case "", "help":
lastcr := 0
phasenames := " check, all, build, intrinsics"
for _, p := range passes {

View File

@ -27,6 +27,10 @@ stderr 'compile.* -e.* -p z1'
go test -c -n -gcflags='all=-e' z1
stderr 'compile.* -e.* -p z3 '
# this particular -gcflags argument made the compiler crash
! go build -gcflags=-d=ssa/ z1
stderr 'PhaseOptions usage'
# -ldflags for implicit test package applies to test binary
go test -c -n -gcflags=-N -ldflags=-X=x.y=z z1
stderr 'compile.* -N .*z_test.go'