From: Volker Reichelt Date: Tue, 16 Aug 2005 22:13:37 +0000 (+0000) Subject: * fold-const.c (tree_expr_nonnegative_p): Regroup cases. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=196f5a8dcd804b909caf88455c775393dd15fa65;p=gcc.git * fold-const.c (tree_expr_nonnegative_p): Regroup cases. From-SVN: r103178 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e010e7867cc..4f2689b6bf4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2005-08-16 Volker Reichelt + + * fold-const.c (tree_expr_nonnegative_p): Regroup cases. + 2005-08-16 Ian Lance Taylor PR c++/23337 diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 1ce20b94e56..db82baae00c 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -10782,6 +10782,15 @@ tree_expr_nonnegative_p (tree t) } return 0; + case BIT_AND_EXPR: + case MAX_EXPR: + return tree_expr_nonnegative_p (TREE_OPERAND (t, 0)) + || tree_expr_nonnegative_p (TREE_OPERAND (t, 1)); + + case BIT_IOR_EXPR: + case BIT_XOR_EXPR: + case MIN_EXPR: + case RDIV_EXPR: case TRUNC_DIV_EXPR: case CEIL_DIV_EXPR: case FLOOR_DIV_EXPR: @@ -10793,19 +10802,21 @@ tree_expr_nonnegative_p (tree t) case CEIL_MOD_EXPR: case FLOOR_MOD_EXPR: case ROUND_MOD_EXPR: + case SAVE_EXPR: + case NON_LVALUE_EXPR: + case FLOAT_EXPR: return tree_expr_nonnegative_p (TREE_OPERAND (t, 0)); - case RDIV_EXPR: - return tree_expr_nonnegative_p (TREE_OPERAND (t, 0)) - && tree_expr_nonnegative_p (TREE_OPERAND (t, 1)); + case COMPOUND_EXPR: + case MODIFY_EXPR: + return tree_expr_nonnegative_p (TREE_OPERAND (t, 1)); - case BIT_AND_EXPR: + case BIND_EXPR: + return tree_expr_nonnegative_p (expr_last (TREE_OPERAND (t, 1))); + + case COND_EXPR: return tree_expr_nonnegative_p (TREE_OPERAND (t, 1)) - || tree_expr_nonnegative_p (TREE_OPERAND (t, 0)); - case BIT_IOR_EXPR: - case BIT_XOR_EXPR: - return tree_expr_nonnegative_p (TREE_OPERAND (t, 0)) - && tree_expr_nonnegative_p (TREE_OPERAND (t, 1)); + && tree_expr_nonnegative_p (TREE_OPERAND (t, 2)); case NOP_EXPR: { @@ -10834,28 +10845,6 @@ tree_expr_nonnegative_p (tree t) } break; - case COND_EXPR: - return tree_expr_nonnegative_p (TREE_OPERAND (t, 1)) - && tree_expr_nonnegative_p (TREE_OPERAND (t, 2)); - case COMPOUND_EXPR: - return tree_expr_nonnegative_p (TREE_OPERAND (t, 1)); - case MIN_EXPR: - return tree_expr_nonnegative_p (TREE_OPERAND (t, 0)) - && tree_expr_nonnegative_p (TREE_OPERAND (t, 1)); - case MAX_EXPR: - return tree_expr_nonnegative_p (TREE_OPERAND (t, 0)) - || tree_expr_nonnegative_p (TREE_OPERAND (t, 1)); - case MODIFY_EXPR: - return tree_expr_nonnegative_p (TREE_OPERAND (t, 1)); - case BIND_EXPR: - return tree_expr_nonnegative_p (expr_last (TREE_OPERAND (t, 1))); - case SAVE_EXPR: - return tree_expr_nonnegative_p (TREE_OPERAND (t, 0)); - case NON_LVALUE_EXPR: - return tree_expr_nonnegative_p (TREE_OPERAND (t, 0)); - case FLOAT_EXPR: - return tree_expr_nonnegative_p (TREE_OPERAND (t, 0)); - case TARGET_EXPR: { tree temp = TARGET_EXPR_SLOT (t);