From a5c9681e31155c07ac546c8cb7cf5018ac4ef2b7 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Mon, 20 Mar 2017 13:03:44 -0700 Subject: [PATCH] cmd/toolstash: don't pass -N when compiling runtime The runtime cannot be compiled with optimizations disabled. This lead to very confusing error messages when toolstash -cmp failed. Change-Id: Ie341d633ff9b26693b475957309591ff0757f1ab Reviewed-on: https://go-review.googlesource.com/38378 Run-TryBot: Josh Bleecher Snyder TryBot-Result: Gobot Gobot Reviewed-by: Matthew Dempsky --- cmd/toolstash/main.go | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/cmd/toolstash/main.go b/cmd/toolstash/main.go index d447dd704b..e1bed36372 100644 --- a/cmd/toolstash/main.go +++ b/cmd/toolstash/main.go @@ -275,14 +275,26 @@ func compareTool() { log.Fatalf("unknown tool %s", tool) case tool == "compile" || strings.HasSuffix(tool, "g"): // compiler - cmdN := append([]string{cmd[0], "-N"}, cmd[1:]...) + useDashN := true + for _, s := range cmd { + if s == "-+" { + // Compiling runtime. Don't use -N. + useDashN = false + break + } + } + cmdN := injectflags(cmd, nil, useDashN) _, ok := cmpRun(false, cmdN) if !ok { - log.Printf("compiler output differs, even with optimizers disabled (-N)") - cmd = append([]string{cmd[0], "-v", "-N", "-m=2"}, cmd[1:]...) + if useDashN { + log.Printf("compiler output differs, with optimizers disabled (-N)") + } else { + log.Printf("compiler output differs") + } + cmd = injectflags(cmd, []string{"-v", "-m=2"}, useDashN) break } - cmd = append([]string{cmd[0], "-v", "-m=2"}, cmd[1:]...) + cmd = injectflags(cmd, []string{"-v", "-m=2"}, false) log.Printf("compiler output differs, only with optimizers enabled") case tool == "asm" || strings.HasSuffix(tool, "a"): // assembler @@ -293,13 +305,23 @@ func compareTool() { extra = "-v=2" } - cmdS := append([]string{cmd[0], extra}, cmd[1:]...) + cmdS := injectflags(cmd, []string{extra}, false) outfile, _ = cmpRun(true, cmdS) fmt.Fprintf(os.Stderr, "\n%s\n", compareLogs(outfile)) os.Exit(2) } +func injectflags(cmd []string, extra []string, addDashN bool) []string { + x := []string{cmd[0]} + if addDashN { + x = append(x, "-N") + } + x = append(x, extra...) + x = append(x, cmd[1:]...) + return x +} + func cmpRun(keepLog bool, cmd []string) (outfile string, match bool) { cmdStash := make([]string, len(cmd)) copy(cmdStash, cmd)