cfgloop.c (flow_loops_find): Call bb_has_abnormal_pred.
authorNathan Froyd <froydnj@codesourcery.com>
Thu, 21 Oct 2010 13:01:35 +0000 (13:01 +0000)
committerNathan Froyd <froydnj@gcc.gnu.org>
Thu, 21 Oct 2010 13:01:35 +0000 (13:01 +0000)
* cfgloop.c (flow_loops_find): Call bb_has_abnormal_pred.
* reload1.c (has_nonexceptional_receiver): Likewise.
* tree-into-ssa.c (rewrite_update_enter_block): Likewise.
(create_new_def_for): Likewise.
* tree-cfgcleanup.c (remove_forwarder_block): Likewise.
(merge_phi_nodes): Likewise.
(has_abnormal_incoming_edge_p): Delete.

From-SVN: r165772

gcc/ChangeLog
gcc/cfgloop.c
gcc/reload1.c
gcc/tree-cfgcleanup.c
gcc/tree-into-ssa.c

index d265a6b782bb356b8d364ecd6af21896f9a3b3e5..10649f9d47dbe5a27aa1f1126614b918aa0d0922 100644 (file)
@@ -1,3 +1,13 @@
+2010-10-21  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * cfgloop.c (flow_loops_find): Call bb_has_abnormal_pred.
+       * reload1.c (has_nonexceptional_receiver): Likewise.
+       * tree-into-ssa.c (rewrite_update_enter_block): Likewise.
+       (create_new_def_for): Likewise.
+       * tree-cfgcleanup.c (remove_forwarder_block): Likewise.
+       (merge_phi_nodes): Likewise.
+       (has_abnormal_incoming_edge_p): Delete.
+
 2010-10-21  H.J. Lu  <hongjiu.lu@intel.com>
 
        * config/i386/sse.md (ssescalarmodesuffix): Add V8SI and V4DI.
index c242756e848c57843775b34dbbc0c64a31379c72..22bce4f3190775fe915077e110cfe16f578e9a80 100644 (file)
@@ -410,10 +410,7 @@ flow_loops_find (struct loops *loops)
 
       /* If we have an abnormal predecessor, do not consider the
         loop (not worth the problems).  */
-      FOR_EACH_EDGE (e, ei, header->preds)
-       if (e->flags & EDGE_ABNORMAL)
-         break;
-      if (e)
+      if (bb_has_abnormal_pred (header))
        continue;
 
       FOR_EACH_EDGE (e, ei, header->preds)
index e77a14b425bedf89745164aab6b096c1bf38d7c9..c8fd33a62a898fcd571d273e6a726bbfbc323f9a 100644 (file)
@@ -675,10 +675,8 @@ has_nonexceptional_receiver (void)
   /* Now see if there's a reachable block with an exceptional incoming
      edge.  */
   FOR_EACH_BB (bb)
-    if (bb->flags & BB_REACHABLE)
-      FOR_EACH_EDGE (e, ei, bb->preds)
-       if (e->flags & EDGE_ABNORMAL)
-         return true;
+    if (bb->flags & BB_REACHABLE && bb_has_abnormal_pred (bb))
+      return true;
 
   /* No exceptional block reached exit unexceptionally.  */
   return false;
index 3c1ca2d2195e92813ad24f6b6d89d58d406f967b..ae23cfc6ab9aa3e3e400101cd9729496730ea10c 100644 (file)
@@ -338,21 +338,6 @@ tree_forwarder_block_p (basic_block bb, bool phi_wanted)
   return true;
 }
 
-/* Return true if BB has at least one abnormal incoming edge.  */
-
-static inline bool
-has_abnormal_incoming_edge_p (basic_block bb)
-{
-  edge e;
-  edge_iterator ei;
-
-  FOR_EACH_EDGE (e, ei, bb->preds)
-    if (e->flags & EDGE_ABNORMAL)
-      return true;
-
-  return false;
-}
-
 /* If all the PHI nodes in DEST have alternatives for E1 and E2 and
    those alternatives are equal in each of the PHI nodes, then return
    true, else return false.  */
@@ -418,8 +403,8 @@ remove_forwarder_block (basic_block bb)
 
      So if there is an abnormal edge to BB, proceed only if there is
      no abnormal edge to DEST and there are no phi nodes in DEST.  */
-  if (has_abnormal_incoming_edge_p (bb)
-      && (has_abnormal_incoming_edge_p (dest)
+  if (bb_has_abnormal_pred (bb)
+      && (bb_has_abnormal_pred (dest)
          || !gimple_seq_empty_p (phi_nodes (dest))))
     return false;
 
@@ -990,7 +975,7 @@ merge_phi_nodes (void)
       if (gimple_seq_empty_p (phi_nodes (dest))
          /* We don't want to deal with a basic block with
             abnormal edges.  */
-         || has_abnormal_incoming_edge_p (bb))
+         || bb_has_abnormal_pred (bb))
        continue;
 
       if (!dominated_by_p (CDI_DOMINATORS, dest, bb))
index cbd629c7fe53dcb831c8a10ecc07b9d7ae1d0a98..8c2b159399da4e5897ad8131420c471f9e49dd57 100644 (file)
@@ -2080,13 +2080,7 @@ rewrite_update_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
 
   /* Mark the LHS if any of the arguments flows through an abnormal
      edge.  */
-  is_abnormal_phi = false;
-  FOR_EACH_EDGE (e, ei, bb->preds)
-    if (e->flags & EDGE_ABNORMAL)
-      {
-       is_abnormal_phi = true;
-       break;
-      }
+  is_abnormal_phi = bb_has_abnormal_pred (bb);
 
   /* If any of the PHI nodes is a replacement for a name in
      OLD_SSA_NAMES or it's one of the names in NEW_SSA_NAMES, then
@@ -2843,12 +2837,7 @@ create_new_def_for (tree old_name, gimple stmt, def_operand_p def)
       basic_block bb = gimple_bb (stmt);
 
       /* If needed, mark NEW_NAME as occurring in an abnormal PHI node. */
-      FOR_EACH_EDGE (e, ei, bb->preds)
-       if (e->flags & EDGE_ABNORMAL)
-         {
-           SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_name) = 1;
-           break;
-         }
+      SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_name) = bb_has_abnormal_pred (bb);
     }
 
   register_new_name_mapping (new_name, old_name);