OSDN Git Service

* gcse.c (pre_insert_insn): Tweek to notice that calls do not
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Oct 1998 17:36:32 +0000 (17:36 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Oct 1998 17:36:32 +0000 (17:36 +0000)
        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
gcc/gcse.c

index 8f3850d..ce6b19a 100644 (file)
@@ -1,3 +1,8 @@
+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
index 463959d..c77aa33 100644 (file)
@@ -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 ();