mirror of
https://github.com/golang/go
synced 2024-11-18 11:55:01 -07:00
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 <drchase@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
b265d51789
commit
897c0ebf61
@ -65,6 +65,7 @@ func buildssa(fn *Node) *ssa.Func {
|
|||||||
s.f.Name = name
|
s.f.Name = name
|
||||||
s.exitCode = fn.Func.Exit
|
s.exitCode = fn.Func.Exit
|
||||||
s.panics = map[funcLine]*ssa.Block{}
|
s.panics = map[funcLine]*ssa.Block{}
|
||||||
|
s.config.DebugTest = s.config.DebugHashMatch("GOSSAHASH", name)
|
||||||
|
|
||||||
if name == os.Getenv("GOSSAFUNC") {
|
if name == os.Getenv("GOSSAFUNC") {
|
||||||
// TODO: tempfile? it is handy to have the location
|
// TODO: tempfile? it is handy to have the location
|
||||||
|
@ -33,6 +33,7 @@ type Config struct {
|
|||||||
nacl bool // GOOS=nacl
|
nacl bool // GOOS=nacl
|
||||||
use387 bool // GO386=387
|
use387 bool // GO386=387
|
||||||
NeedsFpScratch bool // No direct move between GP and FP register sets
|
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
|
sparsePhiCutoff uint64 // Sparse phi location algorithm used above this #blocks*#variables score
|
||||||
curFunc *Func
|
curFunc *Func
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user