aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKai Tietz <ktietz@redhat.com>2011-07-27 16:59:40 +0200
committerKai Tietz <ktietz@gcc.gnu.org>2011-07-27 16:59:40 +0200
commiteb9820c0a3df0746ca13cbe767a2d39ef0a8c751 (patch)
tree8637e94071dbdcec7fd0d5b0c89566bc5503cc18 /gcc
parent1169e45d2716d769be78cf38bcea449414e6ce75 (diff)
downloadgcc-eb9820c0a3df0746ca13cbe767a2d39ef0a8c751.zip
gcc-eb9820c0a3df0746ca13cbe767a2d39ef0a8c751.tar.gz
gcc-eb9820c0a3df0746ca13cbe767a2d39ef0a8c751.tar.bz2
gimple-fold.c (or_comparisons_1): Remove TRUTH_AND/OR expression handling.
2011-07-27 Kai Tietz <ktietz@redhat.com> * gimple-fold.c (or_comparisons_1): Remove TRUTH_AND/OR expression handling. (and_var_with_comparison_1): Likewise. From-SVN: r176827
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimple-fold.c20
2 files changed, 16 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bdb1b61..996bb93 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-07-27 Kai Tietz <ktietz@redhat.com>
+
+ * gimple-fold.c (or_comparisons_1): Remove TRUTH_AND/OR
+ expression handling.
+ (and_var_with_comparison_1): Likewise.
+
2011-07-27 Aldy Hernandez <aldyh@redhat.com>
* params.h (ALLOW_STORE_DATA_RACES): New.
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index d1c5c89..cc89b2f 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -1937,17 +1937,15 @@ and_var_with_comparison_1 (gimple stmt,
/* If the definition is an AND or OR expression, we may be able to
simplify by reassociating. */
- if (innercode == TRUTH_AND_EXPR
- || innercode == TRUTH_OR_EXPR
- || (TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE
- && (innercode == BIT_AND_EXPR || innercode == BIT_IOR_EXPR)))
+ if (TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE
+ && (innercode == BIT_AND_EXPR || innercode == BIT_IOR_EXPR))
{
tree inner1 = gimple_assign_rhs1 (stmt);
tree inner2 = gimple_assign_rhs2 (stmt);
gimple s;
tree t;
tree partial = NULL_TREE;
- bool is_and = (innercode == TRUTH_AND_EXPR || innercode == BIT_AND_EXPR);
+ bool is_and = (innercode == BIT_AND_EXPR);
/* Check for boolean identities that don't require recursive examination
of inner1/inner2:
@@ -2069,6 +2067,7 @@ and_comparisons_1 (enum tree_code code1, tree op1a, tree op1b,
if (operand_equal_p (op1a, op2a, 0)
&& operand_equal_p (op1b, op2b, 0))
{
+ /* Result will be either NULL_TREE, or a combined comparison. */
tree t = combine_comparisons (UNKNOWN_LOCATION,
TRUTH_ANDIF_EXPR, code1, code2,
boolean_type_node, op1a, op1b);
@@ -2080,6 +2079,7 @@ and_comparisons_1 (enum tree_code code1, tree op1a, tree op1b,
if (operand_equal_p (op1a, op2b, 0)
&& operand_equal_p (op1b, op2a, 0))
{
+ /* Result will be either NULL_TREE, or a combined comparison. */
tree t = combine_comparisons (UNKNOWN_LOCATION,
TRUTH_ANDIF_EXPR, code1,
swap_tree_comparison (code2),
@@ -2398,17 +2398,15 @@ or_var_with_comparison_1 (gimple stmt,
/* If the definition is an AND or OR expression, we may be able to
simplify by reassociating. */
- if (innercode == TRUTH_AND_EXPR
- || innercode == TRUTH_OR_EXPR
- || (TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE
- && (innercode == BIT_AND_EXPR || innercode == BIT_IOR_EXPR)))
+ if (TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE
+ && (innercode == BIT_AND_EXPR || innercode == BIT_IOR_EXPR))
{
tree inner1 = gimple_assign_rhs1 (stmt);
tree inner2 = gimple_assign_rhs2 (stmt);
gimple s;
tree t;
tree partial = NULL_TREE;
- bool is_or = (innercode == TRUTH_OR_EXPR || innercode == BIT_IOR_EXPR);
+ bool is_or = (innercode == BIT_IOR_EXPR);
/* Check for boolean identities that don't require recursive examination
of inner1/inner2:
@@ -2531,6 +2529,7 @@ or_comparisons_1 (enum tree_code code1, tree op1a, tree op1b,
if (operand_equal_p (op1a, op2a, 0)
&& operand_equal_p (op1b, op2b, 0))
{
+ /* Result will be either NULL_TREE, or a combined comparison. */
tree t = combine_comparisons (UNKNOWN_LOCATION,
TRUTH_ORIF_EXPR, code1, code2,
boolean_type_node, op1a, op1b);
@@ -2542,6 +2541,7 @@ or_comparisons_1 (enum tree_code code1, tree op1a, tree op1b,
if (operand_equal_p (op1a, op2b, 0)
&& operand_equal_p (op1b, op2a, 0))
{
+ /* Result will be either NULL_TREE, or a combined comparison. */
tree t = combine_comparisons (UNKNOWN_LOCATION,
TRUTH_ORIF_EXPR, code1,
swap_tree_comparison (code2),