diff options
author | Jan Hubicka <jh@suse.cz> | 2001-08-05 23:39:21 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-08-05 23:39:21 -0700 |
commit | 39f95a2c8e36fcfbaaed01fda58429b7f536cefa (patch) | |
tree | 61d8d5d8886c7c3b58d9f343c95ef80e811043fd /gcc/reload1.c | |
parent | 9765f97213c272b1ec43872172027032d5c7c310 (diff) | |
download | gcc-39f95a2c8e36fcfbaaed01fda58429b7f536cefa.zip gcc-39f95a2c8e36fcfbaaed01fda58429b7f536cefa.tar.gz gcc-39f95a2c8e36fcfbaaed01fda58429b7f536cefa.tar.bz2 |
Makefile.in (reload1.o): Add dedendancy on except.h
* Makefile.in (reload1.o): Add dedendancy on except.h
* basic-block.h (purge_all_dead_edges, purge_dead_edges): Update
prototypes.
* flow.c (purge_dead_edges, purge_all_dead_edges): Return bool
indicating wehther edges has been cleaned up.
* reload1.c: Inlucde except.h
(fixup_abnormal_edges): Accept deleted insns.
* toplev.c (rest_of_compilation): Purge dead edges unconditionally
after combine.
From-SVN: r44654
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 09ef4ef..b2131de 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -39,6 +39,7 @@ Boston, MA 02111-1307, USA. */ #include "cselib.h" #include "real.h" #include "toplev.h" +#include "except.h" #if !defined PREFERRED_STACK_BOUNDARY && defined STACK_BOUNDARY #define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY @@ -9506,7 +9507,11 @@ fixup_abnormal_edges () for (e = bb->succ; e; e = e->succ_next) if (e->flags & EDGE_FALLTHRU) break; - while (GET_CODE (insn) == INSN && !can_throw_internal (insn)) + /* Get past the new insns generated. Allow notes, as the insns may + be already deleted. */ + while ((GET_CODE (insn) == INSN || GET_CODE (insn) == NOTE) + && !can_throw_internal (insn) + && insn != bb->head) insn = PREV_INSN (insn); if (GET_CODE (insn) != CALL_INSN && !can_throw_internal (insn)) abort (); |