From 0ac76ad9eb17dd98b6008d083aa31442cbfa0410 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 8 Jul 2000 14:17:51 -0700 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/final.c | 21 +++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 67eb6fc9521..7bc499e2461 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-07-08 Richard Henderson + + * final.c (final): Do not abort when reg-stack introduces + a new insn. + 2000-07-08 Zack Weinberg * cpplib.h (struct cpp_name): Now struct cpp_string. diff --git a/gcc/final.c b/gcc/final.c index 3537bcf431a..be4a01e0bc3 100644 --- a/gcc/final.c +++ b/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); } -- 2.30.2