]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* cp-gimplify.c (cp_fold): Remove unnecessary special cases.
authorJason Merrill <jason@redhat.com>
Mon, 18 Jan 2016 15:54:20 +0000 (10:54 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 18 Jan 2016 15:54:20 +0000 (10:54 -0500)
From-SVN: r232523

gcc/cp/ChangeLog
gcc/cp/cp-gimplify.c

index 0ae29124658eff8ed5b6da7c390d4a548c7c7cca..fbc1a7c3ada7c6f0f56bc85313eb8f0fc2f7a08e 100644 (file)
@@ -1,5 +1,7 @@
 2016-01-18  Jason Merrill  <jason@redhat.com>
 
+       * cp-gimplify.c (cp_fold): Remove unnecessary special cases.
+
        PR c++/68767
        * cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify.  Do fold COND_EXPR.
        (contains_label_1, contains_label_p): Remove.
index e151753b3e4a37dc6a4f3d63d676c4a126a384f1..2dc53ae5fdf0998ec565d6ed0df8c3d72d638487 100644 (file)
@@ -1942,19 +1942,8 @@ cp_fold (tree x)
       if (VOID_TYPE_P (TREE_TYPE (x)))
        return x;
 
-      if (!TREE_OPERAND (x, 0)
-         || TREE_CODE (TREE_OPERAND (x, 0)) == NON_LVALUE_EXPR)
-       return x;
-
       loc = EXPR_LOCATION (x);
-      op0 = TREE_OPERAND (x, 0);
-
-      if (TREE_CODE (x) == NOP_EXPR
-         && TREE_OVERFLOW_P (op0)
-         && TREE_TYPE (x) == TREE_TYPE (op0))
-       return x;
-
-      op0 = cp_fold_maybe_rvalue (op0, rval_ops);
+      op0 = cp_fold_maybe_rvalue (TREE_OPERAND (x, 0), rval_ops);
 
       if (op0 != TREE_OPERAND (x, 0))
         x = fold_build1_loc (loc, code, TREE_TYPE (x), op0);
@@ -2000,16 +1989,6 @@ cp_fold (tree x)
     case POSTDECREMENT_EXPR:
     case POSTINCREMENT_EXPR:
     case INIT_EXPR:
-
-       loc = EXPR_LOCATION (x);
-       op0 = cp_fold (TREE_OPERAND (x, 0));
-       op1 = cp_fold_rvalue (TREE_OPERAND (x, 1));
-
-       if (TREE_OPERAND (x, 0) != op0 || TREE_OPERAND (x, 1) != op1)
-         x = build2_loc (loc, code, TREE_TYPE (x), op0, op1);
-
-       break;
-
     case PREDECREMENT_EXPR:
     case PREINCREMENT_EXPR:
     case COMPOUND_EXPR:
@@ -2054,25 +2033,12 @@ cp_fold (tree x)
       loc = EXPR_LOCATION (x);
       op0 = cp_fold_maybe_rvalue (TREE_OPERAND (x, 0), rval_ops);
       op1 = cp_fold_rvalue (TREE_OPERAND (x, 1));
-      if ((code == COMPOUND_EXPR || code == MODIFY_EXPR)
-         && ((op1 && TREE_SIDE_EFFECTS (op1))
-              || (op0 && TREE_SIDE_EFFECTS (op0))))
-       {
-         if (op0 != TREE_OPERAND (x, 0) || op1 != TREE_OPERAND (x, 1))
-           x = build2_loc (loc, code, TREE_TYPE (x), op0, op1);
-         break;
-       }
-      if (TREE_CODE (x) == COMPOUND_EXPR && !op0)
-       op0 = build_empty_stmt (loc);
 
       if (op0 != TREE_OPERAND (x, 0) || op1 != TREE_OPERAND (x, 1))
        x = fold_build2_loc (loc, code, TREE_TYPE (x), op0, op1);
       else
        x = fold (x);
 
-      if (TREE_CODE (x) == COMPOUND_EXPR && TREE_OPERAND (x, 0) == NULL_TREE
-         && TREE_OPERAND (x, 1))
-       return TREE_OPERAND (x, 1);
       break;
 
     case VEC_COND_EXPR: