+Wed Oct 7 17:33:39 1998 Richard Henderson <rth@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
* config/i386/i386.h: Remove definition of
}
/* 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;
/* 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 ();