gimple-fold.c (fold_gimple_assign): Remove folding of the comparison in COND_EXPRs.
authorRichard Biener <rguenther@suse.de>
Mon, 3 Aug 2015 07:28:11 +0000 (07:28 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 3 Aug 2015 07:28:11 +0000 (07:28 +0000)
2015-08-03  Richard Biener  <rguenther@suse.de>

* gimple-fold.c (fold_gimple_assign): Remove folding of
the comparison in COND_EXPRs.

From-SVN: r226489

gcc/ChangeLog
gcc/gimple-fold.c

index a1bdecdaa6693b86aa282b46bf819be23fd47132..7e6464890fe672f42cf075c33ed0b34fc1ec100a 100644 (file)
@@ -1,3 +1,8 @@
+2015-08-03  Richard Biener  <rguenther@suse.de>
+
+       * gimple-fold.c (fold_gimple_assign): Remove folding of
+       the comparison in COND_EXPRs.
+
 2015-08-03  Richard Biener  <rguenther@suse.de>
 
        * gimple-match-head.c (gimple_simplify): For [VEC_]COND_EXPRs
index 86caa8cf96e54f91f957137e1e72eed1d423cab0..c624689e7265d54110b80950bcbf0f01ecb54707 100644 (file)
@@ -416,49 +416,11 @@ fold_gimple_assign (gimple_stmt_iterator *si)
       break;
 
     case GIMPLE_TERNARY_RHS:
-      /* Try to fold a conditional expression.  */
-      if (gimple_assign_rhs_code (stmt) == COND_EXPR)
-       {
-         tree op0 = gimple_assign_rhs1 (stmt);
-         tree tem;
-         bool set = false;
-         location_t cond_loc = gimple_location (stmt);
-
-         if (COMPARISON_CLASS_P (op0))
-           {
-             fold_defer_overflow_warnings ();
-             tem = fold_binary_loc (cond_loc,
-                                    TREE_CODE (op0), TREE_TYPE (op0),
-                                    TREE_OPERAND (op0, 0),
-                                    TREE_OPERAND (op0, 1));
-             /* This is actually a conditional expression, not a GIMPLE
-                conditional statement, however, the valid_gimple_rhs_p
-                test still applies.  */
-             set = (tem && is_gimple_condexpr (tem)
-                    && valid_gimple_rhs_p (tem));
-             fold_undefer_overflow_warnings (set, stmt, 0);
-           }
-         else if (is_gimple_min_invariant (op0))
-           {
-             tem = op0;
-             set = true;
-           }
-         else
-           return NULL_TREE;
-
-         if (set)
-           result = fold_build3_loc (cond_loc, COND_EXPR,
-                                     TREE_TYPE (gimple_assign_lhs (stmt)), tem,
-                                     gimple_assign_rhs2 (stmt),
-                                     gimple_assign_rhs3 (stmt));
-       }
-
-      if (!result)
-       result = fold_ternary_loc (loc, subcode,
-                                  TREE_TYPE (gimple_assign_lhs (stmt)),
-                                  gimple_assign_rhs1 (stmt),
-                                  gimple_assign_rhs2 (stmt),
-                                  gimple_assign_rhs3 (stmt));
+      result = fold_ternary_loc (loc, subcode,
+                                TREE_TYPE (gimple_assign_lhs (stmt)),
+                                gimple_assign_rhs1 (stmt),
+                                gimple_assign_rhs2 (stmt),
+                                gimple_assign_rhs3 (stmt));
 
       if (result)
         {