diff options
Diffstat (limited to 'src/cmd/internal/obj/mips')
-rw-r--r-- | src/cmd/internal/obj/mips/asm0.go | 24 | ||||
-rw-r--r-- | src/cmd/internal/obj/mips/obj0.go | 14 |
2 files changed, 19 insertions, 19 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) diff --git a/src/cmd/internal/obj/mips/obj0.go b/src/cmd/internal/obj/mips/obj0.go index 77cad979a6..f19facc00c 100644 --- a/src/cmd/internal/obj/mips/obj0.go +++ b/src/cmd/internal/obj/mips/obj0.go @@ -227,11 +227,11 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { } else { p.Mark |= BRANCH } - q1 := p.Pcond + q1 := p.To.Target() if q1 != nil { for q1.As == obj.ANOP { q1 = q1.Link - p.Pcond = q1 + p.To.SetTarget(q1) } if q1.Mark&LEAF == 0 { @@ -424,8 +424,8 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { q = obj.Appendp(q, newprog) q.As = obj.ANOP - p1.Pcond = q - p2.Pcond = q + p1.To.SetTarget(q) + p2.To.SetTarget(q) } case ARET: @@ -778,7 +778,7 @@ func (c *ctxt0) stacksplit(p *obj.Prog, framesize int32) *obj.Prog { p.To.Type = obj.TYPE_REG p.To.Reg = REG_R3 if q != nil { - q.Pcond = p + q.To.SetTarget(p) p.Mark |= LABEL } @@ -805,14 +805,14 @@ func (c *ctxt0) stacksplit(p *obj.Prog, framesize int32) *obj.Prog { p.As = AJMP p.To.Type = obj.TYPE_BRANCH - p.Pcond = c.cursym.Func.Text.Link + p.To.SetTarget(c.cursym.Func.Text.Link) p.Mark |= BRANCH // placeholder for q1's jump target p = obj.Appendp(p, c.newprog) p.As = obj.ANOP // zero-width place holder - q1.Pcond = p + q1.To.SetTarget(p) return p } |