aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcse.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-10-07 10:36:32 -0700
committerRichard Henderson <rth@gcc.gnu.org>1998-10-07 10:36:32 -0700
commit1bba6199035a12b6a16334a6962d960aa7862e52 (patch)
tree8be189c7804ce61c3faac118c7a1dfb0a8a6a414 /gcc/gcse.c
parentc678a7f8bd5740702e7264c5f889e6eed91a9c17 (diff)
downloadgcc-1bba6199035a12b6a16334a6962d960aa7862e52.zip
gcc-1bba6199035a12b6a16334a6962d960aa7862e52.tar.gz
gcc-1bba6199035a12b6a16334a6962d960aa7862e52.tar.bz2
gcse.c (pre_insert_insn): Tweek to notice that calls do not always end basic blocks for abnormal edge reasons.
* gcse.c (pre_insert_insn): Tweek to notice that calls do not always end basic blocks for abnormal edge reasons. From-SVN: r22897
Diffstat (limited to 'gcc/gcse.c')
-rw-r--r--gcc/gcse.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 463959d..c77aa33 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 ();