aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2015-06-12 16:24:33 -0700
committerKeith Randall <khr@golang.org>2015-06-14 03:56:47 +0000
commit0ad9c8c720324b6c4e483ac7fe0e20f36274e2eb (patch)
tree5e6f7658db3704cd624afc422a457e05219e893e /src/cmd
parentd5ad9ced1c82d4a1cb63d92f33552a064d7e8162 (diff)
downloadgo-0ad9c8c720324b6c4e483ac7fe0e20f36274e2eb.tar.xz
[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 <daniel.morsing@gmail.com>
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/compile/internal/gc/ssa.go8
1 files changed, 6 insertions, 2 deletions
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: