diff options
author | Jason Merrill <jason@redhat.com> | 2016-01-18 10:54:20 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2016-01-18 10:54:20 -0500 |
commit | 8d8f3235500c7aedcd93431b9c94c5839c833577 (patch) | |
tree | 8e0caca43ae0b58bf0136859369f7172a7d15d16 | |
parent | 7f26f7df904d3894d726e36a57d5f004eef71a74 (diff) | |
download | gcc-8d8f3235500c7aedcd93431b9c94c5839c833577.zip gcc-8d8f3235500c7aedcd93431b9c94c5839c833577.tar.gz gcc-8d8f3235500c7aedcd93431b9c94c5839c833577.tar.bz2 |
* cp-gimplify.c (cp_fold): Remove unnecessary special cases.
From-SVN: r232523
-rw-r--r-- | gcc/cp/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/cp/cp-gimplify.c | 36 |
2 files changed, 3 insertions, 35 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0ae2912..fbc1a7c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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. diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index e151753..2dc53ae 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: |