mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 03:29:47 +08:00
MIPS/GAS: Simplify non-MIPS16 branch swapping sequence
Simplify non-MIPS16 branch swapping by copying the MIPS16 variant, which sets the new position for the current instruction first and reduces the calculation of the new position of the previous instruction. Also refer to previous instruction's frag and position via `delay' for consistency. Reintroduce an explanatory comment, updated, previously removed with: commit 1e91584932efd70020c8c98037d0cb93a0552a20 Author: Richard Sandiford <rdsandiford@googlemail.com> Date: Wed Mar 9 09:17:02 2005 +0000 <https://sourceware.org/ml/binutils/2005-03/msg00217.html>, ("Rework MIPS nop-insertion code, add -mfix-vr4130 [5/11]"). gas/ * config/tc-mips.c (append_insn): Simplify non-MIPS16 branch swapping sequence.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2016-06-30 Maciej W. Rozycki <macro@imgtec.com>
|
||||||
|
|
||||||
|
* config/tc-mips.c (append_insn): Simplify non-MIPS16 branch
|
||||||
|
swapping sequence.
|
||||||
|
|
||||||
2016-06-30 Maciej W. Rozycki <macro@imgtec.com>
|
2016-06-30 Maciej W. Rozycki <macro@imgtec.com>
|
||||||
|
|
||||||
PR gas/20312
|
PR gas/20312
|
||||||
|
@ -7537,9 +7537,10 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
move_insn (&delay, ip->frag,
|
/* If this is not a relaxed branch and we are in the
|
||||||
ip->where - branch_disp + insn_length (ip));
|
same frag, then just swap the instructions. */
|
||||||
move_insn (ip, history[0].frag, history[0].where);
|
move_insn (ip, delay.frag, delay.where);
|
||||||
|
move_insn (&delay, ip->frag, ip->where + insn_length (ip));
|
||||||
}
|
}
|
||||||
history[0] = *ip;
|
history[0] = *ip;
|
||||||
delay.fixed_p = 1;
|
delay.fixed_p = 1;
|
||||||
|
Reference in New Issue
Block a user