From: Russ Cox Date: Mon, 30 Oct 2017 23:53:58 +0000 (-0400) Subject: cmd/compile: change ssa test to avoid go run -gcflags=-d=ssa/check/on X-Git-Tag: go1.10beta1~519 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4b5018ce57095e3074c5cb88f9f15092e729ded1;p=gostls13.git cmd/compile: change ssa test to avoid go run -gcflags=-d=ssa/check/on In the new content-based staleness world, setting -gcflags like this recompiles all the packages involved in running the program, not just the "stale" ones. So go run -gcflags=-d=ssa/check/on recompiles runtime with those flags too, which is not what the test is trying to check. Change-Id: I4dbd5bf2970c3a622c01de84bd8aa9d5e9ec5239 Reviewed-on: https://go-review.googlesource.com/74570 Run-TryBot: Russ Cox TryBot-Result: Gobot Gobot Reviewed-by: David Crawshaw --- diff --git a/src/cmd/compile/internal/gc/ssa_test.go b/src/cmd/compile/internal/gc/ssa_test.go index cbeb8ad0ce..3b1a4545a0 100644 --- a/src/cmd/compile/internal/gc/ssa_test.go +++ b/src/cmd/compile/internal/gc/ssa_test.go @@ -69,11 +69,31 @@ func runGenTest(t *testing.T, filename, tmpname string, ev ...string) { stdout.Reset() stderr.Reset() - cmd = exec.Command("go", "run", "-gcflags", "-d=ssa/check/on", rungo) + // Execute compile+link+run instead of "go run" to avoid applying -gcflags=-d=ssa/check/on + // to the runtime (especially over and over and over). + // compile + cmd = exec.Command("go", "tool", "compile", "-d=ssa/check/on", "-o", filepath.Join(tmpdir, "run.a"), rungo) cmd.Stdout = &stdout cmd.Stderr = &stderr cmd.Env = append(cmd.Env, ev...) - if err := cmd.Run(); err != nil { + err := cmd.Run() + if err == nil { + // link + cmd = exec.Command("go", "tool", "link", "-o", filepath.Join(tmpdir, "run.exe"), filepath.Join(tmpdir, "run.a")) + cmd.Stdout = &stdout + cmd.Stderr = &stderr + cmd.Env = append(cmd.Env, ev...) + err = cmd.Run() + } + if err == nil { + // run + cmd = exec.Command(filepath.Join(tmpdir, "run.exe")) + cmd.Stdout = &stdout + cmd.Stderr = &stderr + cmd.Env = append(cmd.Env, ev...) + err = cmd.Run() + } + if err != nil { t.Fatalf("Failed: %v:\nOut: %s\nStderr: %s\n", err, &stdout, &stderr) } if s := stderr.String(); s != "" { @@ -82,7 +102,6 @@ func runGenTest(t *testing.T, filename, tmpname string, ev ...string) { if s := stdout.String(); s != "" { t.Errorf("Stdout = %s\nWant empty", s) } - } func TestGenFlowGraph(t *testing.T) {