From: Keith Randall Date: Sun, 7 Feb 2016 06:35:34 +0000 (-0800) Subject: [dev.ssa] cmd/compile: panic doesn't return X-Git-Tag: go1.7beta1~1623^2^2~55 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=faf1bdb42b81f75b49307667e170754621b6653f;p=gostls13.git [dev.ssa] cmd/compile: panic doesn't return Panic doesn't return, so record that we immediately exit after a panic call. This will help code analysis. Change-Id: I4d1f67494f97b6aee130c43ff4e44307b2b0f149 Reviewed-on: https://go-review.googlesource.com/19303 Run-TryBot: Keith Randall Reviewed-by: David Chase --- diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index 71d5920824..b7019d68b7 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -544,6 +544,15 @@ func (s *state) stmt(n *Node) { // Expression statements case OCALLFUNC, OCALLMETH, OCALLINTER: s.call(n, callNormal) + if n.Op == OCALLFUNC && n.Left.Op == ONAME && n.Left.Class == PFUNC && n.Left.Sym.Pkg == Runtimepkg && n.Left.Sym.Name == "gopanic" { + m := s.mem() + b := s.endBlock() + b.Kind = ssa.BlockExit + b.Control = m + // TODO: never rewrite OPANIC to OCALLFUNC in the + // first place. Need to wait until all backends + // go through SSA. + } case ODEFER: s.call(n.Left, callDefer) case OPROC: