From dc7b54bed280f9258c553772fbd62e5b075ccff7 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 17 Feb 2015 22:13:49 -0500 Subject: [dev.cc] cmd/internal/obj, cmd/internal/gc, new6g: reconvert Reconvert using rsc.io/c2go rev 27b3f59. Changes to converter: - fatal does not return, so no fallthrough after fatal in switch - many more function results and variables identified as bool - simplification of negated boolean expressions Change-Id: I3bc67da5e46cb7ee613e230cf7e9533036cc870b Reviewed-on: https://go-review.googlesource.com/5171 Reviewed-by: Josh Bleecher Snyder --- src/cmd/internal/obj/ar.go | 14 +++---- src/cmd/internal/obj/arm/asm5.go | 86 ++++++++++++++++++-------------------- src/cmd/internal/obj/arm/obj5.go | 47 ++++++++++----------- src/cmd/internal/obj/data.go | 34 +++++++-------- src/cmd/internal/obj/go.go | 12 +++--- src/cmd/internal/obj/i386/asm8.go | 8 ++-- src/cmd/internal/obj/i386/obj8.go | 40 +++++++++--------- src/cmd/internal/obj/ld.go | 62 --------------------------- src/cmd/internal/obj/link.go | 16 +++---- src/cmd/internal/obj/objfile.go | 2 +- src/cmd/internal/obj/pcln.go | 46 ++++++++++---------- src/cmd/internal/obj/ppc64/asm9.go | 60 +++++++++++++------------- src/cmd/internal/obj/ppc64/obj9.go | 48 ++++++++++----------- src/cmd/internal/obj/sym.go | 12 +++--- src/cmd/internal/obj/x86/asm6.go | 32 +++++++------- src/cmd/internal/obj/x86/obj6.go | 42 +++++++++---------- 16 files changed, 244 insertions(+), 317 deletions(-) (limited to 'src/cmd/internal/obj') diff --git a/src/cmd/internal/obj/ar.go b/src/cmd/internal/obj/ar.go index 3991e730b0..7cbeafdda5 100644 --- a/src/cmd/internal/obj/ar.go +++ b/src/cmd/internal/obj/ar.go @@ -35,11 +35,11 @@ package obj // THE SOFTWARE. type ar_hdr struct { - Name string - Date string - Uid string - Gid string - Mode string - Size string - Fmag string + name string + date string + uid string + gid string + mode string + size string + fmag string } diff --git a/src/cmd/internal/obj/arm/asm5.go b/src/cmd/internal/obj/arm/asm5.go index aff9a17214..8e42d6b527 100644 --- a/src/cmd/internal/obj/arm/asm5.go +++ b/src/cmd/internal/obj/arm/asm5.go @@ -437,7 +437,7 @@ func asmoutnacl(ctxt *obj.Link, origPC int32, p *obj.Prog, o *Optab, out []uint3 // split it into two instructions: // ADD $-100004, R13 // MOVW R14, 0(R13) - q = new(obj.Prog) + q = ctxt.NewProg() p.Scond &^= C_WBIT *q = *p @@ -462,14 +462,14 @@ func asmoutnacl(ctxt *obj.Link, origPC int32, p *obj.Prog, o *Optab, out []uint3 p.From = *a p.From.Reg = 0 p.From.Type = obj.TYPE_CONST - p.To = obj.Zprog.To + p.To = obj.Addr{} p.To.Type = obj.TYPE_REG p.To.Reg = REG_R13 // make q into p but load/store from 0(R13) q.Spadj = 0 - *a2 = obj.Zprog.From + *a2 = obj.Addr{} a2.Type = obj.TYPE_MEM a2.Reg = REG_R13 a2.Sym = nil @@ -514,7 +514,7 @@ func asmoutnacl(ctxt *obj.Link, origPC int32, p *obj.Prog, o *Optab, out []uint3 if p.Scond&(C_PBIT|C_WBIT) != 0 { ctxt.Diag("unsupported instruction (.P/.W): %v", p) } - q = new(obj.Prog) + q = ctxt.NewProg() *q = *p if p.To.Type == obj.TYPE_MEM { a2 = &q.To @@ -535,12 +535,12 @@ func asmoutnacl(ctxt *obj.Link, origPC int32, p *obj.Prog, o *Optab, out []uint3 p.From = *a p.From.Type = obj.TYPE_ADDR - p.To = obj.Zprog.To + p.To = obj.Addr{} p.To.Type = obj.TYPE_REG p.To.Reg = REG_R11 // make q into p but load/store from 0(R11) - *a2 = obj.Zprog.From + *a2 = obj.Addr{} a2.Type = obj.TYPE_MEM a2.Reg = REG_R11 @@ -606,7 +606,7 @@ func span5(ctxt *obj.Link, cursym *obj.LSym) { p = p.Link for ; p != nil || ctxt.Blitrl != nil; (func() { op = p; p = p.Link })() { if p == nil { - if checkpool(ctxt, op, 0) != 0 { + if checkpool(ctxt, op, 0) { p = op continue } @@ -638,7 +638,7 @@ func span5(ctxt *obj.Link, cursym *obj.LSym) { if p.As == ACASE { i = int(casesz(ctxt, p)) } - if checkpool(ctxt, op, i) != 0 { + if checkpool(ctxt, op, i) { p = op continue } @@ -749,7 +749,7 @@ func span5(ctxt *obj.Link, cursym *obj.LSym) { } cursym.Size = int64(c) - if !(bflag != 0) { + if bflag == 0 { break } } @@ -834,16 +834,16 @@ func span5(ctxt *obj.Link, cursym *obj.LSym) { * drop the pool now, and branch round it. * this happens only in extended basic blocks that exceed 4k. */ -func checkpool(ctxt *obj.Link, p *obj.Prog, sz int) int { +func checkpool(ctxt *obj.Link, p *obj.Prog, sz int) bool { if pool.size >= 0xff0 || immaddr(int32((p.Pc+int64(sz)+4)+4+int64(12+pool.size)-int64(pool.start+8))) == 0 { return flushpool(ctxt, p, 1, 0) } else if p.Link == nil { return flushpool(ctxt, p, 2, 0) } - return 0 + return false } -func flushpool(ctxt *obj.Link, p *obj.Prog, skip int, force int) int { +func flushpool(ctxt *obj.Link, p *obj.Prog, skip int, force int) bool { var q *obj.Prog if ctxt.Blitrl != nil { @@ -851,23 +851,21 @@ func flushpool(ctxt *obj.Link, p *obj.Prog, skip int, force int) int { if false && skip == 1 { fmt.Printf("note: flush literal pool at %x: len=%d ref=%x\n", uint64(p.Pc+4), pool.size, pool.start) } - q = new(obj.Prog) + q = ctxt.NewProg() q.As = AB q.To.Type = obj.TYPE_BRANCH q.Pcond = p.Link q.Link = ctxt.Blitrl q.Lineno = p.Lineno - q.Ctxt = p.Ctxt ctxt.Blitrl = q - } else if !(force != 0) && (p.Pc+int64(12+pool.size)-int64(pool.start) < 2048) { // 12 take into account the maximum nacl literal pool alignment padding size - return 0 + } else if force == 0 && (p.Pc+int64(12+pool.size)-int64(pool.start) < 2048) { // 12 take into account the maximum nacl literal pool alignment padding size + return false } if ctxt.Headtype == obj.Hnacl && pool.size%16 != 0 { // if pool is not multiple of 16 bytes, add an alignment marker - q = new(obj.Prog) + q = ctxt.NewProg() q.As = ADATABUNDLEEND - q.Ctxt = p.Ctxt ctxt.Elitrl.Link = q ctxt.Elitrl = q } @@ -888,10 +886,10 @@ func flushpool(ctxt *obj.Link, p *obj.Prog, skip int, force int) int { pool.size = 0 pool.start = 0 pool.extra = 0 - return 1 + return true } - return 0 + return false } func addpool(ctxt *obj.Link, p *obj.Prog, a *obj.Addr) { @@ -901,9 +899,8 @@ func addpool(ctxt *obj.Link, p *obj.Prog, a *obj.Addr) { c = aclass(ctxt, a) - t = obj.Zprog + t.Ctxt = ctxt t.As = AWORD - t.Ctxt = p.Ctxt switch c { default: @@ -941,12 +938,9 @@ func addpool(ctxt *obj.Link, p *obj.Prog, a *obj.Addr) { if ctxt.Headtype == obj.Hnacl && pool.size%16 == 0 { // start a new data bundle - q = new(obj.Prog) - - *q = obj.Zprog + q = ctxt.NewProg() q.As = ADATABUNDLE q.Pc = int64(pool.size) - q.Ctxt = p.Ctxt pool.size += 4 if ctxt.Blitrl == nil { ctxt.Blitrl = q @@ -958,7 +952,7 @@ func addpool(ctxt *obj.Link, p *obj.Prog, a *obj.Addr) { ctxt.Elitrl = q } - q = new(obj.Prog) + q = ctxt.NewProg() *q = t q.Pc = int64(pool.size) @@ -1740,7 +1734,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 13: /* op $lcon, [R], R */ o1 = omvl(ctxt, p, &p.From, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } o2 = oprrr(ctxt, int(p.As), int(p.Scond)) @@ -1836,7 +1830,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 30: /* mov/movb/movbu R,L(R) */ o1 = omvl(ctxt, p, &p.To, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } r = int(p.To.Reg) @@ -1851,7 +1845,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 31: /* mov/movbu L(R),R -> lr[b] */ o1 = omvl(ctxt, p, &p.From, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } r = int(p.From.Reg) @@ -1866,7 +1860,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 34: /* mov $lacon,R */ o1 = omvl(ctxt, p, &p.From, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } @@ -1984,7 +1978,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 52: /* floating point store, int32 offset UGLY */ o1 = omvl(ctxt, p, &p.To, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } r = int(p.To.Reg) @@ -1997,7 +1991,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 53: /* floating point load, int32 offset UGLY */ o1 = omvl(ctxt, p, &p.From, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } r = int(p.From.Reg) @@ -2122,7 +2116,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 64: /* mov/movb/movbu R,addr */ o1 = omvl(ctxt, p, &p.To, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } o2 = osr(ctxt, int(p.As), int(p.From.Reg), 0, REGTMP, int(p.Scond)) @@ -2134,7 +2128,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 65: /* mov/movbu addr,R */ o1 = omvl(ctxt, p, &p.From, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } o2 = olr(ctxt, 0, REGTMP, int(p.To.Reg), int(p.Scond)) @@ -2149,7 +2143,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 68: /* floating point store -> ADDR */ o1 = omvl(ctxt, p, &p.To, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } o2 = ofsr(ctxt, int(p.As), int(p.From.Reg), 0, REGTMP, int(p.Scond), p) @@ -2161,7 +2155,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 69: /* floating point load <- ADDR */ o1 = omvl(ctxt, p, &p.From, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } o2 = ofsr(ctxt, int(p.As), int(p.To.Reg), 0, (REGTMP&15), int(p.Scond), p) | 1<<20 @@ -2197,7 +2191,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 72: /* movh/movhu R,L(R) -> strh */ o1 = omvl(ctxt, p, &p.To, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } r = int(p.To.Reg) @@ -2209,7 +2203,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 73: /* movb/movh/movhu L(R),R -> ldrsb/ldrsh/ldrh */ o1 = omvl(ctxt, p, &p.From, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } r = int(p.From.Reg) @@ -2394,7 +2388,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 93: /* movb/movh/movhu addr,R -> ldrsb/ldrsh/ldrh */ o1 = omvl(ctxt, p, &p.From, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } o2 = olhr(ctxt, 0, REGTMP, int(p.To.Reg), int(p.Scond)) @@ -2411,7 +2405,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { case 94: /* movh/movhu R,addr -> strh */ o1 = omvl(ctxt, p, &p.To, REGTMP) - if !(o1 != 0) { + if o1 == 0 { break } o2 = oshr(ctxt, int(p.From.Reg), 0, REGTMP, int(p.Scond)) @@ -2725,10 +2719,10 @@ func olr(ctxt *obj.Link, v int32, b int, r int, sc int) uint32 { ctxt.Diag(".nil on LDR/STR instruction") } o = ((uint32(sc) & C_SCOND) ^ C_SCOND_XOR) << 28 - if !(sc&C_PBIT != 0) { + if sc&C_PBIT == 0 { o |= 1 << 24 } - if !(sc&C_UBIT != 0) { + if sc&C_UBIT == 0 { o |= 1 << 23 } if sc&C_WBIT != 0 { @@ -2759,7 +2753,7 @@ func olhr(ctxt *obj.Link, v int32, b int, r int, sc int) uint32 { ctxt.Diag(".nil on LDRH/STRH instruction") } o = ((uint32(sc) & C_SCOND) ^ C_SCOND_XOR) << 28 - if !(sc&C_PBIT != 0) { + if sc&C_PBIT == 0 { o |= 1 << 24 } if sc&C_WBIT != 0 { @@ -2820,7 +2814,7 @@ func ofsr(ctxt *obj.Link, a int, r int, v int32, b int, sc int, p *obj.Prog) uin ctxt.Diag(".nil on FLDR/FSTR instruction") } o = ((uint32(sc) & C_SCOND) ^ C_SCOND_XOR) << 28 - if !(sc&C_PBIT != 0) { + if sc&C_PBIT == 0 { o |= 1 << 24 } if sc&C_WBIT != 0 { @@ -2860,7 +2854,7 @@ func ofsr(ctxt *obj.Link, a int, r int, v int32, b int, sc int, p *obj.Prog) uin func omvl(ctxt *obj.Link, p *obj.Prog, a *obj.Addr, dr int) uint32 { var v int32 var o1 uint32 - if !(p.Pcond != nil) { + if p.Pcond == nil { aclass(ctxt, a) v = immrot(^uint32(ctxt.Instoffset)) if v == 0 { diff --git a/src/cmd/internal/obj/arm/obj5.go b/src/cmd/internal/obj/arm/obj5.go index 406939e058..ce75ab1fa7 100644 --- a/src/cmd/internal/obj/arm/obj5.go +++ b/src/cmd/internal/obj/arm/obj5.go @@ -225,7 +225,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { cursym.Args = p.To.U.Argsize if ctxt.Debugzerostack != 0 { - if autoffset != 0 && !(p.From3.Offset&obj.NOSPLIT != 0) { + if autoffset != 0 && p.From3.Offset&obj.NOSPLIT == 0 { // MOVW $4(R13), R1 p = obj.Appendp(ctxt, p) @@ -370,7 +370,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { } } - if !(autosize != 0) && !(cursym.Text.Mark&LEAF != 0) { + if autosize == 0 && cursym.Text.Mark&LEAF == 0 { if ctxt.Debugvlog != 0 { fmt.Fprintf(ctxt.Bso, "save suppressed in: %s\n", cursym.Name) obj.Bflush(ctxt.Bso) @@ -381,13 +381,13 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { if cursym.Text.Mark&LEAF != 0 { cursym.Leaf = 1 - if !(autosize != 0) { + if autosize == 0 { break } } - if !(p.From3.Offset&obj.NOSPLIT != 0) { - p = stacksplit(ctxt, p, autosize, bool2int(!(cursym.Text.From3.Offset&obj.NEEDCTXT != 0))) // emit split check + if p.From3.Offset&obj.NOSPLIT == 0 { + p = stacksplit(ctxt, p, autosize, cursym.Text.From3.Offset&obj.NEEDCTXT == 0) // emit split check } // MOVW.W R14,$-autosize(SP) @@ -493,9 +493,9 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { case obj.ARET: obj.Nocache(p) if cursym.Text.Mark&LEAF != 0 { - if !(autosize != 0) { + if autosize == 0 { p.As = AB - p.From = obj.Zprog.From + p.From = obj.Addr{} if p.To.Sym != nil { // retjmp p.To.Type = obj.TYPE_BRANCH } else { @@ -662,8 +662,8 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { } } -func isfloatreg(a *obj.Addr) int { - return bool2int(a.Type == obj.TYPE_REG && REG_F0 <= a.Reg && a.Reg <= REG_F15) +func isfloatreg(a *obj.Addr) bool { + return a.Type == obj.TYPE_REG && REG_F0 <= a.Reg && a.Reg <= REG_F15 } func softfloat(ctxt *obj.Link, cursym *obj.LSym) { @@ -687,7 +687,7 @@ func softfloat(ctxt *obj.Link, cursym *obj.LSym) { for p = cursym.Text; p != nil; p = p.Link { switch p.As { case AMOVW: - if isfloatreg(&p.To) != 0 || isfloatreg(&p.From) != 0 { + if isfloatreg(&p.To) || isfloatreg(&p.From) { goto soft } goto notsoft @@ -721,13 +721,13 @@ func softfloat(ctxt *obj.Link, cursym *obj.LSym) { } soft: - if !(wasfloat != 0) || (p.Mark&LABEL != 0) { - next = new(obj.Prog) + if wasfloat == 0 || (p.Mark&LABEL != 0) { + next = ctxt.NewProg() *next = *p // BL _sfloat(SB) - *p = obj.Zprog - + *p = obj.Prog{} + p.Ctxt = ctxt p.Link = next p.As = ABL p.To.Type = obj.TYPE_BRANCH @@ -745,7 +745,7 @@ func softfloat(ctxt *obj.Link, cursym *obj.LSym) { } } -func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt int) *obj.Prog { +func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj.Prog { // MOVW g_stackguard(g), R1 p = obj.Appendp(ctxt, p) @@ -856,7 +856,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt int) *obj.P if ctxt.Cursym.Cfunc != 0 { p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0) } else { - p.To.Sym = ctxt.Symmorestack[noctxt] + p.To.Sym = ctxt.Symmorestack[bool2int(noctxt)] } // BLS start @@ -885,7 +885,7 @@ func follow(ctxt *obj.Link, s *obj.LSym) { ctxt.Cursym = s - firstp = new(obj.Prog) + firstp = ctxt.NewProg() lastp = firstp xfol(ctxt, s.Text, &lastp) lastp.Link = nil @@ -948,7 +948,7 @@ loop: if q != nil && q.As != obj.ATEXT { p.Mark |= FOLL p = q - if !(p.Mark&FOLL != 0) { + if p.Mark&FOLL == 0 { goto loop } } @@ -979,9 +979,9 @@ loop: copy: for { - r = new(obj.Prog) + r = ctxt.NewProg() *r = *p - if !(r.Mark&FOLL != 0) { + if r.Mark&FOLL == 0 { fmt.Printf("can't happen 1\n") } r.Mark |= FOLL @@ -1003,10 +1003,10 @@ loop: } r.Pcond = p.Link r.Link = p.Pcond - if !(r.Link.Mark&FOLL != 0) { + if r.Link.Mark&FOLL == 0 { xfol(ctxt, r.Link, last) } - if !(r.Pcond.Mark&FOLL != 0) { + if r.Pcond.Mark&FOLL == 0 { fmt.Printf("can't happen 2\n") } return @@ -1014,13 +1014,12 @@ loop: } a = AB - q = new(obj.Prog) + q = ctxt.NewProg() q.As = int16(a) q.Lineno = p.Lineno q.To.Type = obj.TYPE_BRANCH q.To.Offset = p.Pc q.Pcond = p - q.Ctxt = p.Ctxt p = q } diff --git a/src/cmd/internal/obj/data.go b/src/cmd/internal/obj/data.go index 265e609bbe..66995a3cd7 100644 --- a/src/cmd/internal/obj/data.go +++ b/src/cmd/internal/obj/data.go @@ -142,7 +142,7 @@ func Setuintxx(ctxt *Link, s *LSym, off int64, v uint64, wid int64) int64 { return off + wid } -func Adduintxx(ctxt *Link, s *LSym, v uint64, wid int) int64 { +func adduintxx(ctxt *Link, s *LSym, v uint64, wid int) int64 { var off int64 off = s.Size @@ -150,23 +150,23 @@ func Adduintxx(ctxt *Link, s *LSym, v uint64, wid int) int64 { return off } -func Adduint8(ctxt *Link, s *LSym, v uint8) int64 { - return Adduintxx(ctxt, s, uint64(v), 1) +func adduint8(ctxt *Link, s *LSym, v uint8) int64 { + return adduintxx(ctxt, s, uint64(v), 1) } -func Adduint16(ctxt *Link, s *LSym, v uint16) int64 { - return Adduintxx(ctxt, s, uint64(v), 2) +func adduint16(ctxt *Link, s *LSym, v uint16) int64 { + return adduintxx(ctxt, s, uint64(v), 2) } func Adduint32(ctxt *Link, s *LSym, v uint32) int64 { - return Adduintxx(ctxt, s, uint64(v), 4) + return adduintxx(ctxt, s, uint64(v), 4) } func Adduint64(ctxt *Link, s *LSym, v uint64) int64 { - return Adduintxx(ctxt, s, v, 8) + return adduintxx(ctxt, s, v, 8) } -func Setuint8(ctxt *Link, s *LSym, r int64, v uint8) int64 { +func setuint8(ctxt *Link, s *LSym, r int64, v uint8) int64 { return Setuintxx(ctxt, s, r, uint64(v), 1) } @@ -174,7 +174,7 @@ func setuint16(ctxt *Link, s *LSym, r int64, v uint16) int64 { return Setuintxx(ctxt, s, r, uint64(v), 2) } -func Setuint32(ctxt *Link, s *LSym, r int64, v uint32) int64 { +func setuint32(ctxt *Link, s *LSym, r int64, v uint32) int64 { return Setuintxx(ctxt, s, r, uint64(v), 4) } @@ -182,7 +182,7 @@ func setuint64(ctxt *Link, s *LSym, r int64, v uint64) int64 { return Setuintxx(ctxt, s, r, v, 8) } -func Addaddrplus(ctxt *Link, s *LSym, t *LSym, add int64) int64 { +func addaddrplus(ctxt *Link, s *LSym, t *LSym, add int64) int64 { var i int64 var r *Reloc @@ -222,11 +222,11 @@ func addpcrelplus(ctxt *Link, s *LSym, t *LSym, add int64) int64 { return i + int64(r.Siz) } -func Addaddr(ctxt *Link, s *LSym, t *LSym) int64 { - return Addaddrplus(ctxt, s, t, 0) +func addaddr(ctxt *Link, s *LSym, t *LSym) int64 { + return addaddrplus(ctxt, s, t, 0) } -func Setaddrplus(ctxt *Link, s *LSym, off int64, t *LSym, add int64) int64 { +func setaddrplus(ctxt *Link, s *LSym, off int64, t *LSym, add int64) int64 { var r *Reloc if s.Type == 0 { @@ -247,11 +247,11 @@ func Setaddrplus(ctxt *Link, s *LSym, off int64, t *LSym, add int64) int64 { return off + int64(r.Siz) } -func Setaddr(ctxt *Link, s *LSym, off int64, t *LSym) int64 { - return Setaddrplus(ctxt, s, off, t, 0) +func setaddr(ctxt *Link, s *LSym, off int64, t *LSym) int64 { + return setaddrplus(ctxt, s, off, t, 0) } -func Addsize(ctxt *Link, s *LSym, t *LSym) int64 { +func addsize(ctxt *Link, s *LSym, t *LSym) int64 { var i int64 var r *Reloc @@ -270,7 +270,7 @@ func Addsize(ctxt *Link, s *LSym, t *LSym) int64 { return i + int64(r.Siz) } -func Addaddrplus4(ctxt *Link, s *LSym, t *LSym, add int64) int64 { +func addaddrplus4(ctxt *Link, s *LSym, t *LSym, add int64) int64 { var i int64 var r *Reloc diff --git a/src/cmd/internal/obj/go.go b/src/cmd/internal/obj/go.go index 3c176342ca..1bd10fcab8 100644 --- a/src/cmd/internal/obj/go.go +++ b/src/cmd/internal/obj/go.go @@ -17,8 +17,6 @@ var Framepointer_enabled int var Fieldtrack_enabled int -var Zprog Prog - // Toolchain experiments. // These are controlled by the GOEXPERIMENT environment // variable recorded when the toolchain is built. @@ -72,11 +70,11 @@ func double2ieee(ieee *uint64, f float64) { func Nopout(p *Prog) { p.As = ANOP - p.Scond = Zprog.Scond - p.From = Zprog.From - p.From3 = Zprog.From3 - p.Reg = Zprog.Reg - p.To = Zprog.To + p.Scond = 0 + p.From = Addr{} + p.From3 = Addr{} + p.Reg = 0 + p.To = Addr{} } func Nocache(p *Prog) { diff --git a/src/cmd/internal/obj/i386/asm8.go b/src/cmd/internal/obj/i386/asm8.go index b176d50af5..97d4012c0d 100644 --- a/src/cmd/internal/obj/i386/asm8.go +++ b/src/cmd/internal/obj/i386/asm8.go @@ -1853,7 +1853,7 @@ func span8(ctxt *obj.Link, s *obj.LSym) { ctxt.Diag("span must be looping") log.Fatalf("bad code") } - if !(loop != 0) { + if loop == 0 { break } } @@ -3355,7 +3355,7 @@ found: case Zlit: for ; ; z++ { op = int(o.op[z]) - if !(op != 0) { + if op == 0 { break } ctxt.Andptr[0] = byte(op) @@ -3365,7 +3365,7 @@ found: case Zlitm_r: for ; ; z++ { op = int(o.op[z]) - if !(op != 0) { + if op == 0 { break } ctxt.Andptr[0] = byte(op) @@ -3400,7 +3400,7 @@ found: tmp2 := z z++ op = int(o.op[tmp2]) - if !(op != 0) { + if op == 0 { break } ctxt.Andptr[0] = byte(op) diff --git a/src/cmd/internal/obj/i386/obj8.go b/src/cmd/internal/obj/i386/obj8.go index f833a9af52..ffb7524aa3 100644 --- a/src/cmd/internal/obj/i386/obj8.go +++ b/src/cmd/internal/obj/i386/obj8.go @@ -38,16 +38,16 @@ import ( "math" ) -func canuselocaltls(ctxt *obj.Link) int { +func canuselocaltls(ctxt *obj.Link) bool { switch ctxt.Headtype { case obj.Hlinux, obj.Hnacl, obj.Hplan9, obj.Hwindows: - return 0 + return false } - return 1 + return true } func progedit(ctxt *obj.Link, p *obj.Prog) { @@ -56,7 +56,7 @@ func progedit(ctxt *obj.Link, p *obj.Prog) { var q *obj.Prog // See obj6.c for discussion of TLS. - if canuselocaltls(ctxt) != 0 { + if canuselocaltls(ctxt) { // Reduce TLS initial exec model to TLS local exec model. // Sequences like // MOVL TLS, BX @@ -261,13 +261,13 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { q = nil - if !(p.From3.Offset&obj.NOSPLIT != 0) || (p.From3.Offset&obj.WRAPPER != 0) { + if p.From3.Offset&obj.NOSPLIT == 0 || (p.From3.Offset&obj.WRAPPER != 0) { p = obj.Appendp(ctxt, p) p = load_g_cx(ctxt, p) // load g into CX } - if !(cursym.Text.From3.Offset&obj.NOSPLIT != 0) { - p = stacksplit(ctxt, p, autoffset, bool2int(!(cursym.Text.From3.Offset&obj.NEEDCTXT != 0)), &q) // emit split check + if cursym.Text.From3.Offset&obj.NOSPLIT == 0 { + p = stacksplit(ctxt, p, autoffset, cursym.Text.From3.Offset&obj.NEEDCTXT == 0, &q) // emit split check } if autoffset != 0 { @@ -367,7 +367,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { p2.Pcond = p } - if ctxt.Debugzerostack != 0 && autoffset != 0 && !(cursym.Text.From3.Offset&obj.NOSPLIT != 0) { + if ctxt.Debugzerostack != 0 && autoffset != 0 && cursym.Text.From3.Offset&obj.NOSPLIT == 0 { // 8l -Z means zero the stack frame on entry. // This slows down function calls but can help avoid // false positives in garbage collection. @@ -507,7 +507,7 @@ func load_g_cx(ctxt *obj.Link, p *obj.Prog) *obj.Prog { // Returns last new instruction. // On return, *jmpok is the instruction that should jump // to the stack frame allocation if no split is needed. -func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt int, jmpok **obj.Prog) *obj.Prog { +func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool, jmpok **obj.Prog) *obj.Prog { var q *obj.Prog var q1 *obj.Prog @@ -659,7 +659,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt int, jmpok if ctxt.Cursym.Cfunc != 0 { p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0) } else { - p.To.Sym = ctxt.Symmorestack[noctxt] + p.To.Sym = ctxt.Symmorestack[bool2int(noctxt)] } p = obj.Appendp(ctxt, p) @@ -684,27 +684,27 @@ func follow(ctxt *obj.Link, s *obj.LSym) { ctxt.Cursym = s - firstp = new(obj.Prog) + firstp = ctxt.NewProg() lastp = firstp xfol(ctxt, s.Text, &lastp) lastp.Link = nil s.Text = firstp.Link } -func nofollow(a int) int { +func nofollow(a int) bool { switch a { case obj.AJMP, obj.ARET, AIRETL, AIRETW, obj.AUNDEF: - return 1 + return true } - return 0 + return false } -func pushpop(a int) int { +func pushpop(a int) bool { switch a { case APUSHL, APUSHFL, @@ -714,10 +714,10 @@ func pushpop(a int) int { APOPFL, APOPW, APOPFW: - return 1 + return true } - return 0 + return false } func relinv(a int) int { @@ -802,7 +802,7 @@ loop: continue } - if nofollow(a) != 0 || pushpop(a) != 0 { + if nofollow(a) || pushpop(a) { break // NOTE(rsc): arm does goto copy } if q.Pcond == nil || q.Pcond.Mark != 0 { @@ -839,7 +839,7 @@ loop: /* */ } } - q = new(obj.Prog) + q = ctxt.NewProg() q.As = obj.AJMP q.Lineno = p.Lineno q.To.Type = obj.TYPE_BRANCH @@ -856,7 +856,7 @@ loop: a = int(p.As) /* continue loop with what comes after p */ - if nofollow(a) != 0 { + if nofollow(a) { return } if p.Pcond != nil && a != obj.ACALL { diff --git a/src/cmd/internal/obj/ld.go b/src/cmd/internal/obj/ld.go index a53c8676e6..99cf64a3ed 100644 --- a/src/cmd/internal/obj/ld.go +++ b/src/cmd/internal/obj/ld.go @@ -31,50 +31,6 @@ package obj -import ( - "fmt" - "os" - "path" - "strings" -) - -func addlib(ctxt *Link, src, obj, pathname string) { - name := path.Clean(pathname) - - // runtime.a -> runtime - short := strings.TrimSuffix(name, ".a") - - // already loaded? - for i := range ctxt.Library { - if ctxt.Library[i].Pkg == short { - return - } - } - - var pname string - // runtime -> runtime.a for search - if (!(ctxt.Windows != 0) && name[0] == '/') || (ctxt.Windows != 0 && name[1] == ':') { - pname = name - } else { - // try dot, -L "libdir", and then goroot. - for _, dir := range ctxt.Libdir { - pname = dir + "/" + name - if _, err := os.Stat(pname); !os.IsNotExist(err) { - break - } - } - } - pname = path.Clean(pname) - - // runtime.a -> runtime - pname = strings.TrimSuffix(pname, ".a") - - if ctxt.Debugvlog > 1 && ctxt.Bso != nil { - fmt.Fprintf(ctxt.Bso, "%5.2f addlib: %s %s pulls in %s\n", Cputime(), obj, src, pname) - } - Addlibpath(ctxt, src, obj, pname, name) -} - /* * add library to library list. * srcref: src file referring to package @@ -82,24 +38,6 @@ func addlib(ctxt *Link, src, obj, pathname string) { * file: object file, e.g., /home/rsc/go/pkg/container/vector.a * pkg: package import path, e.g. container/vector */ -func Addlibpath(ctxt *Link, srcref, objref, file, pkg string) { - for _, lib := range ctxt.Library { - if lib.File == file { - return - } - } - - if ctxt.Debugvlog > 1 && ctxt.Bso != nil { - fmt.Fprintf(ctxt.Bso, "%5.2f addlibpath: srcref: %s objref: %s file: %s pkg: %s\n", Cputime(), srcref, objref, file, pkg) - } - - ctxt.Library = append(ctxt.Library, Library{ - Objref: objref, - Srcref: srcref, - File: file, - Pkg: pkg, - }) -} const ( LOG = 5 diff --git a/src/cmd/internal/obj/link.go b/src/cmd/internal/obj/link.go index d256fbbb18..7daf12e8f2 100644 --- a/src/cmd/internal/obj/link.go +++ b/src/cmd/internal/obj/link.go @@ -280,14 +280,14 @@ type Pcdata struct { } type Pciter struct { - D Pcdata - P []byte - Pc uint32 - Nextpc uint32 - Pcscale uint32 - Value int32 - Start int - Done int + d Pcdata + p []byte + pc uint32 + nextpc uint32 + pcscale uint32 + value int32 + start int + done int } // An Addr is an argument to an instruction. diff --git a/src/cmd/internal/obj/objfile.go b/src/cmd/internal/obj/objfile.go index 7e4482ccf6..b15bd007af 100644 --- a/src/cmd/internal/obj/objfile.go +++ b/src/cmd/internal/obj/objfile.go @@ -188,7 +188,7 @@ func Writeobjdirect(ctxt *Link, b *Biobuf) { } } - if !(found != 0) { + if found == 0 { p = Appendp(ctxt, s.Text) p.As = AFUNCDATA p.From.Type = TYPE_CONST diff --git a/src/cmd/internal/obj/pcln.go b/src/cmd/internal/obj/pcln.go index 746ca2dd8d..f5cdd3a099 100644 --- a/src/cmd/internal/obj/pcln.go +++ b/src/cmd/internal/obj/pcln.go @@ -307,7 +307,7 @@ func getvarint(pp *[]byte) uint32 { v |= uint32(p[0]&0x7F) << uint(shift) tmp7 := p p = p[1:] - if !(tmp7[0]&0x80 != 0) { + if tmp7[0]&0x80 == 0 { break } } @@ -316,45 +316,45 @@ func getvarint(pp *[]byte) uint32 { return v } -func Pciternext(it *Pciter) { +func pciternext(it *Pciter) { var v uint32 var dv int32 - it.Pc = it.Nextpc - if it.Done != 0 { + it.pc = it.nextpc + if it.done != 0 { return } - if -cap(it.P) >= -cap(it.D.P[len(it.D.P):]) { - it.Done = 1 + if -cap(it.p) >= -cap(it.d.P[len(it.d.P):]) { + it.done = 1 return } // value delta - v = getvarint(&it.P) + v = getvarint(&it.p) - if v == 0 && !(it.Start != 0) { - it.Done = 1 + if v == 0 && it.start == 0 { + it.done = 1 return } - it.Start = 0 + it.start = 0 dv = int32(v>>1) ^ (int32(v<<31) >> 31) - it.Value += dv + it.value += dv // pc delta - v = getvarint(&it.P) + v = getvarint(&it.p) - it.Nextpc = it.Pc + v*it.Pcscale + it.nextpc = it.pc + v*it.pcscale } -func Pciterinit(ctxt *Link, it *Pciter, d *Pcdata) { - it.D = *d - it.P = it.D.P - it.Pc = 0 - it.Nextpc = 0 - it.Value = -1 - it.Start = 1 - it.Done = 0 - it.Pcscale = uint32(ctxt.Arch.Minlc) - Pciternext(it) +func pciterinit(ctxt *Link, it *Pciter, d *Pcdata) { + it.d = *d + it.p = it.d.P + it.pc = 0 + it.nextpc = 0 + it.value = -1 + it.start = 1 + it.done = 0 + it.pcscale = uint32(ctxt.Arch.Minlc) + pciternext(it) } diff --git a/src/cmd/internal/obj/ppc64/asm9.go b/src/cmd/internal/obj/ppc64/asm9.go index 1433710944..a4e46be9e2 100644 --- a/src/cmd/internal/obj/ppc64/asm9.go +++ b/src/cmd/internal/obj/ppc64/asm9.go @@ -470,16 +470,14 @@ func span9(ctxt *obj.Link, cursym *obj.LSym) { if (o.type_ == 16 || o.type_ == 17) && p.Pcond != nil { otxt = p.Pcond.Pc - c if otxt < -(1<<15)+10 || otxt >= (1<<15)-10 { - q = new(obj.Prog) - q.Ctxt = p.Ctxt + q = ctxt.NewProg() q.Link = p.Link p.Link = q q.As = ABR q.To.Type = obj.TYPE_BRANCH q.Pcond = p.Pcond p.Pcond = q - q = new(obj.Prog) - q.Ctxt = p.Ctxt + q = ctxt.NewProg() q.Link = p.Link p.Link = q q.As = ABR @@ -534,12 +532,12 @@ func span9(ctxt *obj.Link, cursym *obj.LSym) { } } -func isint32(v int64) int { - return bool2int(int64(int32(v)) == v) +func isint32(v int64) bool { + return int64(int32(v)) == v } -func isuint32(v uint64) int { - return bool2int(uint64(uint32(v)) == v) +func isuint32(v uint64) bool { + return uint64(uint32(v)) == v } func aclass(ctxt *obj.Link, a *obj.Addr) int { @@ -637,7 +635,7 @@ func aclass(ctxt *obj.Link, a *obj.Addr) int { if -BIG <= ctxt.Instoffset && ctxt.Instoffset <= BIG { return C_SACON } - if isint32(ctxt.Instoffset) != 0 { + if isint32(ctxt.Instoffset) { return C_LACON } return C_DACON @@ -689,10 +687,10 @@ func aclass(ctxt *obj.Link, a *obj.Addr) int { if ctxt.Instoffset <= 0xffff { return C_ANDCON } - if ctxt.Instoffset&0xffff == 0 && isuint32(uint64(ctxt.Instoffset)) != 0 { /* && (instoffset & (1<<31)) == 0) */ + if ctxt.Instoffset&0xffff == 0 && isuint32(uint64(ctxt.Instoffset)) { /* && (instoffset & (1<<31)) == 0) */ return C_UCON } - if isint32(ctxt.Instoffset) != 0 || isuint32(uint64(ctxt.Instoffset)) != 0 { + if isint32(ctxt.Instoffset) || isuint32(uint64(ctxt.Instoffset)) { return C_LCON } return C_DCON @@ -701,10 +699,10 @@ func aclass(ctxt *obj.Link, a *obj.Addr) int { if ctxt.Instoffset >= -0x8000 { return C_ADDCON } - if ctxt.Instoffset&0xffff == 0 && isint32(ctxt.Instoffset) != 0 { + if ctxt.Instoffset&0xffff == 0 && isint32(ctxt.Instoffset) { return C_UCON } - if isint32(ctxt.Instoffset) != 0 { + if isint32(ctxt.Instoffset) { return C_LCON } return C_DCON @@ -1407,20 +1405,20 @@ func addaddrreloc(ctxt *obj.Link, s *obj.LSym, o1 *uint32, o2 *uint32) { /* * 32-bit masks */ -func getmask(m []byte, v uint32) int { +func getmask(m []byte, v uint32) bool { var i int m[1] = 0 m[0] = m[1] if v != ^uint32(0) && v&(1<<31) != 0 && v&1 != 0 { /* MB > ME */ - if getmask(m, ^v) != 0 { + if getmask(m, ^v) { i = int(m[0]) m[0] = m[1] + 1 m[1] = byte(i - 1) - return 1 + return true } - return 0 + return false } for i = 0; i < 32; i++ { @@ -1429,25 +1427,25 @@ func getmask(m []byte, v uint32) int { for { m[1] = byte(i) i++ - if !(i < 32 && v&(1<= 32 || v&(1<= 64 || v&(uint64(1)<> 16) - if isuint32(uint64(d)) != 0 { + if isuint32(uint64(d)) { return LOP_IRR(OP_ORIS, uint32(r), REGZERO, uint32(v)) } return AOP_IRR(OP_ADDIS, uint32(r), REGZERO, uint32(v)) @@ -1574,7 +1572,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { log.Fatalf("invalid handling of %v", p) } v >>= 16 - if r == REGZERO && isuint32(uint64(d)) != 0 { + if r == REGZERO && isuint32(uint64(d)) { o1 = LOP_IRR(OP_ORIS, uint32(p.To.Reg), REGZERO, uint32(v)) break } @@ -1862,7 +1860,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { if r == 0 { r = int(p.To.Reg) } - if p.As == AADD && (!(r0iszero != 0 /*TypeKind(100016)*/) && p.Reg == 0 || r0iszero != 0 /*TypeKind(100016)*/ && p.To.Reg == 0) { + if p.As == AADD && (r0iszero == 0 /*TypeKind(100016)*/ && p.Reg == 0 || r0iszero != 0 /*TypeKind(100016)*/ && p.To.Reg == 0) { ctxt.Diag("literal operation on R0\n%v", p) } o1 = AOP_IRR(uint32(opirr(ctxt, int(p.As)+ALAST)), uint32(p.To.Reg), uint32(r), uint32(v)>>16) diff --git a/src/cmd/internal/obj/ppc64/obj9.go b/src/cmd/internal/obj/ppc64/obj9.go index 4675a9e7b0..7524674dd8 100644 --- a/src/cmd/internal/obj/ppc64/obj9.go +++ b/src/cmd/internal/obj/ppc64/obj9.go @@ -289,7 +289,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { p.Pcond = q1 } - if !(q1.Mark&LEAF != 0) { + if q1.Mark&LEAF == 0 { q1.Mark |= LABEL } } else { @@ -341,15 +341,15 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { } p.To.Offset = int64(autosize) - 8 - if !(p.From3.Offset&obj.NOSPLIT != 0) { - p = stacksplit(ctxt, p, autosize, bool2int(!(cursym.Text.From3.Offset&obj.NEEDCTXT != 0))) // emit split check + if p.From3.Offset&obj.NOSPLIT == 0 { + p = stacksplit(ctxt, p, autosize, cursym.Text.From3.Offset&obj.NEEDCTXT == 0) // emit split check } q = p if autosize != 0 { /* use MOVDU to adjust R1 when saving R31, if autosize is small */ - if !(cursym.Text.Mark&LEAF != 0) && autosize >= -BIG && autosize <= BIG { + if cursym.Text.Mark&LEAF == 0 && autosize >= -BIG && autosize <= BIG { mov = AMOVDU aoffset = int(-autosize) } else { @@ -362,7 +362,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { q.To.Reg = REGSP q.Spadj = +autosize } - } else if !(cursym.Text.Mark&LEAF != 0) { + } else if cursym.Text.Mark&LEAF == 0 { if ctxt.Debugvlog != 0 { fmt.Fprintf(ctxt.Bso, "save suppressed in: %s\n", cursym.Name) obj.Bflush(ctxt.Bso) @@ -499,9 +499,9 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { } if cursym.Text.Mark&LEAF != 0 { - if !(autosize != 0) { + if autosize == 0 { p.As = ABR - p.From = obj.Zprog.From + p.From = obj.Addr{} p.To.Type = obj.TYPE_REG p.To.Reg = REG_LR p.Mark |= BRANCH @@ -515,7 +515,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { p.To.Reg = REGSP p.Spadj = -autosize - q = p.Ctxt.NewProg() + q = ctxt.NewProg() q.As = ABR q.Lineno = p.Lineno q.To.Type = obj.TYPE_REG @@ -535,7 +535,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { p.To.Type = obj.TYPE_REG p.To.Reg = REGTMP - q = p.Ctxt.NewProg() + q = ctxt.NewProg() q.As = AMOVD q.Lineno = p.Lineno q.From.Type = obj.TYPE_REG @@ -549,7 +549,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { if false { // Debug bad returns - q = p.Ctxt.NewProg() + q = ctxt.NewProg() q.As = AMOVD q.Lineno = p.Lineno q.From.Type = obj.TYPE_MEM @@ -564,7 +564,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { } if autosize != 0 { - q = p.Ctxt.NewProg() + q = ctxt.NewProg() q.As = AADD q.Lineno = p.Lineno q.From.Type = obj.TYPE_CONST @@ -577,7 +577,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { p.Link = q } - q1 = p.Ctxt.NewProg() + q1 = ctxt.NewProg() q1.As = ABR q1.Lineno = p.Lineno q1.To.Type = obj.TYPE_REG @@ -641,7 +641,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { q = p; } */ -func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt int) *obj.Prog { +func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj.Prog { var q *obj.Prog var q1 *obj.Prog @@ -774,7 +774,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt int) *obj.P if ctxt.Cursym.Cfunc != 0 { p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0) } else { - p.To.Sym = ctxt.Symmorestack[noctxt] + p.To.Sym = ctxt.Symmorestack[bool2int(noctxt)] } // BR start @@ -799,7 +799,7 @@ func follow(ctxt *obj.Link, s *obj.LSym) { ctxt.Cursym = s - firstp = new(obj.Prog) + firstp = ctxt.NewProg() lastp = firstp xfol(ctxt, s.Text, &lastp) lastp.Link = nil @@ -853,7 +853,7 @@ loop: p = p.Link xfol(ctxt, p, last) p = q - if p != nil && !(p.Mark&FOLL != 0) { + if p != nil && p.Mark&FOLL == 0 { goto loop } return @@ -862,7 +862,7 @@ loop: if q != nil { p.Mark |= FOLL p = q - if !(p.Mark&FOLL != 0) { + if p.Mark&FOLL == 0 { goto loop } } @@ -885,19 +885,19 @@ loop: if a == ABR || a == ARETURN || a == ARFI || a == ARFCI || a == ARFID || a == AHRFID { goto copy } - if !(q.Pcond != nil) || (q.Pcond.Mark&FOLL != 0) { + if q.Pcond == nil || (q.Pcond.Mark&FOLL != 0) { continue } b = relinv(a) - if !(b != 0) { + if b == 0 { continue } copy: for { - r = new(obj.Prog) + r = ctxt.NewProg() *r = *p - if !(r.Mark&FOLL != 0) { + if r.Mark&FOLL == 0 { fmt.Printf("cant happen 1\n") } r.Mark |= FOLL @@ -916,10 +916,10 @@ loop: r.As = int16(b) r.Pcond = p.Link r.Link = p.Pcond - if !(r.Link.Mark&FOLL != 0) { + if r.Link.Mark&FOLL == 0 { xfol(ctxt, r.Link, last) } - if !(r.Pcond.Mark&FOLL != 0) { + if r.Pcond.Mark&FOLL == 0 { fmt.Printf("cant happen 2\n") } return @@ -927,7 +927,7 @@ loop: } a = ABR - q = p.Ctxt.NewProg() + q = ctxt.NewProg() q.As = int16(a) q.Lineno = p.Lineno q.To.Type = obj.TYPE_BRANCH diff --git a/src/cmd/internal/obj/sym.go b/src/cmd/internal/obj/sym.go index e1ba5de023..30d0eb1751 100644 --- a/src/cmd/internal/obj/sym.go +++ b/src/cmd/internal/obj/sym.go @@ -100,7 +100,7 @@ var headers = []struct { }{"windowsgui", Hwindows}, } -func Headtype(name string) int { +func headtype(name string) int { var i int for i = 0; i < len(headers); i++ { @@ -146,7 +146,7 @@ func Linknew(arch *LinkArch) *Link { ctxt.Pathname = buf - ctxt.Headtype = Headtype(Getgoos()) + ctxt.Headtype = headtype(Getgoos()) if ctxt.Headtype < 0 { log.Fatalf("unknown goos %s", Getgoos()) } @@ -222,7 +222,7 @@ func Linknew(arch *LinkArch) *Link { return ctxt } -func Linknewsym(ctxt *Link, symb string, v int) *LSym { +func linknewsym(ctxt *Link, symb string, v int) *LSym { var s *LSym s = new(LSym) @@ -261,11 +261,11 @@ func _lookup(ctxt *Link, symb string, v int, creat int) *LSym { return s } } - if !(creat != 0) { + if creat == 0 { 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 @@ -278,7 +278,7 @@ func Linklookup(ctxt *Link, name string, v int) *LSym { } // read-only lookup -func Linkrlookup(ctxt *Link, name string, v int) *LSym { +func linkrlookup(ctxt *Link, name string, v int) *LSym { return _lookup(ctxt, name, v, 0) } diff --git a/src/cmd/internal/obj/x86/asm6.go b/src/cmd/internal/obj/x86/asm6.go index 1d86d46cee..3c1213e9c3 100644 --- a/src/cmd/internal/obj/x86/asm6.go +++ b/src/cmd/internal/obj/x86/asm6.go @@ -2118,9 +2118,9 @@ var opindex [ALAST + 1]*Optab // It does not seem to be necessary for any other systems. This is probably working // around a Solaris-specific bug that should be fixed differently, but we don't know // what that bug is. And this does fix it. -func isextern(s *obj.LSym) int { +func isextern(s *obj.LSym) bool { // All the Solaris dynamic imports from libc.so begin with "libc_". - return bool2int(strings.HasPrefix(s.Name, "libc_")) + return strings.HasPrefix(s.Name, "libc_") } // single-instruction no-ops of various lengths. @@ -2348,7 +2348,7 @@ func span6(ctxt *obj.Link, s *obj.LSym) { ctxt.Diag("span must be looping") log.Fatalf("loop") } - if !(loop != 0) { + if loop == 0 { break } } @@ -2589,7 +2589,7 @@ func oclass(ctxt *obj.Link, p *obj.Prog, a *obj.Addr) int { switch a.Name { case obj.NAME_EXTERN, obj.NAME_STATIC: - if a.Sym != nil && isextern(a.Sym) != 0 { + if a.Sym != nil && isextern(a.Sym) { return Yi32 } return Yiauto // use pc-relative addressing @@ -2997,7 +2997,7 @@ func vaddr(ctxt *obj.Link, p *obj.Prog, a *obj.Addr, r *obj.Reloc) int64 { log.Fatalf("reloc") } - if isextern(s) != 0 { + if isextern(s) { r.Siz = 4 r.Type = obj.R_ADDR } else { @@ -3074,7 +3074,7 @@ func asmandsz(ctxt *obj.Link, p *obj.Prog, a *obj.Addr, r int, rex int, m64 int) switch a.Name { case obj.NAME_EXTERN, obj.NAME_STATIC: - if !(isextern(a.Sym) != 0) { + if !isextern(a.Sym) { goto bad } base = REG_NONE @@ -3136,7 +3136,7 @@ func asmandsz(ctxt *obj.Link, p *obj.Prog, a *obj.Addr, r int, rex int, m64 int) ctxt.Rexflag |= regrex[base]&Rxb | rex if base == REG_NONE || (REG_CS <= base && base <= REG_GS) || base == REG_TLS { - if (a.Sym == nil || !(isextern(a.Sym) != 0)) && base == REG_NONE && (a.Name == obj.NAME_STATIC || a.Name == obj.NAME_EXTERN) || ctxt.Asmode != 64 { + if (a.Sym == nil || !isextern(a.Sym)) && base == REG_NONE && (a.Name == obj.NAME_STATIC || a.Name == obj.NAME_EXTERN) || ctxt.Asmode != 64 { ctxt.Andptr[0] = byte(0<<6 | 5<<0 | r<<3) ctxt.Andptr = ctxt.Andptr[1:] goto putrelv @@ -3370,18 +3370,18 @@ var ymovtab = []Movtab{ Movtab{0, 0, 0, 0, [4]uint8{}}, } -func isax(a *obj.Addr) int { +func isax(a *obj.Addr) bool { switch a.Reg { case REG_AX, REG_AL, REG_AH: - return 1 + return true } if a.Index == REG_AX { - return 1 + return true } - return 0 + return false } func subreg(p *obj.Prog, from int, to int) { @@ -3587,7 +3587,7 @@ found: case Zlit: for ; ; z++ { op = int(o.op[z]) - if !(op != 0) { + if op == 0 { break } ctxt.Andptr[0] = byte(op) @@ -3597,7 +3597,7 @@ found: case Zlitm_r: for ; ; z++ { op = int(o.op[z]) - if !(op != 0) { + if op == 0 { break } ctxt.Andptr[0] = byte(op) @@ -3652,7 +3652,7 @@ found: tmp1 := z z++ op = int(o.op[tmp1]) - if !(op != 0) { + if op == 0 { break } ctxt.Andptr[0] = byte(op) @@ -4097,7 +4097,7 @@ bad: z = int(p.From.Reg) if p.From.Type == obj.TYPE_REG && z >= REG_BP && z <= REG_DI { - if isax(&p.To) != 0 || p.To.Type == obj.TYPE_NONE { + if isax(&p.To) || p.To.Type == obj.TYPE_NONE { // We certainly don't want to exchange // with AX if the op is MUL or DIV. ctxt.Andptr[0] = 0x87 @@ -4122,7 +4122,7 @@ bad: z = int(p.To.Reg) if p.To.Type == obj.TYPE_REG && z >= REG_BP && z <= REG_DI { - if isax(&p.From) != 0 { + if isax(&p.From) { ctxt.Andptr[0] = 0x87 ctxt.Andptr = ctxt.Andptr[1:] /* xchg rhs,bx */ asmando(ctxt, p, &p.To, reg[REG_BX]) diff --git a/src/cmd/internal/obj/x86/obj6.go b/src/cmd/internal/obj/x86/obj6.go index c1ad6b7a42..0dc4c3a57e 100644 --- a/src/cmd/internal/obj/x86/obj6.go +++ b/src/cmd/internal/obj/x86/obj6.go @@ -38,14 +38,14 @@ import ( "math" ) -func canuselocaltls(ctxt *obj.Link) int { +func canuselocaltls(ctxt *obj.Link) bool { switch ctxt.Headtype { case obj.Hplan9, obj.Hwindows: - return 0 + return false } - return 1 + return true } func progedit(ctxt *obj.Link, p *obj.Prog) { @@ -86,7 +86,7 @@ func progedit(ctxt *obj.Link, p *obj.Prog) { // access TLS, and they are rewritten appropriately first here in // liblink and then finally using relocations in the linker. - if canuselocaltls(ctxt) != 0 { + if canuselocaltls(ctxt) { // Reduce TLS initial exec model to TLS local exec model. // Sequences like // MOVQ TLS, BX @@ -366,7 +366,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { cursym.Args = int32(textarg) cursym.Locals = int32(p.To.Offset) - if autoffset < obj.StackSmall && !(p.From3.Offset&obj.NOSPLIT != 0) { + if autoffset < obj.StackSmall && p.From3.Offset&obj.NOSPLIT == 0 { for q = p; q != nil; q = q.Link { if q.As == obj.ACALL { goto noleaf @@ -381,13 +381,13 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { } q = nil - if !(p.From3.Offset&obj.NOSPLIT != 0) || (p.From3.Offset&obj.WRAPPER != 0) { + if p.From3.Offset&obj.NOSPLIT == 0 || (p.From3.Offset&obj.WRAPPER != 0) { p = obj.Appendp(ctxt, p) p = load_g_cx(ctxt, p) // load g into CX } - if !(cursym.Text.From3.Offset&obj.NOSPLIT != 0) { - p = stacksplit(ctxt, p, autoffset, int32(textarg), bool2int(!(cursym.Text.From3.Offset&obj.NEEDCTXT != 0)), &q) // emit split check + if cursym.Text.From3.Offset&obj.NOSPLIT == 0 { + p = stacksplit(ctxt, p, autoffset, int32(textarg), cursym.Text.From3.Offset&obj.NEEDCTXT == 0, &q) // emit split check } if autoffset != 0 { @@ -540,7 +540,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { p2.Pcond = p } - if ctxt.Debugzerostack != 0 && autoffset != 0 && !(cursym.Text.From3.Offset&obj.NOSPLIT != 0) { + if ctxt.Debugzerostack != 0 && autoffset != 0 && cursym.Text.From3.Offset&obj.NOSPLIT == 0 { // 6l -Z means zero the stack frame on entry. // This slows down function calls but can help avoid // false positives in garbage collection. @@ -722,7 +722,7 @@ func load_g_cx(ctxt *obj.Link, p *obj.Prog) *obj.Prog { // Returns last new instruction. // On return, *jmpok is the instruction that should jump // to the stack frame allocation if no split is needed. -func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, textarg int32, noctxt int, jmpok **obj.Prog) *obj.Prog { +func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, textarg int32, noctxt bool, jmpok **obj.Prog) *obj.Prog { var q *obj.Prog var q1 *obj.Prog var cmp int @@ -853,7 +853,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, textarg int32, noc if ctxt.Cursym.Cfunc != 0 { p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0) } else { - p.To.Sym = ctxt.Symmorestack[noctxt] + p.To.Sym = ctxt.Symmorestack[bool2int(noctxt)] } p = obj.Appendp(ctxt, p) @@ -878,14 +878,14 @@ func follow(ctxt *obj.Link, s *obj.LSym) { ctxt.Cursym = s - firstp = new(obj.Prog) + firstp = ctxt.NewProg() lastp = firstp xfol(ctxt, s.Text, &lastp) lastp.Link = nil s.Text = firstp.Link } -func nofollow(a int) int { +func nofollow(a int) bool { switch a { case obj.AJMP, obj.ARET, @@ -896,13 +896,13 @@ func nofollow(a int) int { ARETFQ, ARETFW, obj.AUNDEF: - return 1 + return true } - return 0 + return false } -func pushpop(a int) int { +func pushpop(a int) bool { switch a { case APUSHL, APUSHFL, @@ -916,10 +916,10 @@ func pushpop(a int) int { APOPFQ, APOPW, APOPFW: - return 1 + return true } - return 0 + return false } func relinv(a int) int { @@ -1004,7 +1004,7 @@ loop: continue } - if nofollow(a) != 0 || pushpop(a) != 0 { + if nofollow(a) || pushpop(a) { break // NOTE(rsc): arm does goto copy } if q.Pcond == nil || q.Pcond.Mark != 0 { @@ -1041,7 +1041,7 @@ loop: /* */ } } - q = new(obj.Prog) + q = ctxt.NewProg() q.As = obj.AJMP q.Lineno = p.Lineno q.To.Type = obj.TYPE_BRANCH @@ -1058,7 +1058,7 @@ loop: a = int(p.As) /* continue loop with what comes after p */ - if nofollow(a) != 0 { + if nofollow(a) { return } if p.Pcond != nil && a != obj.ACALL { -- cgit v1.3