From: David Chase Date: Thu, 15 Sep 2016 20:51:35 +0000 (-0400) Subject: cmd/compile: adapt GOSSAHASH to set a DebugTest flag in ssa.Config X-Git-Tag: go1.8beta1~1292 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=897c0ebf61daaaf9c02be577f1afcb2c67ff3ed5;p=gostls13.git 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 --- 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