From def9c0b06d4796364cda3c1e40d75bb0fa0ecddf Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 10 Mar 2016 20:35:27 -0800 Subject: [PATCH] cmd/compile: remove Label.Link field and lastlabel global var Change-Id: If2a174f482ecd56dee43f921d13fef98439872fc Reviewed-on: https://go-review.googlesource.com/20559 Reviewed-by: Matthew Dempsky --- src/cmd/compile/internal/gc/gen.go | 24 ++++++++---------------- src/cmd/compile/internal/gc/go.go | 7 +++---- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/src/cmd/compile/internal/gc/gen.go b/src/cmd/compile/internal/gc/gen.go index 34d2f31d7c..a23271ed78 100644 --- a/src/cmd/compile/internal/gc/gen.go +++ b/src/cmd/compile/internal/gc/gen.go @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// Portable half of code generator; mainly statements and control flow. + package gc import ( @@ -9,11 +11,8 @@ import ( "fmt" ) -// portable half of code generator. -// mainly statements and control flow. -var labellist *Label - -var lastlabel *Label +// TODO: labellist should become part of a "compilation state" for functions. +var labellist []*Label func Sysfunc(name string) *Node { n := newname(Pkglookup(name, Runtimepkg)) @@ -106,12 +105,10 @@ func addrescapes(n *Node) { } func clearlabels() { - for l := labellist; l != nil; l = l.Link { + for _, l := range labellist { l.Sym.Label = nil } - - labellist = nil - lastlabel = nil + labellist = labellist[:0] } func newlab(n *Node) *Label { @@ -119,14 +116,9 @@ func newlab(n *Node) *Label { lab := s.Label if lab == nil { lab = new(Label) - if lastlabel == nil { - labellist = lab - } else { - lastlabel.Link = lab - } - lastlabel = lab lab.Sym = s s.Label = lab + labellist = append(labellist, lab) } if n.Op == OLABEL { @@ -974,7 +966,7 @@ func CgenTemp(n *Node) *Node { } func checklabels() { - for lab := labellist; lab != nil; lab = lab.Link { + for _, lab := range labellist { if lab.Def == nil { for _, n := range lab.Use { yyerrorl(n.Lineno, "label %v not defined", lab.Sym) diff --git a/src/cmd/compile/internal/gc/go.go b/src/cmd/compile/internal/gc/go.go index 4bf7385405..c98637c893 100644 --- a/src/cmd/compile/internal/gc/go.go +++ b/src/cmd/compile/internal/gc/go.go @@ -86,10 +86,9 @@ type Sym struct { } type Label struct { - Sym *Sym - Def *Node - Use []*Node - Link *Label + Sym *Sym + Def *Node + Use []*Node // for use during gen Gotopc *obj.Prog // pointer to unresolved gotos -- 2.48.1