From 55dad45b6dba074b78f44a7a25c7bd64aee58cf5 Mon Sep 17 00:00:00 2001 From: rth Date: Wed, 7 Oct 1998 17:36:32 +0000 Subject: [PATCH] * gcse.c (pre_insert_insn): Tweek to notice that calls do not always end basic blocks for abnormal edge reasons. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22897 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/gcse.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f3850d5288..ce6b19a08dc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed Oct 7 17:33:39 1998 Richard Henderson + + * gcse.c (pre_insert_insn): Tweek to notice that calls do not + always end basic blocks for abnormal edge reasons. + Wed Oct 7 14:40:43 1998 Nick Clifton * config/i386/i386.h: Remove definition of diff --git a/gcc/gcse.c b/gcc/gcse.c index 463959d520a..c77aa33d022 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -4376,7 +4376,10 @@ pre_insert_insn (expr, bb) } /* Likewise if the last insn is a call, as will happen in the presence of exception handling. */ - else if (GET_CODE (insn) == CALL_INSN) + /* ??? The flag_exceptions test is not exact. We don't know if we are + actually in an eh region. Fix flow to tell us this. */ + else if (GET_CODE (insn) == CALL_INSN + && (current_function_has_nonlocal_label || flag_exceptions)) { HARD_REG_SET parm_regs; int nparm_regs; @@ -4389,6 +4392,8 @@ pre_insert_insn (expr, bb) /* It should always be the case that we can put these instructions anywhere in the basic block. Check this. */ + /* ??? Well, it would be the case if we'd split all critical edges. + Since we didn't, we may very well abort. */ if (!TEST_BIT (pre_antloc[bb], expr->bitmap_index) && !TEST_BIT (pre_transp[bb], expr->bitmap_index)) abort (); -- 2.11.0