diff options
Diffstat (limited to 'src/cmd/internal/obj/mips/asm0.go')
-rw-r--r-- | src/cmd/internal/obj/mips/asm0.go | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/cmd/internal/obj/mips/asm0.go b/src/cmd/internal/obj/mips/asm0.go index faa827da9f..6107974745 100644 --- a/src/cmd/internal/obj/mips/asm0.go +++ b/src/cmd/internal/obj/mips/asm0.go @@ -460,8 +460,8 @@ func span0(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { o = c.oplook(p) // very large conditional branches - if o.type_ == 6 && p.Pcond != nil { - otxt = p.Pcond.Pc - pc + if o.type_ == 6 && p.To.Target() != nil { + otxt = p.To.Target().Pc - pc if otxt < -(1<<17)+10 || otxt >= (1<<17)-10 { q = c.newprog() q.Link = p.Link @@ -469,15 +469,15 @@ func span0(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { q.As = AJMP q.Pos = p.Pos 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 = AJMP q.Pos = p.Pos q.To.Type = obj.TYPE_BRANCH - q.Pcond = q.Link.Link + q.To.SetTarget(q.Link.Link) c.addnop(p.Link) c.addnop(p) @@ -1230,10 +1230,10 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) { case 6: /* beq r1,[r2],sbra */ v := int32(0) - if p.Pcond == nil { + if p.To.Target() == nil { v = int32(-4) >> 2 } else { - v = int32(p.Pcond.Pc-p.Pc-4) >> 2 + v = int32(p.To.Target().Pc-p.Pc-4) >> 2 } if (v<<16)>>16 != v { c.ctxt.Diag("short branch too far\n%v", p) @@ -1285,25 +1285,25 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) { if c.aclass(&p.To) == C_SBRA && p.To.Sym == nil && p.As == AJMP { // use PC-relative branch for short branches // BEQ R0, R0, sbra - if p.Pcond == nil { + if p.To.Target() == nil { v = int32(-4) >> 2 } else { - v = int32(p.Pcond.Pc-p.Pc-4) >> 2 + v = int32(p.To.Target().Pc-p.Pc-4) >> 2 } if (v<<16)>>16 == v { o1 = OP_IRR(c.opirr(ABEQ), uint32(v), uint32(REGZERO), uint32(REGZERO)) break } } - if p.Pcond == nil { + if p.To.Target() == nil { v = int32(p.Pc) >> 2 } else { - v = int32(p.Pcond.Pc) >> 2 + v = int32(p.To.Target().Pc) >> 2 } o1 = OP_JMP(c.opirr(p.As), uint32(v)) if p.To.Sym == nil { p.To.Sym = c.cursym.Func.Text.From.Sym - p.To.Offset = p.Pcond.Pc + p.To.Offset = p.To.Target().Pc } rel := obj.Addrel(c.cursym) rel.Off = int32(c.pc) |