mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: make ValAndOff.{Val,Off} return an int32
The ValAndOff type is a 64bit integer holding a 32bit value and a 32bit offset in each half, but for historical reasons its Val and Off methods returned an int64. This was convenient when AuxInt was always an int64, but now that AuxInts are typed we can return int32 from Val and Off and get rid of a several casts and now unnecessary range checks. This change: - changes the Val and Off methods to return an int32 (from int64); - adds Val64 and Off64 methods for convenience in the few remaining places (in the ssa.go files) where Val and Off are stored in int64 fields; - deletes makeValAndOff64, renames makeValAndOff32 to makeValAndOff - deletes a few ValAndOff methods that are now unused; - removes several validOff/validValAndOff check that will always return true. Passes: GOARCH=amd64 gotip build -toolexec 'toolstash -cmp' -a std GOARCH=386 gotip build -toolexec 'toolstash -cmp' -a std GOARCH=s390x gotip build -toolexec 'toolstash -cmp' -a std (the three GOARCHs with SSA rules files impacted by the change). Change-Id: I2abbbf42188c798631b94d3a55ca44256f140be7 Reviewed-on: https://go-review.googlesource.com/c/go/+/299149 Trust: Alberto Donizetti <alb.donizetti@gmail.com> Trust: Keith Randall <khr@golang.org> Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
437d229e2a
commit
b70a2bc9c6
14 changed files with 504 additions and 566 deletions
|
|
@ -427,9 +427,9 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) {
|
|||
p := s.Prog(v.Op.Asm())
|
||||
p.From.Type = obj.TYPE_MEM
|
||||
p.From.Reg = v.Args[0].Reg()
|
||||
ssagen.AddAux2(&p.From, v, sc.Off())
|
||||
ssagen.AddAux2(&p.From, v, sc.Off64())
|
||||
p.To.Type = obj.TYPE_CONST
|
||||
p.To.Offset = sc.Val()
|
||||
p.To.Offset = sc.Val64()
|
||||
case ssa.Op386MOVLconst:
|
||||
x := v.Reg()
|
||||
|
||||
|
|
@ -544,7 +544,7 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) {
|
|||
} else {
|
||||
p = s.Prog(x86.ADECL)
|
||||
}
|
||||
off := sc.Off()
|
||||
off := sc.Off64()
|
||||
p.To.Type = obj.TYPE_MEM
|
||||
p.To.Reg = v.Args[0].Reg()
|
||||
ssagen.AddAux2(&p.To, v, off)
|
||||
|
|
@ -553,8 +553,8 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) {
|
|||
fallthrough
|
||||
case ssa.Op386ANDLconstmodify, ssa.Op386ORLconstmodify, ssa.Op386XORLconstmodify:
|
||||
sc := v.AuxValAndOff()
|
||||
off := sc.Off()
|
||||
val := sc.Val()
|
||||
off := sc.Off64()
|
||||
val := sc.Val64()
|
||||
p := s.Prog(v.Op.Asm())
|
||||
p.From.Type = obj.TYPE_CONST
|
||||
p.From.Offset = val
|
||||
|
|
@ -591,10 +591,10 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) {
|
|||
p := s.Prog(v.Op.Asm())
|
||||
p.From.Type = obj.TYPE_CONST
|
||||
sc := v.AuxValAndOff()
|
||||
p.From.Offset = sc.Val()
|
||||
p.From.Offset = sc.Val64()
|
||||
p.To.Type = obj.TYPE_MEM
|
||||
p.To.Reg = v.Args[0].Reg()
|
||||
ssagen.AddAux2(&p.To, v, sc.Off())
|
||||
ssagen.AddAux2(&p.To, v, sc.Off64())
|
||||
case ssa.Op386ADDLconstmodifyidx4:
|
||||
sc := v.AuxValAndOff()
|
||||
val := sc.Val()
|
||||
|
|
@ -605,7 +605,7 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) {
|
|||
} else {
|
||||
p = s.Prog(x86.ADECL)
|
||||
}
|
||||
off := sc.Off()
|
||||
off := sc.Off64()
|
||||
p.To.Type = obj.TYPE_MEM
|
||||
p.To.Reg = v.Args[0].Reg()
|
||||
p.To.Scale = 4
|
||||
|
|
@ -619,7 +619,7 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) {
|
|||
p := s.Prog(v.Op.Asm())
|
||||
p.From.Type = obj.TYPE_CONST
|
||||
sc := v.AuxValAndOff()
|
||||
p.From.Offset = sc.Val()
|
||||
p.From.Offset = sc.Val64()
|
||||
r := v.Args[0].Reg()
|
||||
i := v.Args[1].Reg()
|
||||
switch v.Op {
|
||||
|
|
@ -637,7 +637,7 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) {
|
|||
p.To.Type = obj.TYPE_MEM
|
||||
p.To.Reg = r
|
||||
p.To.Index = i
|
||||
ssagen.AddAux2(&p.To, v, sc.Off())
|
||||
ssagen.AddAux2(&p.To, v, sc.Off64())
|
||||
case ssa.Op386MOVWLSX, ssa.Op386MOVBLSX, ssa.Op386MOVWLZX, ssa.Op386MOVBLZX,
|
||||
ssa.Op386CVTSL2SS, ssa.Op386CVTSL2SD,
|
||||
ssa.Op386CVTTSS2SL, ssa.Op386CVTTSD2SL,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue