diff --git a/src/cmd/internal/gc/dcl.go b/src/cmd/internal/gc/dcl.go index 58b69ab8f9..85a33bec3f 100644 --- a/src/cmd/internal/gc/dcl.go +++ b/src/cmd/internal/gc/dcl.go @@ -65,9 +65,6 @@ func popdcl() { } s = Pkglookup(d.Name, d.Pkg) lno = int(s.Lastlineno) - if s.Def != nil { - d.whyPushed = s.Def.Op - } dcopy(s, d) d.Lastlineno = int32(lno) if dflag() { diff --git a/src/cmd/internal/gc/gen.go b/src/cmd/internal/gc/gen.go index bba04d41ad..cd0e650ca9 100644 --- a/src/cmd/internal/gc/gen.go +++ b/src/cmd/internal/gc/gen.go @@ -159,21 +159,6 @@ func checkgoto(from *Node, to *Node) { fs = fs.Link } if fs != to.Sym { - // more declarations at label than at goto. - // figure out if they are all types. - ts := to.Sym - ntt := nt - for ; ntt > nf; ntt-- { - if ts.whyPushed != OTYPE { - break - } - ts = ts.Link - } - // all types, nothing to see here. - if ntt == nf { - return - } - lno := int(lineno) setlineno(from) @@ -183,11 +168,11 @@ func checkgoto(from *Node, to *Node) { var block *Sym var dcl *Sym - ts = to.Sym + ts := to.Sym for ; nt > nf; nt-- { if ts.Pkg == nil { block = ts - } else if ts.whyPushed != OTYPE { + } else { dcl = ts } ts = ts.Link @@ -196,7 +181,7 @@ func checkgoto(from *Node, to *Node) { for ts != fs { if ts.Pkg == nil { block = ts - } else if ts.whyPushed != OTYPE { + } else { dcl = ts } ts = ts.Link diff --git a/src/cmd/internal/gc/go.go b/src/cmd/internal/gc/go.go index 4800218c95..31692bdf00 100644 --- a/src/cmd/internal/gc/go.go +++ b/src/cmd/internal/gc/go.go @@ -111,7 +111,6 @@ type Sym struct { Uniqgen uint32 Importdef *Pkg // where imported definition was found Linkname string // link name - whyPushed uint8 // why this symbol pushed onto dclstack. Same as Node.Op. Used by goto validation // saved and restored by dcopy Pkg *Pkg diff --git a/test/goto.go b/test/goto.go index c626f3d1c1..ca477b3d0c 100644 --- a/test/goto.go +++ b/test/goto.go @@ -536,19 +536,3 @@ func _() { goto L // ERROR "goto L jumps into block starting at LINE-4|goto jumps into block" } } - -// issue 8042 -func _() { - goto L - type a int - L: -} - -// make sure we only complain about variable declarations. -func _() { - goto L // ERROR "goto L jumps over declaration of x at LINE+2|goto jumps over declaration" - type a int - x := 1 // GCCGO_ERROR "defined here" - _ = x -L: -}