Commit ac1cdd13 authored by Michael Hudson-Doyle's avatar Michael Hudson-Doyle Committed by Ian Lance Taylor

cmd/5g, etc, cmd/internal/gc, cmd/internal/obj, etc: coalesce bool2int implementations

There were 10 implementations of the trivial bool2int function, 9 of which
were the only thing in their file.  Remove all of them in favor of one in
cmd/internal/obj.

Change-Id: I9c51d30716239df51186860b9842a5e9b27264d3
Reviewed-on: https://go-review.googlesource.com/9230Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
parent 67783935
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
...@@ -447,7 +447,7 @@ func intLiteral(n *gc.Node) (x int64, ok bool) { ...@@ -447,7 +447,7 @@ func intLiteral(n *gc.Node) (x int64, ok bool) {
case gc.CTINT, gc.CTRUNE: case gc.CTINT, gc.CTRUNE:
return gc.Mpgetfix(n.Val.U.Xval), true return gc.Mpgetfix(n.Val.U.Xval), true
case gc.CTBOOL: case gc.CTBOOL:
return int64(bool2int(n.Val.U.Bval)), true return int64(obj.Bool2int(n.Val.U.Bval)), true
} }
return return
} }
......
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
...@@ -526,7 +526,7 @@ func intLiteral(n *gc.Node) (x int64, ok bool) { ...@@ -526,7 +526,7 @@ func intLiteral(n *gc.Node) (x int64, ok bool) {
case gc.CTINT, gc.CTRUNE: case gc.CTINT, gc.CTRUNE:
return gc.Mpgetfix(n.Val.U.Xval), true return gc.Mpgetfix(n.Val.U.Xval), true
case gc.CTBOOL: case gc.CTBOOL:
return int64(bool2int(n.Val.U.Bval)), true return int64(obj.Bool2int(n.Val.U.Bval)), true
} }
return return
} }
......
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
...@@ -1417,7 +1417,7 @@ func Convconst(con *Node, t *Type, val *Val) { ...@@ -1417,7 +1417,7 @@ func Convconst(con *Node, t *Type, val *Val) {
i = Mpgetfix(val.U.Xval) i = Mpgetfix(val.U.Xval)
case CTBOOL: case CTBOOL:
i = int64(bool2int(val.U.Bval)) i = int64(obj.Bool2int(val.U.Bval))
case CTNIL: case CTNIL:
i = 0 i = 0
......
...@@ -87,7 +87,7 @@ func Gbranch(as int, t *Type, likely int) *obj.Prog { ...@@ -87,7 +87,7 @@ func Gbranch(as int, t *Type, likely int) *obj.Prog {
p.To.Val = nil p.To.Val = nil
if as != obj.AJMP && likely != 0 && Thearch.Thechar != '9' && Thearch.Thechar != '7' { if as != obj.AJMP && likely != 0 && Thearch.Thechar != '9' && Thearch.Thechar != '7' {
p.From.Type = obj.TYPE_CONST p.From.Type = obj.TYPE_CONST
p.From.Offset = int64(bool2int(likely > 0)) p.From.Offset = int64(obj.Bool2int(likely > 0))
} }
return p return p
...@@ -417,7 +417,7 @@ func Naddr(a *obj.Addr, n *Node) { ...@@ -417,7 +417,7 @@ func Naddr(a *obj.Addr, n *Node) {
case CTBOOL: case CTBOOL:
a.Sym = nil a.Sym = nil
a.Type = obj.TYPE_CONST a.Type = obj.TYPE_CONST
a.Offset = int64(bool2int(n.Val.U.Bval)) a.Offset = int64(obj.Bool2int(n.Val.U.Bval))
case CTNIL: case CTNIL:
a.Sym = nil a.Sym = nil
......
...@@ -191,17 +191,17 @@ func cmpstackvar(a *Node, b *Node) int { ...@@ -191,17 +191,17 @@ func cmpstackvar(a *Node, b *Node) int {
} }
if a.Used != b.Used { if a.Used != b.Used {
return bool2int(b.Used) - bool2int(a.Used) return obj.Bool2int(b.Used) - obj.Bool2int(a.Used)
} }
ap := bool2int(haspointers(a.Type)) ap := obj.Bool2int(haspointers(a.Type))
bp := bool2int(haspointers(b.Type)) bp := obj.Bool2int(haspointers(b.Type))
if ap != bp { if ap != bp {
return bp - ap return bp - ap
} }
ap = bool2int(a.Needzero) ap = obj.Bool2int(a.Needzero)
bp = bool2int(b.Needzero) bp = obj.Bool2int(b.Needzero)
if ap != bp { if ap != bp {
return bp - ap return bp - ap
} }
......
...@@ -678,7 +678,7 @@ func haspointers(t *Type) bool { ...@@ -678,7 +678,7 @@ func haspointers(t *Type) bool {
ret = true ret = true
} }
t.Haspointers = 1 + uint8(bool2int(ret)) t.Haspointers = 1 + uint8(obj.Bool2int(ret))
return ret return ret
} }
...@@ -1066,7 +1066,7 @@ ok: ...@@ -1066,7 +1066,7 @@ ok:
ot = dcommontype(s, ot, t) ot = dcommontype(s, ot, t)
xt = ot - 3*Widthptr xt = ot - 3*Widthptr
ot = duint8(s, ot, uint8(bool2int(isddd))) ot = duint8(s, ot, uint8(obj.Bool2int(isddd)))
// two slice headers: in and out. // two slice headers: in and out.
ot = int(Rnd(int64(ot), int64(Widthptr))) ot = int(Rnd(int64(ot), int64(Widthptr)))
...@@ -1146,7 +1146,7 @@ ok: ...@@ -1146,7 +1146,7 @@ ok:
} }
ot = duint16(s, ot, uint16(mapbucket(t).Width)) ot = duint16(s, ot, uint16(mapbucket(t).Width))
ot = duint8(s, ot, uint8(bool2int(isreflexive(t.Down)))) ot = duint8(s, ot, uint8(obj.Bool2int(isreflexive(t.Down))))
case TPTR32, TPTR64: case TPTR32, TPTR64:
if t.Type.Etype == TANY { if t.Type.Etype == TANY {
......
...@@ -1831,8 +1831,8 @@ OpSwitch: ...@@ -1831,8 +1831,8 @@ OpSwitch:
n.Type = nil n.Type = nil
return return
} }
et := bool2int(checkmake(t, "len", l) < 0) et := obj.Bool2int(checkmake(t, "len", l) < 0)
et |= bool2int(r != nil && checkmake(t, "cap", r) < 0) et |= obj.Bool2int(r != nil && checkmake(t, "cap", r) < 0)
if et != 0 { if et != 0 {
n.Type = nil n.Type = nil
return return
...@@ -2820,12 +2820,12 @@ func keydup(n *Node, hash []*Node) { ...@@ -2820,12 +2820,12 @@ func keydup(n *Node, hash []*Node) {
if Eqtype(a.Left.Type, n.Type) { if Eqtype(a.Left.Type, n.Type) {
cmp.Right = a.Left cmp.Right = a.Left
evconst(&cmp) evconst(&cmp)
b = uint32(bool2int(cmp.Val.U.Bval)) b = uint32(obj.Bool2int(cmp.Val.U.Bval))
} }
} else if Eqtype(a.Type, n.Type) { } else if Eqtype(a.Type, n.Type) {
cmp.Right = a cmp.Right = a
evconst(&cmp) evconst(&cmp)
b = uint32(bool2int(cmp.Val.U.Bval)) b = uint32(obj.Bool2int(cmp.Val.U.Bval))
} }
if b != 0 { if b != 0 {
......
...@@ -8,13 +8,6 @@ import ( ...@@ -8,13 +8,6 @@ import (
"strings" "strings"
) )
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
func (n *Node) Line() string { func (n *Node) Line() string {
return obj.Linklinefmt(Ctxt, int(n.Lineno), false, false) return obj.Linklinefmt(Ctxt, int(n.Lineno), false, false)
} }
......
...@@ -829,7 +829,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj. ...@@ -829,7 +829,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj.
if ctxt.Cursym.Cfunc != 0 { if ctxt.Cursym.Cfunc != 0 {
p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0) p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0)
} else { } else {
p.To.Sym = ctxt.Symmorestack[bool2int(noctxt)] p.To.Sym = ctxt.Symmorestack[obj.Bool2int(noctxt)]
} }
// BLS start // BLS start
......
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package arm
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
...@@ -831,7 +831,7 @@ func regoff(ctxt *obj.Link, a *obj.Addr) uint32 { ...@@ -831,7 +831,7 @@ func regoff(ctxt *obj.Link, a *obj.Addr) uint32 {
func ispcdisp(v int32) int { func ispcdisp(v int32) int {
/* pc-relative addressing will reach? */ /* pc-relative addressing will reach? */
return bool2int(v >= -0xfffff && v <= 0xfffff && (v&3) == 0) return obj.Bool2int(v >= -0xfffff && v <= 0xfffff && (v&3) == 0)
} }
func isaddcon(v int64) int { func isaddcon(v int64) int {
...@@ -842,14 +842,14 @@ func isaddcon(v int64) int { ...@@ -842,14 +842,14 @@ func isaddcon(v int64) int {
if (v & 0xFFF) == 0 { if (v & 0xFFF) == 0 {
v >>= 12 v >>= 12
} }
return bool2int(v <= 0xFFF) return obj.Bool2int(v <= 0xFFF)
} }
func isbitcon(v uint64) int { func isbitcon(v uint64) int {
/* fancy bimm32 or bimm64? */ /* fancy bimm32 or bimm64? */
// TODO(aram): // TODO(aram):
return 0 return 0
// return bool2int(findmask(v) != nil || (v>>32) == 0 && findmask(v|(v<<32)) != nil) // return obj.Bool2int(findmask(v) != nil || (v>>32) == 0 && findmask(v|(v<<32)) != nil)
} }
func autoclass(l int64) int { func autoclass(l int64) int {
...@@ -2188,7 +2188,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { ...@@ -2188,7 +2188,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) {
case 24: /* mov/mvn Rs,Rd -> add $0,Rs,Rd or orr Rs,ZR,Rd */ case 24: /* mov/mvn Rs,Rd -> add $0,Rs,Rd or orr Rs,ZR,Rd */
rf := int(p.From.Reg) rf := int(p.From.Reg)
rt := int(p.To.Reg) rt := int(p.To.Reg)
s := bool2int(rf == REGSP || rt == REGSP) s := obj.Bool2int(rf == REGSP || rt == REGSP)
if p.As == AMVN || p.As == AMVNW { if p.As == AMVN || p.As == AMVNW {
if s != 0 { if s != 0 {
ctxt.Diag("illegal SP reference\n%v", p) ctxt.Diag("illegal SP reference\n%v", p)
......
...@@ -583,7 +583,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { ...@@ -583,7 +583,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
} }
if !(p.From3.Offset&obj.NOSPLIT != 0) { if !(p.From3.Offset&obj.NOSPLIT != 0) {
p = stacksplit(ctxt, p, ctxt.Autosize, bool2int(cursym.Text.From3.Offset&obj.NEEDCTXT == 0)) // emit split check p = stacksplit(ctxt, p, ctxt.Autosize, obj.Bool2int(cursym.Text.From3.Offset&obj.NEEDCTXT == 0)) // emit split check
} }
aoffset = ctxt.Autosize aoffset = ctxt.Autosize
......
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package arm64
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
...@@ -758,7 +758,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj. ...@@ -758,7 +758,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj.
if ctxt.Cursym.Cfunc != 0 { if ctxt.Cursym.Cfunc != 0 {
p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0) p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0)
} else { } else {
p.To.Sym = ctxt.Symmorestack[bool2int(noctxt)] p.To.Sym = ctxt.Symmorestack[obj.Bool2int(noctxt)]
} }
// BR start // BR start
......
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package ppc64
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
...@@ -641,3 +641,10 @@ var Anames = []string{ ...@@ -641,3 +641,10 @@ var Anames = []string{
"VARDEF", "VARDEF",
"VARKILL", "VARKILL",
} }
func Bool2int(b bool) int {
if b {
return 1
}
return 0
}
...@@ -2985,7 +2985,7 @@ func doasm(ctxt *obj.Link, p *obj.Prog) { ...@@ -2985,7 +2985,7 @@ func doasm(ctxt *obj.Link, p *obj.Prog) {
f3t := int(p.F3t) * Ymax f3t := int(p.F3t) * Ymax
tt := int(p.Tt) * Ymax tt := int(p.Tt) * Ymax
xo := bool2int(o.op[0] == 0x0f) xo := obj.Bool2int(o.op[0] == 0x0f)
z := 0 z := 0
var a *obj.Addr var a *obj.Addr
var l int var l int
......
...@@ -990,7 +990,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, textarg int32, noc ...@@ -990,7 +990,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, textarg int32, noc
if ctxt.Cursym.Cfunc != 0 { if ctxt.Cursym.Cfunc != 0 {
p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0) p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0)
} else { } else {
p.To.Sym = ctxt.Symmorestack[bool2int(noctxt)] p.To.Sym = ctxt.Symmorestack[obj.Bool2int(noctxt)]
} }
p = obj.Appendp(ctxt, p) p = obj.Appendp(ctxt, p)
......
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package x86
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment