diff options
Diffstat (limited to 'src/cmd/internal/obj/arm64')
| -rw-r--r-- | src/cmd/internal/obj/arm64/asm7.go | 30 | ||||
| -rw-r--r-- | src/cmd/internal/obj/arm64/obj7.go | 16 |
2 files changed, 23 insertions, 23 deletions
diff --git a/src/cmd/internal/obj/arm64/asm7.go b/src/cmd/internal/obj/arm64/asm7.go index 7a5a8ff38c..0fa0c20b6a 100644 --- a/src/cmd/internal/obj/arm64/asm7.go +++ b/src/cmd/internal/obj/arm64/asm7.go @@ -977,8 +977,8 @@ func span7(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { o = c.oplook(p) /* very large branches */ - if (o.type_ == 7 || o.type_ == 39 || o.type_ == 40) && p.Pcond != nil { // 7: BEQ and like, 39: CBZ and like, 40: TBZ and like - otxt := p.Pcond.Pc - pc + if (o.type_ == 7 || o.type_ == 39 || o.type_ == 40) && p.To.Target() != nil { // 7: BEQ and like, 39: CBZ and like, 40: TBZ and like + otxt := p.To.Target().Pc - pc var toofar bool switch o.type_ { case 7, 39: // branch instruction encodes 19 bits @@ -992,14 +992,14 @@ func span7(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { p.Link = q q.As = AB q.To.Type = obj.TYPE_BRANCH - q.Pcond = p.Pcond - p.Pcond = q + q.To.SetTarget(p.To.Target()) + p.To.SetTarget(q) q = c.newprog() q.Link = p.Link p.Link = q q.As = AB q.To.Type = obj.TYPE_BRANCH - q.Pcond = q.Link.Link + q.To.SetTarget(q.Link.Link) bflag = 1 } } @@ -1123,7 +1123,7 @@ func (c *ctxt7) flushpool(p *obj.Prog, skip int) { q := c.newprog() q.As = AB q.To.Type = obj.TYPE_BRANCH - q.Pcond = p.Link + q.To.SetTarget(p.Link) q.Link = c.blitrl q.Pos = p.Pos c.blitrl = q @@ -1249,7 +1249,7 @@ func (c *ctxt7) addpool(p *obj.Prog, a *obj.Addr) { for q := c.blitrl; q != nil; q = q.Link { /* could hash on t.t0.offset */ if q.To == t.To { - p.Pcond = q + p.Pool = q return } } @@ -1266,7 +1266,7 @@ func (c *ctxt7) addpool(p *obj.Prog, a *obj.Addr) { c.elitrl = q c.pool.size = -c.pool.size & (funcAlign - 1) c.pool.size += uint32(sz) - p.Pcond = q + p.Pool = q } func (c *ctxt7) regoff(a *obj.Addr) uint32 { @@ -6042,15 +6042,15 @@ func (c *ctxt7) opimm(p *obj.Prog, a obj.As) uint32 { func (c *ctxt7) brdist(p *obj.Prog, preshift int, flen int, shift int) int64 { v := int64(0) t := int64(0) - if p.Pcond != nil { - v = (p.Pcond.Pc >> uint(preshift)) - (c.pc >> uint(preshift)) + if p.To.Target() != nil { + v = (p.To.Target().Pc >> uint(preshift)) - (c.pc >> uint(preshift)) if (v & ((1 << uint(shift)) - 1)) != 0 { c.ctxt.Diag("misaligned label\n%v", p) } v >>= uint(shift) t = int64(1) << uint(flen-1) if v < -t || v >= t { - c.ctxt.Diag("branch too far %#x vs %#x [%p]\n%v\n%v", v, t, c.blitrl, p, p.Pcond) + c.ctxt.Diag("branch too far %#x vs %#x [%p]\n%v\n%v", v, t, c.blitrl, p, p.To.Target()) panic("branch too far") } } @@ -6526,7 +6526,7 @@ func (c *ctxt7) oaddi(p *obj.Prog, o1 int32, v int32, r int, rt int) uint32 { */ func (c *ctxt7) omovlit(as obj.As, p *obj.Prog, a *obj.Addr, dr int) uint32 { var o1 int32 - if p.Pcond == nil { /* not in literal pool */ + if p.Pool == nil { /* not in literal pool */ c.aclass(a) c.ctxt.Logf("omovlit add %d (%#x)\n", c.instoffset, uint64(c.instoffset)) @@ -6552,11 +6552,11 @@ func (c *ctxt7) omovlit(as obj.As, p *obj.Prog, a *obj.Addr, dr int) uint32 { w = 1 /* 64-bit SIMD/FP */ case AMOVD: - if p.Pcond.As == ADWORD { + if p.Pool.As == ADWORD { w = 1 /* 64-bit */ - } else if p.Pcond.To.Offset < 0 { + } else if p.Pool.To.Offset < 0 { w = 2 /* 32-bit, sign-extended to 64-bit */ - } else if p.Pcond.To.Offset >= 0 { + } else if p.Pool.To.Offset >= 0 { w = 0 /* 32-bit, zero-extended to 64-bit */ } else { c.ctxt.Diag("invalid operand %v in %v", a, p) diff --git a/src/cmd/internal/obj/arm64/obj7.go b/src/cmd/internal/obj/arm64/obj7.go index f54429fabe..56da854f16 100644 --- a/src/cmd/internal/obj/arm64/obj7.go +++ b/src/cmd/internal/obj/arm64/obj7.go @@ -187,9 +187,9 @@ func (c *ctxt7) stacksplit(p *obj.Prog, framesize int32) *obj.Prog { movlr.To.Type = obj.TYPE_REG movlr.To.Reg = REG_R3 if q != nil { - q.Pcond = movlr + q.To.SetTarget(movlr) } - bls.Pcond = movlr + bls.To.SetTarget(movlr) debug := movlr if false { @@ -220,7 +220,7 @@ func (c *ctxt7) stacksplit(p *obj.Prog, framesize int32) *obj.Prog { jmp := obj.Appendp(pcdata, c.newprog) jmp.As = AB jmp.To.Type = obj.TYPE_BRANCH - jmp.Pcond = c.cursym.Func.Text.Link + jmp.To.SetTarget(c.cursym.Func.Text.Link) jmp.Spadj = +framesize return end @@ -697,7 +697,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { mov.To.Reg = REG_R2 // CBNZ branches to the MOV above - cbnz.Pcond = mov + cbnz.To.SetTarget(mov) // ADD $(autosize+8), SP, R3 q = obj.Appendp(mov, c.newprog) @@ -719,7 +719,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { q = obj.Appendp(q, c.newprog) q.As = ABNE q.To.Type = obj.TYPE_BRANCH - q.Pcond = end + q.To.SetTarget(end) // ADD $8, SP, R4 q = obj.Appendp(q, c.newprog) @@ -743,7 +743,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { q = obj.Appendp(q, c.newprog) q.As = AB q.To.Type = obj.TYPE_BRANCH - q.Pcond = end + q.To.SetTarget(end) } case obj.ARET: @@ -913,7 +913,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { q5.Reg = REGSP q5.To.Type = obj.TYPE_REG q5.To.Reg = REGFP - q1.Pcond = q5 + q1.From.SetTarget(q5) p = q5 } @@ -966,7 +966,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { q5.Reg = REGSP q5.To.Type = obj.TYPE_REG q5.To.Reg = REGFP - q1.Pcond = q5 + q1.From.SetTarget(q5) p = q5 } } |
