From: Keith Randall Date: Fri, 12 Jun 2015 23:24:33 +0000 (-0700) Subject: [dev.ssa] cmd/compile/internal/gc: Small fixes X-Git-Tag: go1.7beta1~1623^2^2~443 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0ad9c8c720324b6c4e483ac7fe0e20f36274e2eb;p=gostls13.git [dev.ssa] cmd/compile/internal/gc: Small fixes Allow labels to be unreachable via fallthrough from above. Implement OCONVNOP. Change-Id: I6869993cad8a27ad134dd637de89a40117daf47b Reviewed-on: https://go-review.googlesource.com/11001 Reviewed-by: Daniel Morsing --- diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index 131e97ff48..ebb7f44a18 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -217,8 +217,9 @@ func (s *state) stmt(n *Node) { s.labels[n.Left.Sym.Name] = t } // go to that label (we pretend "label:" is preceded by "goto label") - b := s.endBlock() - addEdge(b, t) + if b := s.endBlock(); b != nil { + addEdge(b, t) + } if n.Op == OLABEL { // next we work on the label's target block @@ -358,6 +359,9 @@ func (s *state) expr(n *Node) *ssa.Value { log.Fatalf("unhandled OLITERAL %v", n.Val().Ctype()) return nil } + case OCONVNOP: + x := s.expr(n.Left) + return s.newValue1(ssa.OpConvNop, n.Type, nil, x) // binary ops case OLT: