]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
basic-block.h (has_abnormal_or_eh_outgoing_edge): Renamed from has_abnormal_or_outgoi...
authorJeff Law <law@redhat.com>
Fri, 15 Nov 2013 21:11:50 +0000 (14:11 -0700)
committerJeff Law <law@gcc.gnu.org>
Fri, 15 Nov 2013 21:11:50 +0000 (14:11 -0700)
* basic-block.h (has_abnormal_or_eh_outgoing_edge): Renamed from
has_abnormal_or_outgoing_edge.  Check for EH edges as well.
* gimple-ssa-isolate-paths.c
(find_implicit_erroneous_behaviour): Corresponding changes.
Do not check stmt_ends_bb_p or GIMPLE_RETURN anymore.
(find_explicit_erroneous_behaviour): Likewise.

From-SVN: r204861

gcc/ChangeLog
gcc/basic-block.h
gcc/gimple-ssa-isolate-paths.c

index d9e57b0c875aa33526761a0e33e4d8833c4ea6cb..3d528ba7e44fc8102b543771a80576522f59533e 100644 (file)
@@ -1,3 +1,12 @@
+2013-11-15  Jeff Law  <law@redhat.com>
+
+       * basic-block.h (has_abnormal_or_eh_outgoing_edge): Renamed from
+       has_abnormal_or_outgoing_edge.  Check for EH edges as well.
+       * gimple-ssa-isolate-paths.c
+       (find_implicit_erroneous_behaviour): Corresponding changes.
+       Do not check stmt_ends_bb_p or GIMPLE_RETURN anymore.
+       (find_explicit_erroneous_behaviour): Likewise.
+
 2013-11-15  Jeff Law  <law@redhat.com>
 
        * ifcvt.c (find_cond_trap): Properly handle case where
index b7e3b5042ff22b31e3483c4ea31b68c256ae1db1..fd1681209fbbaf3fc449f617443c4c30c65372bc 100644 (file)
@@ -1012,13 +1012,13 @@ inverse_probability (int prob1)
 /* Return true if BB has at least one abnormal outgoing edge.  */
 
 static inline bool
-has_abnormal_outgoing_edge_p (basic_block bb)
+has_abnormal_or_eh_outgoing_edge_p (basic_block bb)
 {
   edge e;
   edge_iterator ei;
 
   FOR_EACH_EDGE (e, ei, bb->succs)
-    if (e->flags & EDGE_ABNORMAL)
+    if (e->flags & (EDGE_ABNORMAL | EDGE_EH))
       return true;
 
   return false;
index 66c13f4cf6fd51025d2915c00d6ee77f067afea4..c42f112da8b3886c4658c08948d3cc0ce5927855 100644 (file)
@@ -224,7 +224,7 @@ find_implicit_erroneous_behaviour (void)
         the trap we insert.  We have to preserve abnormal edges out
         of the isolated block which in turn means updating PHIs at
         the targets of those abnormal outgoing edges.  */
-      if (has_abnormal_outgoing_edge_p (bb))
+      if (has_abnormal_or_eh_outgoing_edge_p (bb))
        continue;
 
       /* First look for a PHI which sets a pointer to NULL and which
@@ -268,15 +268,8 @@ find_implicit_erroneous_behaviour (void)
                {
                  /* We only care about uses in BB.  Catching cases in
                     in other blocks would require more complex path
-                    isolation code. 
-
-                    If the statement must end a block and is not a
-                    GIMPLE_RETURN, then additional work would be
-                    necessary to isolate the path.  Just punt it for
-                    now.  */
-                 if (gimple_bb (use_stmt) != bb
-                     || (stmt_ends_bb_p (use_stmt)
-                         && gimple_code (use_stmt) != GIMPLE_RETURN))
+                    isolation code.   */
+                 if (gimple_bb (use_stmt) != bb)
                    continue;
 
                  if (infer_nonnull_range (use_stmt, lhs))
@@ -316,7 +309,7 @@ find_explicit_erroneous_behaviour (void)
         the trap we insert.  We have to preserve abnormal edges out
         of the isolated block which in turn means updating PHIs at
         the targets of those abnormal outgoing edges.  */
-      if (has_abnormal_outgoing_edge_p (bb))
+      if (has_abnormal_or_eh_outgoing_edge_p (bb))
        continue;
 
       /* Now look at the statements in the block and see if any of
@@ -329,8 +322,7 @@ find_explicit_erroneous_behaviour (void)
          /* By passing null_pointer_node, we can use infer_nonnull_range
             to detect explicit NULL pointer dereferences and other uses
             where a non-NULL value is required.  */
-         if ((!stmt_ends_bb_p (stmt) || gimple_code (stmt) == GIMPLE_RETURN)
-             && infer_nonnull_range (stmt, null_pointer_node))
+         if (infer_nonnull_range (stmt, null_pointer_node))
            {
              insert_trap_and_remove_trailing_statements (&si,
                                                          null_pointer_node);