From 7e4c06dad065d1440fe8fcfa8e97702c88e1374e Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Sun, 12 Jul 2015 11:52:09 -0700 Subject: [PATCH] [dev.ssa] cmd/compile/internal/gc: handle _ label correctly An empty label statement can just be ignored, as it cannot be the target of any gotos. Tests are already in test/fixedbugs/issue7538*.go Fixes #11589 Fixes #11593 Change-Id: Iadcd639e7200ce16aa40fd7fa3eaf82522513e82 Reviewed-on: https://go-review.googlesource.com/12093 Reviewed-by: Daniel Morsing Reviewed-by: Brad Fitzpatrick --- src/cmd/compile/internal/gc/ssa.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index 2eb0402f69..d47680bf8a 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -316,6 +316,11 @@ func (s *state) stmt(n *Node) { s.assign(OAS, n.Left.Name.Heapaddr, palloc) case OLABEL, OGOTO: + if n.Op == OLABEL && isblanksym(n.Left.Sym) { + // Empty identifier is valid but useless. + // See issues 11589, 11593. + return + } // get block at label, or make one t := s.labels[n.Left.Sym.Name] if t == nil {