From: Jason Merrill Date: Mon, 18 Jan 2016 15:54:20 +0000 (-0500) Subject: * cp-gimplify.c (cp_fold): Remove unnecessary special cases. X-Git-Tag: basepoints/gcc-7~1524 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8d8f3235500c7aedcd93431b9c94c5839c833577;p=thirdparty%2Fgcc.git * cp-gimplify.c (cp_fold): Remove unnecessary special cases. From-SVN: r232523 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0ae29124658e..fbc1a7c3ada7 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2016-01-18 Jason Merrill + * 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. diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index e151753b3e4a..2dc53ae5fdf0 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -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: