OSDN Git Service

PR tree-optimization/46008
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Oct 2010 19:34:16 +0000 (19:34 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Oct 2010 19:34:16 +0000 (19:34 +0000)
* tree-if-conv.c (predicate_bbs): Try to canonicalize c2
if possible.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165476 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-if-conv.c

index bab6958..499efa5 100644 (file)
@@ -1,3 +1,9 @@
+2010-10-14  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/46008
+       * tree-if-conv.c (predicate_bbs): Try to canonicalize c2
+       if possible.
+
 2010-10-14  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/44913
index e92090f..642dbda 100644 (file)
@@ -915,7 +915,7 @@ predicate_bbs (loop_p loop)
 
            case GIMPLE_COND:
              {
-               tree c2;
+               tree c2, tem;
                edge true_edge, false_edge;
                location_t loc = gimple_location (stmt);
                tree c = fold_build2_loc (loc, gimple_cond_code (stmt),
@@ -932,6 +932,9 @@ predicate_bbs (loop_p loop)
 
                /* If C is false, then FALSE_EDGE is taken.  */
                c2 = invert_truthvalue_loc (loc, unshare_expr (c));
+               tem = canonicalize_cond_expr_cond (c2);
+               if (tem)
+                 c2 = tem;
                add_to_dst_predicate_list (loop, false_edge, cond, c2);
 
                cond = NULL_TREE;