diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2005-08-16 22:13:37 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2005-08-16 22:13:37 +0000 |
commit | 196f5a8dcd804b909caf88455c775393dd15fa65 (patch) | |
tree | 1fd6139c624e305c3e6430c6556a003bce1a9e2f /gcc | |
parent | cf0efa6a7633deb6a80e7219575b2fdfb69e2c27 (diff) | |
download | gcc-196f5a8dcd804b909caf88455c775393dd15fa65.zip gcc-196f5a8dcd804b909caf88455c775393dd15fa65.tar.gz gcc-196f5a8dcd804b909caf88455c775393dd15fa65.tar.bz2 |
* fold-const.c (tree_expr_nonnegative_p): Regroup cases.
From-SVN: r103178
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/fold-const.c | 51 |
2 files changed, 24 insertions, 31 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e010e78..4f2689b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2005-08-16 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + + * fold-const.c (tree_expr_nonnegative_p): Regroup cases. + 2005-08-16 Ian Lance Taylor <ian@airs.com> PR c++/23337 diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 1ce20b9..db82baa 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); |