mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile/internal/gc: remove more backend Sym uses
Removes all external uses of Linksym and Pkglookup, which are the only two exported functions that return Syms. Also add Duffcopy and Duffzero since they're used often enough across SSA backends. Passes toolstash -cmp. Change-Id: I8d3fd048ad5cd676fc46378f09a917569ffc9b2c Reviewed-on: https://go-review.googlesource.com/36418 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
This commit is contained in:
parent
ab067cde34
commit
6a29440dcc
15 changed files with 44 additions and 35 deletions
|
|
@ -146,7 +146,7 @@ func zerorange(p *obj.Prog, frame int64, lo int64, hi int64, ax *uint32, x0 *uin
|
||||||
}
|
}
|
||||||
p = gc.Appendpp(p, leaptr, obj.TYPE_MEM, x86.REG_SP, frame+lo+dzDI(cnt), obj.TYPE_REG, x86.REG_DI, 0)
|
p = gc.Appendpp(p, leaptr, obj.TYPE_MEM, x86.REG_SP, frame+lo+dzDI(cnt), obj.TYPE_REG, x86.REG_DI, 0)
|
||||||
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_ADDR, 0, dzOff(cnt))
|
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_ADDR, 0, dzOff(cnt))
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffzero", gc.Runtimepkg))
|
p.To.Sym = gc.Duffzero
|
||||||
|
|
||||||
if cnt%16 != 0 {
|
if cnt%16 != 0 {
|
||||||
p = gc.Appendpp(p, x86.AMOVUPS, obj.TYPE_REG, x86.REG_X0, 0, obj.TYPE_MEM, x86.REG_DI, -int64(8))
|
p = gc.Appendpp(p, x86.AMOVUPS, obj.TYPE_REG, x86.REG_X0, 0, obj.TYPE_MEM, x86.REG_DI, -int64(8))
|
||||||
|
|
|
||||||
|
|
@ -658,7 +658,7 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
|
||||||
}
|
}
|
||||||
p = gc.Prog(obj.ADUFFZERO)
|
p = gc.Prog(obj.ADUFFZERO)
|
||||||
p.To.Type = obj.TYPE_ADDR
|
p.To.Type = obj.TYPE_ADDR
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffzero", gc.Runtimepkg))
|
p.To.Sym = gc.Duffzero
|
||||||
p.To.Offset = off
|
p.To.Offset = off
|
||||||
case ssa.OpAMD64MOVOconst:
|
case ssa.OpAMD64MOVOconst:
|
||||||
if v.AuxInt != 0 {
|
if v.AuxInt != 0 {
|
||||||
|
|
@ -669,7 +669,7 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
|
||||||
case ssa.OpAMD64DUFFCOPY:
|
case ssa.OpAMD64DUFFCOPY:
|
||||||
p := gc.Prog(obj.ADUFFCOPY)
|
p := gc.Prog(obj.ADUFFCOPY)
|
||||||
p.To.Type = obj.TYPE_ADDR
|
p.To.Type = obj.TYPE_ADDR
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffcopy", gc.Runtimepkg))
|
p.To.Sym = gc.Duffcopy
|
||||||
p.To.Offset = v.AuxInt
|
p.To.Offset = v.AuxInt
|
||||||
|
|
||||||
case ssa.OpCopy, ssa.OpAMD64MOVQconvert, ssa.OpAMD64MOVLconvert: // TODO: use MOVQreg for reg->reg copies instead of OpCopy?
|
case ssa.OpCopy, ssa.OpAMD64MOVQconvert, ssa.OpAMD64MOVLconvert: // TODO: use MOVQreg for reg->reg copies instead of OpCopy?
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,8 @@ func zerorange(p *obj.Prog, frame int64, lo int64, hi int64, r0 *uint32) *obj.Pr
|
||||||
p = gc.Appendpp(p, arm.AADD, obj.TYPE_CONST, 0, 4+frame+lo, obj.TYPE_REG, arm.REG_R1, 0)
|
p = gc.Appendpp(p, arm.AADD, obj.TYPE_CONST, 0, 4+frame+lo, obj.TYPE_REG, arm.REG_R1, 0)
|
||||||
p.Reg = arm.REGSP
|
p.Reg = arm.REGSP
|
||||||
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
|
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
|
||||||
gc.Naddr(&p.To, gc.Sysfunc("duffzero"))
|
p.To.Name = obj.NAME_EXTERN
|
||||||
|
p.To.Sym = gc.Duffzero
|
||||||
p.To.Offset = 4 * (128 - cnt/int64(gc.Widthptr))
|
p.To.Offset = 4 * (128 - cnt/int64(gc.Widthptr))
|
||||||
} else {
|
} else {
|
||||||
p = gc.Appendpp(p, arm.AADD, obj.TYPE_CONST, 0, 4+frame+lo, obj.TYPE_REG, arm.REG_R1, 0)
|
p = gc.Appendpp(p, arm.AADD, obj.TYPE_CONST, 0, 4+frame+lo, obj.TYPE_REG, arm.REG_R1, 0)
|
||||||
|
|
|
||||||
|
|
@ -689,13 +689,13 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
|
||||||
p := gc.Prog(obj.ADUFFZERO)
|
p := gc.Prog(obj.ADUFFZERO)
|
||||||
p.To.Type = obj.TYPE_MEM
|
p.To.Type = obj.TYPE_MEM
|
||||||
p.To.Name = obj.NAME_EXTERN
|
p.To.Name = obj.NAME_EXTERN
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffzero", gc.Runtimepkg))
|
p.To.Sym = gc.Duffzero
|
||||||
p.To.Offset = v.AuxInt
|
p.To.Offset = v.AuxInt
|
||||||
case ssa.OpARMDUFFCOPY:
|
case ssa.OpARMDUFFCOPY:
|
||||||
p := gc.Prog(obj.ADUFFCOPY)
|
p := gc.Prog(obj.ADUFFCOPY)
|
||||||
p.To.Type = obj.TYPE_MEM
|
p.To.Type = obj.TYPE_MEM
|
||||||
p.To.Name = obj.NAME_EXTERN
|
p.To.Name = obj.NAME_EXTERN
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffcopy", gc.Runtimepkg))
|
p.To.Sym = gc.Duffcopy
|
||||||
p.To.Offset = v.AuxInt
|
p.To.Offset = v.AuxInt
|
||||||
case ssa.OpARMLoweredNilCheck:
|
case ssa.OpARMLoweredNilCheck:
|
||||||
// Issue a load which will fault if arg is nil.
|
// Issue a load which will fault if arg is nil.
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,8 @@ func zerorange(p *obj.Prog, frame int64, lo int64, hi int64) *obj.Prog {
|
||||||
p = gc.Appendpp(p, arm64.AADD, obj.TYPE_CONST, 0, 8+frame+lo-8, obj.TYPE_REG, arm64.REGRT1, 0)
|
p = gc.Appendpp(p, arm64.AADD, obj.TYPE_CONST, 0, 8+frame+lo-8, obj.TYPE_REG, arm64.REGRT1, 0)
|
||||||
p.Reg = arm64.REGRT1
|
p.Reg = arm64.REGRT1
|
||||||
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
|
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
|
||||||
gc.Naddr(&p.To, gc.Sysfunc("duffzero"))
|
p.To.Name = obj.NAME_EXTERN
|
||||||
|
p.To.Sym = gc.Duffzero
|
||||||
p.To.Offset = 4 * (128 - cnt/int64(gc.Widthptr))
|
p.To.Offset = 4 * (128 - cnt/int64(gc.Widthptr))
|
||||||
} else {
|
} else {
|
||||||
p = gc.Appendpp(p, arm64.AMOVD, obj.TYPE_CONST, 0, 8+frame+lo-8, obj.TYPE_REG, arm64.REGTMP, 0)
|
p = gc.Appendpp(p, arm64.AMOVD, obj.TYPE_CONST, 0, 8+frame+lo-8, obj.TYPE_REG, arm64.REGTMP, 0)
|
||||||
|
|
|
||||||
|
|
@ -577,7 +577,7 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
|
||||||
p = gc.Prog(obj.ADUFFZERO)
|
p = gc.Prog(obj.ADUFFZERO)
|
||||||
p.To.Type = obj.TYPE_MEM
|
p.To.Type = obj.TYPE_MEM
|
||||||
p.To.Name = obj.NAME_EXTERN
|
p.To.Name = obj.NAME_EXTERN
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffzero", gc.Runtimepkg))
|
p.To.Sym = gc.Duffzero
|
||||||
p.To.Offset = v.AuxInt
|
p.To.Offset = v.AuxInt
|
||||||
case ssa.OpARM64LoweredZero:
|
case ssa.OpARM64LoweredZero:
|
||||||
// MOVD.P ZR, 8(R16)
|
// MOVD.P ZR, 8(R16)
|
||||||
|
|
@ -602,7 +602,7 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
|
||||||
p := gc.Prog(obj.ADUFFCOPY)
|
p := gc.Prog(obj.ADUFFCOPY)
|
||||||
p.To.Type = obj.TYPE_MEM
|
p.To.Type = obj.TYPE_MEM
|
||||||
p.To.Name = obj.NAME_EXTERN
|
p.To.Name = obj.NAME_EXTERN
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffcopy", gc.Runtimepkg))
|
p.To.Sym = gc.Duffcopy
|
||||||
p.To.Offset = v.AuxInt
|
p.To.Offset = v.AuxInt
|
||||||
case ssa.OpARM64LoweredMove:
|
case ssa.OpARM64LoweredMove:
|
||||||
// MOVD.P 8(R16), Rtmp
|
// MOVD.P 8(R16), Rtmp
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,13 @@
|
||||||
|
|
||||||
package gc
|
package gc
|
||||||
|
|
||||||
import "fmt"
|
import (
|
||||||
|
"cmd/internal/obj"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
func Sysfunc(name string) *Node {
|
func Sysfunc(name string) *obj.LSym {
|
||||||
n := newname(Pkglookup(name, Runtimepkg))
|
return Linksym(Pkglookup(name, Runtimepkg))
|
||||||
n.Class = PFUNC
|
|
||||||
return n
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// addrescapes tags node n as having had its address taken
|
// addrescapes tags node n as having had its address taken
|
||||||
|
|
|
||||||
|
|
@ -370,6 +370,8 @@ var (
|
||||||
Newproc,
|
Newproc,
|
||||||
Deferproc,
|
Deferproc,
|
||||||
Deferreturn,
|
Deferreturn,
|
||||||
|
Duffcopy,
|
||||||
|
Duffzero,
|
||||||
panicindex,
|
panicindex,
|
||||||
panicslice,
|
panicslice,
|
||||||
panicdivide,
|
panicdivide,
|
||||||
|
|
|
||||||
|
|
@ -297,19 +297,21 @@ func (s *ssaExport) AllocFrame(f *ssa.Func) {
|
||||||
|
|
||||||
func compile(fn *Node) {
|
func compile(fn *Node) {
|
||||||
if Newproc == nil {
|
if Newproc == nil {
|
||||||
Newproc = Linksym(Sysfunc("newproc").Sym)
|
Newproc = Sysfunc("newproc")
|
||||||
Deferproc = Linksym(Sysfunc("deferproc").Sym)
|
Deferproc = Sysfunc("deferproc")
|
||||||
Deferreturn = Linksym(Sysfunc("deferreturn").Sym)
|
Deferreturn = Sysfunc("deferreturn")
|
||||||
panicindex = Linksym(Sysfunc("panicindex").Sym)
|
Duffcopy = Sysfunc("duffcopy")
|
||||||
panicslice = Linksym(Sysfunc("panicslice").Sym)
|
Duffzero = Sysfunc("duffzero")
|
||||||
panicdivide = Linksym(Sysfunc("panicdivide").Sym)
|
panicindex = Sysfunc("panicindex")
|
||||||
growslice = Linksym(Sysfunc("growslice").Sym)
|
panicslice = Sysfunc("panicslice")
|
||||||
panicdottype = Linksym(Sysfunc("panicdottype").Sym)
|
panicdivide = Sysfunc("panicdivide")
|
||||||
panicnildottype = Linksym(Sysfunc("panicnildottype").Sym)
|
growslice = Sysfunc("growslice")
|
||||||
assertE2I = Linksym(Sysfunc("assertE2I").Sym)
|
panicdottype = Sysfunc("panicdottype")
|
||||||
assertE2I2 = Linksym(Sysfunc("assertE2I2").Sym)
|
panicnildottype = Sysfunc("panicnildottype")
|
||||||
assertI2I = Linksym(Sysfunc("assertI2I").Sym)
|
assertE2I = Sysfunc("assertE2I")
|
||||||
assertI2I2 = Linksym(Sysfunc("assertI2I2").Sym)
|
assertE2I2 = Sysfunc("assertE2I2")
|
||||||
|
assertI2I = Sysfunc("assertI2I")
|
||||||
|
assertI2I2 = Sysfunc("assertI2I2")
|
||||||
}
|
}
|
||||||
|
|
||||||
defer func(lno src.XPos) {
|
defer func(lno src.XPos) {
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,8 @@ func zerorange(p *obj.Prog, frame int64, lo int64, hi int64) *obj.Prog {
|
||||||
p = gc.Appendpp(p, mips.AADDV, obj.TYPE_CONST, 0, 8+frame+lo-8, obj.TYPE_REG, mips.REGRT1, 0)
|
p = gc.Appendpp(p, mips.AADDV, obj.TYPE_CONST, 0, 8+frame+lo-8, obj.TYPE_REG, mips.REGRT1, 0)
|
||||||
p.Reg = mips.REGSP
|
p.Reg = mips.REGSP
|
||||||
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
|
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
|
||||||
gc.Naddr(&p.To, gc.Sysfunc("duffzero"))
|
p.To.Name = obj.NAME_EXTERN
|
||||||
|
p.To.Sym = gc.Duffzero
|
||||||
p.To.Offset = 8 * (128 - cnt/int64(gc.Widthptr))
|
p.To.Offset = 8 * (128 - cnt/int64(gc.Widthptr))
|
||||||
} else {
|
} else {
|
||||||
// ADDV $(8+frame+lo-8), SP, r1
|
// ADDV $(8+frame+lo-8), SP, r1
|
||||||
|
|
|
||||||
|
|
@ -387,7 +387,7 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
|
||||||
p = gc.Prog(obj.ADUFFZERO)
|
p = gc.Prog(obj.ADUFFZERO)
|
||||||
p.To.Type = obj.TYPE_MEM
|
p.To.Type = obj.TYPE_MEM
|
||||||
p.To.Name = obj.NAME_EXTERN
|
p.To.Name = obj.NAME_EXTERN
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffzero", gc.Runtimepkg))
|
p.To.Sym = gc.Duffzero
|
||||||
p.To.Offset = v.AuxInt
|
p.To.Offset = v.AuxInt
|
||||||
case ssa.OpMIPS64LoweredZero:
|
case ssa.OpMIPS64LoweredZero:
|
||||||
// SUBV $8, R1
|
// SUBV $8, R1
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,8 @@ func zerorange(p *obj.Prog, frame int64, lo int64, hi int64) *obj.Prog {
|
||||||
p = gc.Appendpp(p, ppc64.AADD, obj.TYPE_CONST, 0, gc.Ctxt.FixedFrameSize()+frame+lo-8, obj.TYPE_REG, ppc64.REGRT1, 0)
|
p = gc.Appendpp(p, ppc64.AADD, obj.TYPE_CONST, 0, gc.Ctxt.FixedFrameSize()+frame+lo-8, obj.TYPE_REG, ppc64.REGRT1, 0)
|
||||||
p.Reg = ppc64.REGSP
|
p.Reg = ppc64.REGSP
|
||||||
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
|
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
|
||||||
gc.Naddr(&p.To, gc.Sysfunc("duffzero"))
|
p.To.Name = obj.NAME_EXTERN
|
||||||
|
p.To.Sym = gc.Duffzero
|
||||||
p.To.Offset = 4 * (128 - cnt/int64(gc.Widthptr))
|
p.To.Offset = 4 * (128 - cnt/int64(gc.Widthptr))
|
||||||
} else {
|
} else {
|
||||||
p = gc.Appendpp(p, ppc64.AMOVD, obj.TYPE_CONST, 0, gc.Ctxt.FixedFrameSize()+frame+lo-8, obj.TYPE_REG, ppc64.REGTMP, 0)
|
p = gc.Appendpp(p, ppc64.AMOVD, obj.TYPE_CONST, 0, gc.Ctxt.FixedFrameSize()+frame+lo-8, obj.TYPE_REG, ppc64.REGTMP, 0)
|
||||||
|
|
|
||||||
|
|
@ -124,7 +124,7 @@ func ssaGenValue387(s *gc.SSAGenState, v *ssa.Value) bool {
|
||||||
p = gc.Prog(x86.AFLDCW)
|
p = gc.Prog(x86.AFLDCW)
|
||||||
p.From.Type = obj.TYPE_MEM
|
p.From.Type = obj.TYPE_MEM
|
||||||
p.From.Name = obj.NAME_EXTERN
|
p.From.Name = obj.NAME_EXTERN
|
||||||
p.From.Sym = gc.Linksym(gc.Pkglookup("controlWord32", gc.Runtimepkg))
|
p.From.Sym = gc.Sysfunc("controlWord32")
|
||||||
}
|
}
|
||||||
|
|
||||||
var op obj.As
|
var op obj.As
|
||||||
|
|
@ -221,7 +221,7 @@ func ssaGenValue387(s *gc.SSAGenState, v *ssa.Value) bool {
|
||||||
p = gc.Prog(x86.AFLDCW)
|
p = gc.Prog(x86.AFLDCW)
|
||||||
p.From.Type = obj.TYPE_MEM
|
p.From.Type = obj.TYPE_MEM
|
||||||
p.From.Name = obj.NAME_EXTERN
|
p.From.Name = obj.NAME_EXTERN
|
||||||
p.From.Sym = gc.Linksym(gc.Pkglookup("controlWord64trunc", gc.Runtimepkg))
|
p.From.Sym = gc.Sysfunc("controlWord64trunc")
|
||||||
|
|
||||||
// Now do the conversion.
|
// Now do the conversion.
|
||||||
p = gc.Prog(x86.AFMOVLP)
|
p = gc.Prog(x86.AFMOVLP)
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ func zerorange(p *obj.Prog, frame int64, lo int64, hi int64, ax *uint32) *obj.Pr
|
||||||
} else if !gc.Nacl && cnt <= int64(128*gc.Widthreg) {
|
} else if !gc.Nacl && cnt <= int64(128*gc.Widthreg) {
|
||||||
p = gc.Appendpp(p, x86.ALEAL, obj.TYPE_MEM, x86.REG_SP, frame+lo, obj.TYPE_REG, x86.REG_DI, 0)
|
p = gc.Appendpp(p, x86.ALEAL, obj.TYPE_MEM, x86.REG_SP, frame+lo, obj.TYPE_REG, x86.REG_DI, 0)
|
||||||
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_ADDR, 0, 1*(128-cnt/int64(gc.Widthreg)))
|
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_ADDR, 0, 1*(128-cnt/int64(gc.Widthreg)))
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffzero", gc.Runtimepkg))
|
p.To.Sym = gc.Duffzero
|
||||||
} else {
|
} else {
|
||||||
p = gc.Appendpp(p, x86.AMOVL, obj.TYPE_CONST, 0, cnt/int64(gc.Widthreg), obj.TYPE_REG, x86.REG_CX, 0)
|
p = gc.Appendpp(p, x86.AMOVL, obj.TYPE_CONST, 0, cnt/int64(gc.Widthreg), obj.TYPE_REG, x86.REG_CX, 0)
|
||||||
p = gc.Appendpp(p, x86.ALEAL, obj.TYPE_MEM, x86.REG_SP, frame+lo, obj.TYPE_REG, x86.REG_DI, 0)
|
p = gc.Appendpp(p, x86.ALEAL, obj.TYPE_MEM, x86.REG_SP, frame+lo, obj.TYPE_REG, x86.REG_DI, 0)
|
||||||
|
|
|
||||||
|
|
@ -587,12 +587,12 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
|
||||||
case ssa.Op386DUFFZERO:
|
case ssa.Op386DUFFZERO:
|
||||||
p := gc.Prog(obj.ADUFFZERO)
|
p := gc.Prog(obj.ADUFFZERO)
|
||||||
p.To.Type = obj.TYPE_ADDR
|
p.To.Type = obj.TYPE_ADDR
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffzero", gc.Runtimepkg))
|
p.To.Sym = gc.Duffzero
|
||||||
p.To.Offset = v.AuxInt
|
p.To.Offset = v.AuxInt
|
||||||
case ssa.Op386DUFFCOPY:
|
case ssa.Op386DUFFCOPY:
|
||||||
p := gc.Prog(obj.ADUFFCOPY)
|
p := gc.Prog(obj.ADUFFCOPY)
|
||||||
p.To.Type = obj.TYPE_ADDR
|
p.To.Type = obj.TYPE_ADDR
|
||||||
p.To.Sym = gc.Linksym(gc.Pkglookup("duffcopy", gc.Runtimepkg))
|
p.To.Sym = gc.Duffcopy
|
||||||
p.To.Offset = v.AuxInt
|
p.To.Offset = v.AuxInt
|
||||||
|
|
||||||
case ssa.OpCopy, ssa.Op386MOVLconvert: // TODO: use MOVLreg for reg->reg copies instead of OpCopy?
|
case ssa.OpCopy, ssa.Op386MOVLconvert: // TODO: use MOVLreg for reg->reg copies instead of OpCopy?
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue