From 897c0ebf61daaaf9c02be577f1afcb2c67ff3ed5 Mon Sep 17 00:00:00 2001 From: David Chase Date: Thu, 15 Sep 2016 16:51:35 -0400 Subject: [PATCH] cmd/compile: adapt GOSSAHASH to set a DebugTest flag in ssa.Config Binary search remains our friend. Suppose you add an ought-to-be-benign pattern to PPC64.rules, and make.bash starts crashing. You can guard the pattern(s) with config.DebugTest: (Eq8 x y) && config.DebugTest && isSigned(x.Type) && isSigned(y.Type) -> (Equal (CMPW (SignExt8to32 x) (SignExt8to32 y))) and then gossahash -s ./make.bash ... (go drink beer while silicon minions toil) ... Trying ./make.bash args=[], env=[GOSSAHASH=100110010111110] ./make.bash failed (1 distinct triggers): exit status 1 Trigger string is 'GOSSAHASH triggered (*importReader).readByte', repeated 1 times Review GSHS_LAST_FAIL.0.log for failing run Finished with GOSSAHASH=100110010111110 Change-Id: I4eff46ebaf496baa2acedd32e217005cb3ac1c62 Reviewed-on: https://go-review.googlesource.com/29273 Run-TryBot: David Chase TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/cmd/compile/internal/gc/ssa.go | 1 + src/cmd/compile/internal/ssa/config.go | 1 + 2 files changed, 2 insertions(+) diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index 9b67fe99ad..6d727a5f6e 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -65,6 +65,7 @@ func buildssa(fn *Node) *ssa.Func { s.f.Name = name s.exitCode = fn.Func.Exit s.panics = map[funcLine]*ssa.Block{} + s.config.DebugTest = s.config.DebugHashMatch("GOSSAHASH", name) if name == os.Getenv("GOSSAFUNC") { // TODO: tempfile? it is handy to have the location diff --git a/src/cmd/compile/internal/ssa/config.go b/src/cmd/compile/internal/ssa/config.go index 6c891a55db..bd59bb36ab 100644 --- a/src/cmd/compile/internal/ssa/config.go +++ b/src/cmd/compile/internal/ssa/config.go @@ -33,6 +33,7 @@ type Config struct { nacl bool // GOOS=nacl use387 bool // GO386=387 NeedsFpScratch bool // No direct move between GP and FP register sets + DebugTest bool // as a debugging aid for binary search using GOSSAHASH, make buggy new code conditional on this sparsePhiCutoff uint64 // Sparse phi location algorithm used above this #blocks*#variables score curFunc *Func