From: Keith Randall Date: Thu, 17 Sep 2015 22:19:23 +0000 (-0700) Subject: [dev.ssa] cmd/compile: Generate AUNDEF at the end of BlockExit blocks X-Git-Tag: go1.7beta1~1623^2^2~158 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5f10573e6005f1ad34710335af94c1ba6d1a6157;p=gostls13.git [dev.ssa] cmd/compile: Generate AUNDEF at the end of BlockExit blocks Generate AUNDEF for every exit block, not just for certain control values. Change-Id: Ife500ac5159ee790bc1e70c0e9b0b1f854bc4c47 Reviewed-on: https://go-review.googlesource.com/14721 Reviewed-by: Josh Bleecher Snyder --- diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index c2d2f8be4d..c053eabcba 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -3536,19 +3536,16 @@ func (s *genState) genValue(v *ssa.Value) { q.From.Reg = x86.REG_AX q.To.Type = obj.TYPE_MEM q.To.Reg = r - Prog(obj.AUNDEF) // tell plive.go that we never reach here case ssa.OpAMD64LoweredPanicIndexCheck: p := Prog(obj.ACALL) p.To.Type = obj.TYPE_MEM p.To.Name = obj.NAME_EXTERN p.To.Sym = Linksym(Panicindex.Sym) - Prog(obj.AUNDEF) case ssa.OpAMD64LoweredPanicSliceCheck: p := Prog(obj.ACALL) p.To.Type = obj.TYPE_MEM p.To.Name = obj.NAME_EXTERN p.To.Sym = Linksym(panicslice.Sym) - Prog(obj.AUNDEF) case ssa.OpAMD64LoweredGetG: r := regnum(v) // See the comments in cmd/internal/obj/x86/obj6.go @@ -3804,6 +3801,7 @@ func (s *genState) genBlock(b, next *ssa.Block) { s.branches = append(s.branches, branch{p, b.Succs[0]}) } case ssa.BlockExit: + Prog(obj.AUNDEF) // tell plive.go that we never reach here case ssa.BlockRet: if hasdefer { s.deferReturn()