* config/tc-mips.c (append_insn): Correctly handle mips16 case
when the frags are different for the 2 instructions we want to swap. If the lengths of the 2 instructions are not the same, we won't do the swap but emit an nop.
This commit is contained in:
parent
8432045646
commit
e9df6573ba
2 changed files with 23 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2005-09-01 David Ung <davidu@mips.com>
|
||||||
|
|
||||||
|
* config/tc-mips.c (append_insn): Correctly handle mips16 case
|
||||||
|
when the frags are different for the 2 instructions we want to
|
||||||
|
swap. If the lengths of the 2 instructions are not the same, we
|
||||||
|
won't do the swap but emit an nop.
|
||||||
|
|
||||||
2005-09-01 Dmitry Diky <diwil@spec.ru>
|
2005-09-01 Dmitry Diky <diwil@spec.ru>
|
||||||
|
|
||||||
* config/tc-msp430.c (msp430_operands): Emit dwarf2_emit_insn()
|
* config/tc-msp430.c (msp430_operands): Emit dwarf2_emit_insn()
|
||||||
|
|
|
@ -2698,9 +2698,22 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
|
||||||
struct mips_cl_insn delay = history[0];
|
struct mips_cl_insn delay = history[0];
|
||||||
if (mips_opts.mips16)
|
if (mips_opts.mips16)
|
||||||
{
|
{
|
||||||
know (delay.frag == ip->frag);
|
if (delay.frag == ip->frag)
|
||||||
move_insn (ip, delay.frag, delay.where);
|
{
|
||||||
move_insn (&delay, ip->frag, ip->where + insn_length (ip));
|
move_insn (ip, delay.frag, delay.where);
|
||||||
|
move_insn (&delay, ip->frag, delay.where
|
||||||
|
+ insn_length (ip));
|
||||||
|
}
|
||||||
|
else if (insn_length (ip) == insn_length (&delay))
|
||||||
|
{
|
||||||
|
move_insn (&delay, ip->frag, ip->where);
|
||||||
|
move_insn (ip, history[0].frag, history[0].where);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
add_fixed_insn (NOP_INSN);
|
||||||
|
delay = *NOP_INSN;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (relaxed_branch)
|
else if (relaxed_branch)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue