+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.
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);
}