aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2015-02-23 16:07:24 -0500
committerRuss Cox <rsc@golang.org>2015-02-23 21:36:06 +0000
commit382b44eb7c4357cd17be403addfd0ca46bfa2e79 (patch)
tree671a254613852817e9bccb3330c19db4572e213d /src/cmd/internal/obj
parent3af0d791bed25e6cb4689fed9cc8379554971cb8 (diff)
downloadgo-382b44eb7c4357cd17be403addfd0ca46bfa2e79.tar.xz
[dev.cc] cmd/5g etc: code cleanup: delay var decls and eliminate dead code
Ran rsc.io/grind rev 6f0e601 on the source files. The cleanups move var declarations as close to the use as possible, splitting disjoint uses of the var into separate variables. They also remove dead code (especially in func sudoaddable), which helps with the var moving. There's more cleanup to come, but this alone cuts the time spent compiling html/template on my 2013 MacBook Pro from 3.1 seconds to 2.3 seconds. Change-Id: I4de499f47b1dd47a560c310bbcde6b08d425cfd6 Reviewed-on: https://go-review.googlesource.com/5637 Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'src/cmd/internal/obj')
-rw-r--r--src/cmd/internal/obj/data.go39
-rw-r--r--src/cmd/internal/obj/go.go4
-rw-r--r--src/cmd/internal/obj/ld.go16
-rw-r--r--src/cmd/internal/obj/obj.go53
-rw-r--r--src/cmd/internal/obj/objfile.go76
-rw-r--r--src/cmd/internal/obj/pass.go12
-rw-r--r--src/cmd/internal/obj/pcln.go72
-rw-r--r--src/cmd/internal/obj/sym.go27
8 files changed, 105 insertions, 194 deletions
diff --git a/src/cmd/internal/obj/data.go b/src/cmd/internal/obj/data.go
index 66995a3cd7..39e1ce527c 100644
--- a/src/cmd/internal/obj/data.go
+++ b/src/cmd/internal/obj/data.go
@@ -41,8 +41,7 @@ func mangle(file string) {
}
func Symgrow(ctxt *Link, s *LSym, lsiz int64) {
- var siz int
- siz = int(lsiz)
+ siz := int(lsiz)
if int64(siz) != lsiz {
log.Fatal("Symgrow size %d too long", lsiz)
}
@@ -143,9 +142,7 @@ func Setuintxx(ctxt *Link, s *LSym, off int64, v uint64, wid int64) int64 {
}
func adduintxx(ctxt *Link, s *LSym, v uint64, wid int) int64 {
- var off int64
-
- off = s.Size
+ off := s.Size
Setuintxx(ctxt, s, off, v, int64(wid))
return off
}
@@ -183,17 +180,14 @@ func setuint64(ctxt *Link, s *LSym, r int64, v uint64) int64 {
}
func addaddrplus(ctxt *Link, s *LSym, t *LSym, add int64) int64 {
- var i int64
- var r *Reloc
-
if s.Type == 0 {
s.Type = SDATA
}
s.Reachable = 1
- i = s.Size
+ i := s.Size
s.Size += int64(ctxt.Arch.Ptrsize)
Symgrow(ctxt, s, s.Size)
- r = Addrel(s)
+ r := Addrel(s)
r.Sym = t
r.Off = int32(i)
r.Siz = uint8(ctxt.Arch.Ptrsize)
@@ -203,17 +197,14 @@ func addaddrplus(ctxt *Link, s *LSym, t *LSym, add int64) int64 {
}
func addpcrelplus(ctxt *Link, s *LSym, t *LSym, add int64) int64 {
- var i int64
- var r *Reloc
-
if s.Type == 0 {
s.Type = SDATA
}
s.Reachable = 1
- i = s.Size
+ i := s.Size
s.Size += 4
Symgrow(ctxt, s, s.Size)
- r = Addrel(s)
+ r := Addrel(s)
r.Sym = t
r.Off = int32(i)
r.Add = add
@@ -227,8 +218,6 @@ func addaddr(ctxt *Link, s *LSym, t *LSym) int64 {
}
func setaddrplus(ctxt *Link, s *LSym, off int64, t *LSym, add int64) int64 {
- var r *Reloc
-
if s.Type == 0 {
s.Type = SDATA
}
@@ -238,7 +227,7 @@ func setaddrplus(ctxt *Link, s *LSym, off int64, t *LSym, add int64) int64 {
Symgrow(ctxt, s, s.Size)
}
- r = Addrel(s)
+ r := Addrel(s)
r.Sym = t
r.Off = int32(off)
r.Siz = uint8(ctxt.Arch.Ptrsize)
@@ -252,17 +241,14 @@ func setaddr(ctxt *Link, s *LSym, off int64, t *LSym) int64 {
}
func addsize(ctxt *Link, s *LSym, t *LSym) int64 {
- var i int64
- var r *Reloc
-
if s.Type == 0 {
s.Type = SDATA
}
s.Reachable = 1
- i = s.Size
+ i := s.Size
s.Size += int64(ctxt.Arch.Ptrsize)
Symgrow(ctxt, s, s.Size)
- r = Addrel(s)
+ r := Addrel(s)
r.Sym = t
r.Off = int32(i)
r.Siz = uint8(ctxt.Arch.Ptrsize)
@@ -271,17 +257,14 @@ func addsize(ctxt *Link, s *LSym, t *LSym) int64 {
}
func addaddrplus4(ctxt *Link, s *LSym, t *LSym, add int64) int64 {
- var i int64
- var r *Reloc
-
if s.Type == 0 {
s.Type = SDATA
}
s.Reachable = 1
- i = s.Size
+ i := s.Size
s.Size += 4
Symgrow(ctxt, s, s.Size)
- r = Addrel(s)
+ r := Addrel(s)
r.Sym = t
r.Off = int32(i)
r.Siz = 4
diff --git a/src/cmd/internal/obj/go.go b/src/cmd/internal/obj/go.go
index 1bd10fcab8..496a5b83ff 100644
--- a/src/cmd/internal/obj/go.go
+++ b/src/cmd/internal/obj/go.go
@@ -36,9 +36,7 @@ var exper = []struct {
}
func addexp(s string) {
- var i int
-
- for i = 0; i < len(exper); i++ {
+ for i := 0; i < len(exper); i++ {
if exper[i].name == s {
if exper[i].val != nil {
*exper[i].val = 1
diff --git a/src/cmd/internal/obj/ld.go b/src/cmd/internal/obj/ld.go
index 99cf64a3ed..4d2e4293aa 100644
--- a/src/cmd/internal/obj/ld.go
+++ b/src/cmd/internal/obj/ld.go
@@ -44,13 +44,11 @@ const (
)
func mkfwd(sym *LSym) {
- var p *Prog
- var i int
var dwn [LOG]int32
var cnt [LOG]int32
var lst [LOG]*Prog
- for i = 0; i < LOG; i++ {
+ for i := 0; i < LOG; i++ {
if i == 0 {
cnt[i] = 1
} else {
@@ -60,8 +58,8 @@ func mkfwd(sym *LSym) {
lst[i] = nil
}
- i = 0
- for p = sym.Text; p != nil && p.Link != nil; p = p.Link {
+ i := 0
+ for p := sym.Text; p != nil && p.Link != nil; p = p.Link {
i--
if i < 0 {
i = LOG - 1
@@ -79,17 +77,13 @@ func mkfwd(sym *LSym) {
}
func Copyp(ctxt *Link, q *Prog) *Prog {
- var p *Prog
-
- p = ctxt.NewProg()
+ p := ctxt.NewProg()
*p = *q
return p
}
func Appendp(ctxt *Link, q *Prog) *Prog {
- var p *Prog
-
- p = ctxt.NewProg()
+ p := ctxt.NewProg()
p.Link = q.Link
q.Link = p
p.Lineno = q.Lineno
diff --git a/src/cmd/internal/obj/obj.go b/src/cmd/internal/obj/obj.go
index 214d9cae8b..05902e2e33 100644
--- a/src/cmd/internal/obj/obj.go
+++ b/src/cmd/internal/obj/obj.go
@@ -25,12 +25,8 @@ func Linklinefmt(ctxt *Link, lno0 int, showAll, showFullPath bool) string {
lno := int32(lno0)
lno1 := lno
var d int32
- var i int
- var n int
- var h *Hist
- n = 0
- var fp string
- for h = ctxt.Hist; h != nil; h = h.Link {
+ n := 0
+ for h := ctxt.Hist; h != nil; h = h.Link {
if h.Offset < 0 {
continue
}
@@ -65,7 +61,8 @@ func Linklinefmt(ctxt *Link, lno0 int, showAll, showFullPath bool) string {
if n > int(HISTSZ) {
n = int(HISTSZ)
}
- for i = n - 1; i >= 0; i-- {
+ var fp string
+ for i := n - 1; i >= 0; i-- {
if i != n-1 {
if !showAll {
break
@@ -93,12 +90,12 @@ func Linklinefmt(ctxt *Link, lno0 int, showAll, showFullPath bool) string {
// For portability, we allow ASCII case folding, so that haspathprefix("a/b/c", "A/B") is true.
// Similarly, we allow slash folding, so that haspathprefix("a/b/c", "a\\b") is true.
func haspathprefix(s string, t string) bool {
- var i int
- var cs int
- var ct int
if len(t) > len(s) {
return false
}
+ var i int
+ var cs int
+ var ct int
for i = 0; i < len(t); i++ {
cs = int(s[i])
ct = int(t[i])
@@ -131,17 +128,10 @@ func linkgetline(ctxt *Link, line int32, f **LSym, l *int32) {
line *Hist
ldel int32
}
- var lno int32
var d int32
- var dlno int32
- var n int
- var h *Hist
- var buf string
- var buf1 string
- var file string
- lno = int32(line)
- n = 0
- for h = ctxt.Hist; h != nil; h = h.Link {
+ lno := int32(line)
+ n := 0
+ for h := ctxt.Hist; h != nil; h = h.Link {
if h.Offset < 0 {
continue
}
@@ -182,6 +172,8 @@ func linkgetline(ctxt *Link, line int32, f **LSym, l *int32) {
return
}
n--
+ var dlno int32
+ var file string
if a[n].line != nil {
file = a[n].line.Name
dlno = a[n].ldel - 1
@@ -189,6 +181,7 @@ func linkgetline(ctxt *Link, line int32, f **LSym, l *int32) {
file = a[n].incl.Name
dlno = a[n].idel - 1
}
+ var buf string
if filepath.IsAbs(file) || strings.HasPrefix(file, "<") {
buf = fmt.Sprintf("%s", file)
} else {
@@ -199,14 +192,14 @@ func linkgetline(ctxt *Link, line int32, f **LSym, l *int32) {
if len(buf) == len(ctxt.Trimpath) {
buf = "??"
} else {
- buf1 = fmt.Sprintf("%s", buf[len(ctxt.Trimpath)+1:])
+ buf1 := fmt.Sprintf("%s", buf[len(ctxt.Trimpath)+1:])
if buf1[0] == '\x00' {
buf1 = "??"
}
buf = buf1
}
} else if ctxt.Goroot_final != "" && haspathprefix(buf, ctxt.Goroot) {
- buf1 = fmt.Sprintf("%s%s", ctxt.Goroot_final, buf[len(ctxt.Goroot):])
+ buf1 := fmt.Sprintf("%s%s", ctxt.Goroot_final, buf[len(ctxt.Goroot):])
buf = buf1
}
lno -= dlno
@@ -215,8 +208,6 @@ func linkgetline(ctxt *Link, line int32, f **LSym, l *int32) {
}
func Linklinehist(ctxt *Link, lineno int, f string, offset int) {
- var h *Hist
-
if false { // debug['f']
if f != "" {
if offset != 0 {
@@ -229,7 +220,7 @@ func Linklinehist(ctxt *Link, lineno int, f string, offset int) {
}
}
- h = new(Hist)
+ h := new(Hist)
*h = Hist{}
h.Name = f
h.Line = int32(lineno)
@@ -248,12 +239,10 @@ func Linklinehist(ctxt *Link, lineno int, f string, offset int) {
func Linkprfile(ctxt *Link, line int) {
l := int32(line)
var i int
- var n int
var a [HISTSZ]Hist
- var h *Hist
var d int32
- n = 0
- for h = ctxt.Hist; h != nil; h = h.Link {
+ n := 0
+ for h := ctxt.Hist; h != nil; h = h.Link {
if l < h.Line {
break
}
@@ -286,7 +275,7 @@ func Linkprfile(ctxt *Link, line int) {
if n > HISTSZ {
n = HISTSZ
}
- for i = 0; i < n; i++ {
+ for i := 0; i < n; i++ {
fmt.Printf("%s:%d ", a[i].Name, int(l-a[i].Line+a[i].Offset+1))
}
}
@@ -295,9 +284,7 @@ func Linkprfile(ctxt *Link, line int) {
* start a new Prog list.
*/
func Linknewplist(ctxt *Link) *Plist {
- var pl *Plist
-
- pl = new(Plist)
+ pl := new(Plist)
*pl = Plist{}
if ctxt.Plist == nil {
ctxt.Plist = pl
diff --git a/src/cmd/internal/obj/objfile.go b/src/cmd/internal/obj/objfile.go
index b15bd007af..6e76a39c53 100644
--- a/src/cmd/internal/obj/objfile.go
+++ b/src/cmd/internal/obj/objfile.go
@@ -18,15 +18,7 @@ var outfile string
// does not write out object files.
func Writeobjdirect(ctxt *Link, b *Biobuf) {
var flag int
- var found int
- var h *Hist
var s *LSym
- var text *LSym
- var etext *LSym
- var curtext *LSym
- var data *LSym
- var edata *LSym
- var pl *Plist
var p *Prog
var plink *Prog
var a *Auto
@@ -34,13 +26,13 @@ func Writeobjdirect(ctxt *Link, b *Biobuf) {
// Build list of symbols, and assign instructions to lists.
// Ignore ctxt->plist boundaries. There are no guarantees there,
// and the C compilers and assemblers just use one big list.
- text = nil
+ text := (*LSym)(nil)
- curtext = nil
- data = nil
- etext = nil
- edata = nil
- for pl = ctxt.Plist; pl != nil; pl = pl.Link {
+ curtext := (*LSym)(nil)
+ data := (*LSym)(nil)
+ etext := (*LSym)(nil)
+ edata := (*LSym)(nil)
+ for pl := ctxt.Plist; pl != nil; pl = pl.Link {
for p = pl.Firstpc; p != nil; p = plink {
if ctxt.Debugasm != 0 && ctxt.Debugvlog != 0 {
fmt.Printf("obj: %v\n", p)
@@ -176,7 +168,8 @@ func Writeobjdirect(ctxt *Link, b *Biobuf) {
}
// Add reference to Go arguments for C or assembly functions without them.
- for s = text; s != nil; s = s.Next {
+ var found int
+ for s := text; s != nil; s = s.Next {
if !strings.HasPrefix(s.Name, "\"\".") {
continue
}
@@ -200,7 +193,7 @@ func Writeobjdirect(ctxt *Link, b *Biobuf) {
}
// Turn functions into machine code images.
- for s = text; s != nil; s = s.Next {
+ for s := text; s != nil; s = s.Next {
mkfwd(s)
linkpatch(ctxt, s)
ctxt.Arch.Follow(ctxt, s)
@@ -217,7 +210,7 @@ func Writeobjdirect(ctxt *Link, b *Biobuf) {
Bputc(b, 1) // version
// Emit autolib.
- for h = ctxt.Hist; h != nil; h = h.Link {
+ for h := ctxt.Hist; h != nil; h = h.Link {
if h.Offset < 0 {
wrstring(b, h.Name)
}
@@ -225,10 +218,10 @@ func Writeobjdirect(ctxt *Link, b *Biobuf) {
wrstring(b, "")
// Emit symbols.
- for s = text; s != nil; s = s.Next {
+ for s := text; s != nil; s = s.Next {
writesym(ctxt, b, s)
}
- for s = data; s != nil; s = s.Next {
+ for s := data; s != nil; s = s.Next {
writesym(ctxt, b, s)
}
@@ -240,16 +233,6 @@ func Writeobjdirect(ctxt *Link, b *Biobuf) {
}
func writesym(ctxt *Link, b *Biobuf, s *LSym) {
- var r *Reloc
- var i int
- var j int
- var c int
- var n int
- var pc *Pcln
- var p *Prog
- var a *Auto
- var name string
-
if ctxt.Debugasm != 0 {
fmt.Fprintf(ctxt.Bso, "%s ", s.Name)
if s.Version != 0 {
@@ -276,10 +259,12 @@ func writesym(ctxt *Link, b *Biobuf, s *LSym) {
}
fmt.Fprintf(ctxt.Bso, "\n")
- for p = s.Text; p != nil; p = p.Link {
+ for p := s.Text; p != nil; p = p.Link {
fmt.Fprintf(ctxt.Bso, "\t%#04x %v\n", uint(int(p.Pc)), p)
}
- for i = 0; i < len(s.P); {
+ var c int
+ var j int
+ for i := 0; i < len(s.P); {
fmt.Fprintf(ctxt.Bso, "\t%#04x", uint(i))
for j = i; j < i+16 && j < len(s.P); j++ {
fmt.Fprintf(ctxt.Bso, " %02x", s.P[j])
@@ -301,7 +286,9 @@ func writesym(ctxt *Link, b *Biobuf, s *LSym) {
i += 16
}
- for i = 0; i < len(s.R); i++ {
+ var r *Reloc
+ var name string
+ for i := 0; i < len(s.R); i++ {
r = &s.R[i]
name = ""
if r.Sym != nil {
@@ -325,7 +312,8 @@ func writesym(ctxt *Link, b *Biobuf, s *LSym) {
wrdata(b, s.P)
wrint(b, int64(len(s.R)))
- for i = 0; i < len(s.R); i++ {
+ var r *Reloc
+ for i := 0; i < len(s.R); i++ {
r = &s.R[i]
wrint(b, int64(r.Off))
wrint(b, int64(r.Siz))
@@ -341,12 +329,12 @@ func writesym(ctxt *Link, b *Biobuf, s *LSym) {
wrint(b, int64(s.Locals))
wrint(b, int64(s.Nosplit))
wrint(b, int64(s.Leaf)|int64(s.Cfunc)<<1)
- n = 0
- for a = s.Autom; a != nil; a = a.Link {
+ n := 0
+ for a := s.Autom; a != nil; a = a.Link {
n++
}
wrint(b, int64(n))
- for a = s.Autom; a != nil; a = a.Link {
+ for a := s.Autom; a != nil; a = a.Link {
wrsym(b, a.Asym)
wrint(b, int64(a.Aoffset))
if a.Name == NAME_AUTO {
@@ -359,35 +347,33 @@ func writesym(ctxt *Link, b *Biobuf, s *LSym) {
wrsym(b, a.Gotype)
}
- pc = s.Pcln
+ pc := s.Pcln
wrdata(b, pc.Pcsp.P)
wrdata(b, pc.Pcfile.P)
wrdata(b, pc.Pcline.P)
wrint(b, int64(len(pc.Pcdata)))
- for i = 0; i < len(pc.Pcdata); i++ {
+ for i := 0; i < len(pc.Pcdata); i++ {
wrdata(b, pc.Pcdata[i].P)
}
wrint(b, int64(len(pc.Funcdataoff)))
- for i = 0; i < len(pc.Funcdataoff); i++ {
+ for i := 0; i < len(pc.Funcdataoff); i++ {
wrsym(b, pc.Funcdata[i])
}
- for i = 0; i < len(pc.Funcdataoff); i++ {
+ for i := 0; i < len(pc.Funcdataoff); i++ {
wrint(b, pc.Funcdataoff[i])
}
wrint(b, int64(len(pc.File)))
- for i = 0; i < len(pc.File); i++ {
+ for i := 0; i < len(pc.File); i++ {
wrpathsym(ctxt, b, pc.File[i])
}
}
}
func wrint(b *Biobuf, sval int64) {
- var uv uint64
var v uint64
var buf [10]uint8
- var p []uint8
- uv = (uint64(sval) << 1) ^ uint64(int64(sval>>63))
- p = buf[:]
+ uv := (uint64(sval) << 1) ^ uint64(int64(sval>>63))
+ p := buf[:]
for v = uv; v >= 0x80; v >>= 7 {
p[0] = uint8(v | 0x80)
p = p[1:]
diff --git a/src/cmd/internal/obj/pass.go b/src/cmd/internal/obj/pass.go
index 812e00b557..b03cd431a9 100644
--- a/src/cmd/internal/obj/pass.go
+++ b/src/cmd/internal/obj/pass.go
@@ -33,9 +33,7 @@ package obj
// Code and data passes.
func Brchain(ctxt *Link, p *Prog) *Prog {
- var i int
-
- for i = 0; i < 20; i++ {
+ for i := 0; i < 20; i++ {
if p == nil || p.As != AJMP || p.Pcond == nil {
return p
}
@@ -46,10 +44,9 @@ func Brchain(ctxt *Link, p *Prog) *Prog {
}
func brloop(ctxt *Link, p *Prog) *Prog {
- var c int
var q *Prog
- c = 0
+ c := 0
for q = p; q != nil; q = q.Pcond {
if q.As != AJMP || q.Pcond == nil {
break
@@ -152,12 +149,11 @@ func checkaddr(ctxt *Link, p *Prog, a *Addr) {
func linkpatch(ctxt *Link, sym *LSym) {
var c int32
var name string
- var p *Prog
var q *Prog
ctxt.Cursym = sym
- for p = sym.Text; p != nil; p = p.Link {
+ for p := sym.Text; p != nil; p = p.Link {
checkaddr(ctxt, p, &p.From)
checkaddr(ctxt, p, &p.From3)
checkaddr(ctxt, p, &p.To)
@@ -203,7 +199,7 @@ func linkpatch(ctxt *Link, sym *LSym) {
p.Pcond = q
}
- for p = sym.Text; p != nil; p = p.Link {
+ for p := sym.Text; p != nil; p = p.Link {
p.Mark = 0 /* initialization for follow */
if p.Pcond != nil {
p.Pcond = brloop(ctxt, p.Pcond)
diff --git a/src/cmd/internal/obj/pcln.go b/src/cmd/internal/obj/pcln.go
index f5cdd3a099..13bb1cd85c 100644
--- a/src/cmd/internal/obj/pcln.go
+++ b/src/cmd/internal/obj/pcln.go
@@ -28,17 +28,8 @@ func addvarint(ctxt *Link, d *Pcdata, val uint32) {
// where func is the function, val is the current value, p is the instruction being
// considered, and arg can be used to further parameterize valfunc.
func funcpctab(ctxt *Link, dst *Pcdata, func_ *LSym, desc string, valfunc func(*Link, *LSym, int32, *Prog, int32, interface{}) int32, arg interface{}) {
- var dbg int
- var i int
- var oldval int32
- var val int32
- var started int32
- var delta uint32
- var pc int64
- var p *Prog
-
// To debug a specific function, uncomment second line and change name.
- dbg = 0
+ dbg := 0
//dbg = strcmp(func->name, "main.main") == 0;
//dbg = strcmp(desc, "pctofile") == 0;
@@ -51,21 +42,22 @@ func funcpctab(ctxt *Link, dst *Pcdata, func_ *LSym, desc string, valfunc func(*
fmt.Fprintf(ctxt.Bso, "funcpctab %s [valfunc=%s]\n", func_.Name, desc)
}
- val = -1
- oldval = val
+ val := int32(-1)
+ oldval := val
if func_.Text == nil {
ctxt.Debugpcln -= int32(dbg)
return
}
- pc = func_.Text.Pc
+ pc := func_.Text.Pc
if ctxt.Debugpcln != 0 {
fmt.Fprintf(ctxt.Bso, "%6x %6d %v\n", uint64(pc), val, func_.Text)
}
- started = 0
- for p = func_.Text; p != nil; p = p.Link {
+ started := int32(0)
+ var delta uint32
+ for p := func_.Text; p != nil; p = p.Link {
// Update val. If it's not changing, keep going.
val = valfunc(ctxt, func_, val, p, 0, arg)
@@ -134,7 +126,7 @@ func funcpctab(ctxt *Link, dst *Pcdata, func_ *LSym, desc string, valfunc func(*
if ctxt.Debugpcln != 0 {
fmt.Fprintf(ctxt.Bso, "wrote %d bytes to %p\n", len(dst.P), dst)
- for i = 0; i < len(dst.P); i++ {
+ for i := 0; i < len(dst.P); i++ {
fmt.Fprintf(ctxt.Bso, " %02x", dst.P[i])
}
fmt.Fprintf(ctxt.Bso, "\n")
@@ -148,14 +140,11 @@ func funcpctab(ctxt *Link, dst *Pcdata, func_ *LSym, desc string, valfunc func(*
// Because p->lineno applies to p, phase == 0 (before p)
// takes care of the update.
func pctofileline(ctxt *Link, sym *LSym, oldval int32, p *Prog, phase int32, arg interface{}) int32 {
- var i int32
- var l int32
- var f *LSym
- var pcln *Pcln
-
if p.As == ATEXT || p.As == ANOP || p.As == AUSEFIELD || p.Lineno == 0 || phase == 1 {
return oldval
}
+ var l int32
+ var f *LSym
linkgetline(ctxt, p.Lineno, &f, &l)
if f == nil {
// print("getline failed for %s %P\n", ctxt->cursym->name, p);
@@ -165,12 +154,13 @@ func pctofileline(ctxt *Link, sym *LSym, oldval int32, p *Prog, phase int32, arg
if arg == nil {
return l
}
- pcln = arg.(*Pcln)
+ pcln := arg.(*Pcln)
if f == pcln.Lastfile {
return int32(pcln.Lastindex)
}
+ var i int32
for i = 0; i < int32(len(pcln.File)); i++ {
file := pcln.File[i]
if file == f {
@@ -222,20 +212,14 @@ func pctopcdata(ctxt *Link, sym *LSym, oldval int32, p *Prog, phase int32, arg i
}
func linkpcln(ctxt *Link, cursym *LSym) {
- var p *Prog
- var pcln *Pcln
- var i int
- var npcdata int
- var nfuncdata int
-
ctxt.Cursym = cursym
- pcln = new(Pcln)
+ pcln := new(Pcln)
cursym.Pcln = pcln
- npcdata = 0
- nfuncdata = 0
- for p = cursym.Text; p != nil; p = p.Link {
+ npcdata := 0
+ nfuncdata := 0
+ for p := cursym.Text; p != nil; p = p.Link {
if p.As == APCDATA && p.From.Offset >= int64(npcdata) {
npcdata = int(p.From.Offset + 1)
}
@@ -257,7 +241,7 @@ func linkpcln(ctxt *Link, cursym *LSym) {
// tabulate which pc and func data we have.
havepc := make([]uint32, (npcdata+31)/32)
havefunc := make([]uint32, (nfuncdata+31)/32)
- for p = cursym.Text; p != nil; p = p.Link {
+ for p := cursym.Text; p != nil; p = p.Link {
if p.As == AFUNCDATA {
if (havefunc[p.From.Offset/32]>>uint64(p.From.Offset%32))&1 != 0 {
ctxt.Diag("multiple definitions for FUNCDATA $%d", p.From.Offset)
@@ -271,7 +255,7 @@ func linkpcln(ctxt *Link, cursym *LSym) {
}
// pcdata.
- for i = 0; i < npcdata; i++ {
+ for i := 0; i < npcdata; i++ {
if (havepc[i/32]>>uint(i%32))&1 == 0 {
continue
}
@@ -280,7 +264,8 @@ func linkpcln(ctxt *Link, cursym *LSym) {
// funcdata
if nfuncdata > 0 {
- for p = cursym.Text; p != nil; p = p.Link {
+ var i int
+ for p := cursym.Text; p != nil; p = p.Link {
if p.As == AFUNCDATA {
i = int(p.From.Offset)
pcln.Funcdataoff[i] = p.To.Offset
@@ -297,13 +282,9 @@ func linkpcln(ctxt *Link, cursym *LSym) {
// iteration over encoded pcdata tables.
func getvarint(pp *[]byte) uint32 {
- var p []byte
- var shift int
- var v uint32
-
- v = 0
- p = *pp
- for shift = 0; ; shift += 7 {
+ v := uint32(0)
+ p := *pp
+ for shift := 0; ; shift += 7 {
v |= uint32(p[0]&0x7F) << uint(shift)
tmp7 := p
p = p[1:]
@@ -317,9 +298,6 @@ func getvarint(pp *[]byte) uint32 {
}
func pciternext(it *Pciter) {
- var v uint32
- var dv int32
-
it.pc = it.nextpc
if it.done != 0 {
return
@@ -330,7 +308,7 @@ func pciternext(it *Pciter) {
}
// value delta
- v = getvarint(&it.p)
+ v := getvarint(&it.p)
if v == 0 && it.start == 0 {
it.done = 1
@@ -338,7 +316,7 @@ func pciternext(it *Pciter) {
}
it.start = 0
- dv = int32(v>>1) ^ (int32(v<<31) >> 31)
+ dv := int32(v>>1) ^ (int32(v<<31) >> 31)
it.value += dv
// pc delta
diff --git a/src/cmd/internal/obj/sym.go b/src/cmd/internal/obj/sym.go
index 30d0eb1751..d9df440f6e 100644
--- a/src/cmd/internal/obj/sym.go
+++ b/src/cmd/internal/obj/sym.go
@@ -101,9 +101,7 @@ var headers = []struct {
}
func headtype(name string) int {
- var i int
-
- for i = 0; i < len(headers); i++ {
+ for i := 0; i < len(headers); i++ {
if name == headers[i].name {
return headers[i].val
}
@@ -114,9 +112,7 @@ func headtype(name string) int {
var headstr_buf string
func Headstr(v int) string {
- var i int
-
- for i = 0; i < len(headers); i++ {
+ for i := 0; i < len(headers); i++ {
if v == headers[i].val {
return headers[i].name
}
@@ -126,13 +122,11 @@ func Headstr(v int) string {
}
func Linknew(arch *LinkArch) *Link {
- var ctxt *Link
- var p string
var buf string
linksetexp()
- ctxt = new(Link)
+ ctxt := new(Link)
ctxt.Arch = arch
ctxt.Version = HistVersion
ctxt.Goroot = Getgoroot()
@@ -211,7 +205,7 @@ func Linknew(arch *LinkArch) *Link {
// On arm, record goarm.
if ctxt.Arch.Thechar == '5' {
- p = Getgoarm()
+ p := Getgoarm()
if p != "" {
ctxt.Goarm = int32(Atoi(p))
} else {
@@ -223,9 +217,7 @@ func Linknew(arch *LinkArch) *Link {
}
func linknewsym(ctxt *Link, symb string, v int) *LSym {
- var s *LSym
-
- s = new(LSym)
+ s := new(LSym)
*s = LSym{}
s.Dynid = -1
@@ -246,17 +238,14 @@ func linknewsym(ctxt *Link, symb string, v int) *LSym {
}
func _lookup(ctxt *Link, symb string, v int, creat int) *LSym {
- var s *LSym
- var h uint32
-
- h = uint32(v)
+ h := uint32(v)
for i := 0; i < len(symb); i++ {
c := int(symb[i])
h = h + h + h + uint32(c)
}
h &= 0xffffff
h %= LINKHASH
- for s = ctxt.Hash[h]; s != nil; s = s.Hash {
+ for s := ctxt.Hash[h]; s != nil; s = s.Hash {
if int(s.Version) == v && s.Name == symb {
return s
}
@@ -265,7 +254,7 @@ func _lookup(ctxt *Link, symb string, v int, creat int) *LSym {
return nil
}
- s = linknewsym(ctxt, symb, v)
+ s := linknewsym(ctxt, symb, v)
s.Extname = s.Name
s.Hash = ctxt.Hash[h]
ctxt.Hash[h] = s