final.c (final): Do not abort when reg-stack introduces a new insn.

* final.c (final): Do not abort when reg-stack introduces
        a new insn.

From-SVN: r34927
This commit is contained in:
Richard Henderson 2000-07-08 14:17:51 -07:00 committed by Richard Henderson
parent bfb9dc7faa
commit 0ac76ad9eb
2 changed files with 20 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2000-07-08 Richard Henderson <rth@cygnus.com>
* final.c (final): Do not abort when reg-stack introduces
a new insn.
2000-07-08 Zack Weinberg <zack@wolery.cumb.org>
* cpplib.h (struct cpp_name): Now struct cpp_string.

View File

@ -2014,14 +2014,23 @@ final (first, file, optimize, prescan)
for (insn = NEXT_INSN (first); insn;)
{
#ifdef HAVE_ATTR_length
#ifdef ENABLE_CHECKING
/* This can be triggered by bugs elsewhere in the compiler if
new insns are created after init_insn_lengths is called. */
if (INSN_UID (insn) >= insn_lengths_max_uid)
abort ();
#endif
insn_current_address = insn_addresses[INSN_UID (insn)];
{
#ifdef STACK_REGS
/* Irritatingly, the reg-stack pass is creating new instructions
and because of REG_DEAD note abuse it has to run after
shorten_branches. Fake address of -1 then. */
insn_current_address = -1;
#else
/* This can be triggered by bugs elsewhere in the compiler if
new insns are created after init_insn_lengths is called. */
abort ();
#endif
}
else
insn_current_address = insn_addresses[INSN_UID (insn)];
#endif /* HAVE_ATTR_length */
insn = final_scan_insn (insn, file, optimize, prescan, 0);
}