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:
parent
bfb9dc7faa
commit
0ac76ad9eb
|
@ -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.
|
||||
|
|
21
gcc/final.c
21
gcc/final.c
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue