From b8ee1a6e86e6d9a74a59ef3c251183a10e87311e Mon Sep 17 00:00:00 2001 From: David Ung Date: Wed, 7 Sep 2005 11:39:17 +0000 Subject: [PATCH] * config/tc-mips.c (append_insn): Undo last change. Instead add guard to suppress calling frag_grow if the current instruction is one that allows a delay slot. --- gas/ChangeLog | 6 ++++++ gas/config/tc-mips.c | 28 ++++++++-------------------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 55fff2e2ca..1140fec60f 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2005-09-07 David Ung + + * config/tc-mips.c (append_insn): Undo last change. Instead add + guard to suppress calling frag_grow if the current instruction is + one that allows a delay slot. + 2005-09-06 Chao-ying Fu * config/tc-mips.c (mips_set_options): Add ase_mt for MT instructions. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index db1fec5a5c..b4b76f018b 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -2312,10 +2312,11 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr, else if (mips_opts.mips16 && ! ip->use_extend && *reloc_type != BFD_RELOC_MIPS16_JMP) - { - /* Make sure there is enough room to swap this instruction with - a following jump instruction. */ - frag_grow (6); + { + if ((pinfo & INSN_UNCOND_BRANCH_DELAY) == 0) + /* Make sure there is enough room to swap this instruction with + a following jump instruction. */ + frag_grow (6); add_fixed_insn (ip); } else @@ -2707,22 +2708,9 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr, struct mips_cl_insn delay = history[0]; if (mips_opts.mips16) { - if (delay.frag == ip->frag) - { - 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; - } + know (delay.frag == ip->frag); + move_insn (ip, delay.frag, delay.where); + move_insn (&delay, ip->frag, ip->where + insn_length (ip)); } else if (relaxed_branch) { -- 2.34.1