]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
flow.c (find_basic_blocks): Correctly determine when a call is within an exception...
authorRichard Henderson <rth@cygnus.com>
Thu, 8 Oct 1998 17:01:01 +0000 (10:01 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 8 Oct 1998 17:01:01 +0000 (10:01 -0700)
        * flow.c (find_basic_blocks): Correctly determine when a call
        is within an exception region.

From-SVN: r22928

gcc/ChangeLog
gcc/flow.c

index 30e39a44b4f356367eff7dee8ce263d1d5074032..ecd9e053b8488265299c3e5293b6ed48ad2910b3 100644 (file)
@@ -1,3 +1,8 @@
+Thu Oct  8 17:00:18 1998  Richard Henderson  <rth@cygnus.com>
+
+       * flow.c (find_basic_blocks): Correctly determine when a call
+       is within an exception region.
+
 Thu Oct  8 17:15:04 1998  Jeffrey A Law  (law@cygnus.com)
 
        * Makefile.in (cpplib.o): Use unlibsubdir.
index 773aaf2be969d269b3f9c4dc9caef046d2f86a18..bbf21f1584fcbd04f2649a0b0484cd6ccc07fb18 100644 (file)
@@ -314,6 +314,7 @@ find_basic_blocks (f, nregs, file, live_reachable_p)
     register RTX_CODE prev_code = JUMP_INSN;
     register RTX_CODE code;
     int eh_region = 0;
+    int call_had_abnormal_edge = 0;
 
     max_uid_for_flow = 0;
 
@@ -335,7 +336,7 @@ find_basic_blocks (f, nregs, file, live_reachable_p)
              i++;
            else if (prev_code == CALL_INSN)
              {
-               if (nonlocal_label_list != 0 || eh_region)
+               if (call_had_abnormal_edge)
                  i++;
                else
                  {
@@ -360,6 +361,10 @@ find_basic_blocks (f, nregs, file, live_reachable_p)
        if (code == CALL_INSN && in_libcall_block)
          code = INSN;
 
+        /* Record whether this call created an edge.  */
+        if (code == CALL_INSN)
+         call_had_abnormal_edge = (nonlocal_label_list != 0 || eh_region);
+
        if (code != NOTE)
          prev_code = code;
        else if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_EH_REGION_BEG)