* config/tc-mips.c (append_insn): Warn about an attempt to put an

extended instruction in a delay slot when not reordering.  Set
 	prev_insn_valid even if not reordering.
	(md_convert_frag): Warn if an extended instruction appears in a
	delay slot.
This commit is contained in:
Ian Lance Taylor 1997-02-12 20:20:11 +00:00
parent ed3eb78691
commit 035936da05
2 changed files with 22 additions and 1 deletions

View File

@ -1,5 +1,11 @@
Wed Feb 12 14:36:29 1997 Ian Lance Taylor <ian@cygnus.com>
* config/tc-mips.c (append_insn): Warn about an attempt to put an
extended instruction in a delay slot when not reordering. Set
prev_insn_valid even if not reordering.
(md_convert_frag): Warn if an extended instruction appears in a
delay slot.
* config/tc-mips.c (mips_pseudo_table): Add "insn".
(s_insn): New static function.
* doc/c-mips.texi: Document .insn.

View File

@ -1493,7 +1493,15 @@ append_insn (place, ip, address_expr, reloc_type, unmatched_hi)
f = frag_more (2);
}
else
f = frag_more (4);
{
if (mips16
&& mips_noreorder
&& (prev_pinfo & INSN_UNCOND_BRANCH_DELAY) != 0)
as_warn ("extended instruction in delay slot");
f = frag_more (4);
}
fixp = NULL;
if (address_expr != NULL && reloc_type < BFD_RELOC_UNUSED)
{
@ -1980,6 +1988,7 @@ append_insn (place, ip, address_expr, reloc_type, unmatched_hi)
PC relative relocs. */
prev_insn = *ip;
prev_insn_reloc_type = reloc_type;
prev_insn_valid = 1;
}
/* We just output an insn, so the next one doesn't have a label. */
@ -9969,6 +9978,12 @@ md_convert_frag (abfd, asec, fragp)
record_alignment (asec, op->shift);
}
if (ext
&& (RELAX_MIPS16_JAL_DSLOT (fragp->fr_subtype)
|| RELAX_MIPS16_DSLOT (fragp->fr_subtype)))
as_warn_where (fragp->fr_file, fragp->fr_line,
"extended instruction in delay slot");
buf = (bfd_byte *) (fragp->fr_literal + fragp->fr_fix);
if (target_big_endian)