This is a holdover from the days when we did not
have full SSA coverage and compiled things optimistically,
and catching the panic obscures useful information.
Change-Id: I196790cb6b97419d92b318a2dfa7f1e1097cefb7
Reviewed-on: https://go-review.googlesource.com/39534
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Keith Randall <khr@golang.org>
func applyRewrite(f *Func, rb blockRewriter, rv valueRewriter) {
// repeat rewrites until we find no more rewrites
- var curb *Block
- var curv *Value
- defer func() {
- if curb != nil {
- curb.Fatalf("panic during rewrite of block %s\n", curb.LongString())
- }
- if curv != nil {
- curv.Fatalf("panic during rewrite of value %s\n", curv.LongString())
- // TODO(khr): print source location also
- }
- }()
for {
change := false
for _, b := range f.Blocks {
b.SetControl(b.Control.Args[0])
}
}
- curb = b
if rb(b) {
change = true
}
- curb = nil
for _, v := range b.Values {
change = phielimValue(v) || change
}
// apply rewrite function
- curv = v
if rv(v) {
change = true
}
- curv = nil
}
}
if !change {