aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-07-19 15:16:23 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-07-19 15:16:23 +0000
commit3046b1a95c4903b94662e2e24546e6189267cf8f (patch)
treeeec18a2e0fa6d5d61ac7ef3e0f4cd7b59682e4bf
parent5d49b6a7b28117095ef6889b5d010687fa52843c (diff)
downloadgcc-3046b1a95c4903b94662e2e24546e6189267cf8f.zip
gcc-3046b1a95c4903b94662e2e24546e6189267cf8f.tar.gz
gcc-3046b1a95c4903b94662e2e24546e6189267cf8f.tar.bz2
tree-ssa-forwprop.c (lookup_logical_inverted_value): Remove TRUTH_*_EXPR handling.
2011-07-19 Richard Guenther <rguenther@suse.de> * tree-ssa-forwprop.c (lookup_logical_inverted_value): Remove TRUTH_*_EXPR handling. * tree-ssa-operands.c (get_expr_operands): Likewise. * tree-ssa-pre.c (fully_constant_expression): Likewise. * tree-ssa-uninit.c (use_pred_not_overlap_with_undef_path_pre): Likewise. (is_and_or_or): Likewise. (is_norm_cond_subset_of): Likewise. From-SVN: r176463
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/tree-ssa-forwprop.c5
-rw-r--r--gcc/tree-ssa-operands.c4
-rw-r--r--gcc/tree-ssa-pre.c9
-rw-r--r--gcc/tree-ssa-uninit.c16
5 files changed, 19 insertions, 26 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d74516c..1a1fd34 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,16 @@
2011-07-19 Richard Guenther <rguenther@suse.de>
+ * tree-ssa-forwprop.c (lookup_logical_inverted_value): Remove
+ TRUTH_*_EXPR handling.
+ * tree-ssa-operands.c (get_expr_operands): Likewise.
+ * tree-ssa-pre.c (fully_constant_expression): Likewise.
+ * tree-ssa-uninit.c (use_pred_not_overlap_with_undef_path_pre):
+ Likewise.
+ (is_and_or_or): Likewise.
+ (is_norm_cond_subset_of): Likewise.
+
+2011-07-19 Richard Guenther <rguenther@suse.de>
+
* tree.h (fold_build_pointer_plus_loc): New helper function.
(fold_build_pointer_plus_hwi_loc): Likewise.
(fold_build_pointer_plus): Define.
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 1bbee72..5a40f5e 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -1622,16 +1622,13 @@ lookup_logical_inverted_value (tree name)
op2 = NULL_TREE;
/* Get for EQ_EXPR or BIT_XOR_EXPR operation the second operand.
- If CODE isn't an EQ_EXPR, BIT_XOR_EXPR, TRUTH_NOT_EXPR,
- or BIT_NOT_EXPR, then return. */
+ If CODE isn't an EQ_EXPR, BIT_XOR_EXPR, or BIT_NOT_EXPR, then return. */
if (code == EQ_EXPR || code == NE_EXPR
|| code == BIT_XOR_EXPR)
op2 = gimple_assign_rhs2 (def);
switch (code)
{
- case TRUTH_NOT_EXPR:
- return op1;
case BIT_NOT_EXPR:
if (truth_valued_ssa_name (name))
return op1;
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c
index 7f76cbf..995341f 100644
--- a/gcc/tree-ssa-operands.c
+++ b/gcc/tree-ssa-operands.c
@@ -968,15 +968,11 @@ get_expr_operands (gimple stmt, tree *expr_p, int flags)
gimple_set_has_volatile_ops (stmt, true);
/* FALLTHRU */
- case TRUTH_NOT_EXPR:
case VIEW_CONVERT_EXPR:
do_unary:
get_expr_operands (stmt, &TREE_OPERAND (expr, 0), flags);
return;
- case TRUTH_AND_EXPR:
- case TRUTH_OR_EXPR:
- case TRUTH_XOR_EXPR:
case COMPOUND_EXPR:
case OBJ_TYPE_REF:
case ASSERT_EXPR:
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 7c54d2a..a50c837 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -1150,14 +1150,6 @@ fully_constant_expression (pre_expr e)
vn_nary_op_t nary = PRE_EXPR_NARY (e);
switch (TREE_CODE_CLASS (nary->opcode))
{
- case tcc_expression:
- if (nary->opcode == TRUTH_NOT_EXPR)
- goto do_unary;
- if (nary->opcode != TRUTH_AND_EXPR
- && nary->opcode != TRUTH_OR_EXPR
- && nary->opcode != TRUTH_XOR_EXPR)
- return e;
- /* Fallthrough. */
case tcc_binary:
case tcc_comparison:
{
@@ -1199,7 +1191,6 @@ fully_constant_expression (pre_expr e)
return e;
/* Fallthrough. */
case tcc_unary:
-do_unary:
{
/* We have to go from trees to pre exprs to value ids to
constants. */
diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c
index c6da47b..b028588 100644
--- a/gcc/tree-ssa-uninit.c
+++ b/gcc/tree-ssa-uninit.c
@@ -1088,9 +1088,7 @@ use_pred_not_overlap_with_undef_path_pred (
static inline bool
is_and_or_or (enum tree_code tc, tree typ)
{
- return (tc == TRUTH_AND_EXPR
- || tc == TRUTH_OR_EXPR
- || tc == BIT_IOR_EXPR
+ return (tc == BIT_IOR_EXPR
|| (tc == BIT_AND_EXPR
&& (typ == 0 || TREE_CODE (typ) == BOOLEAN_TYPE)));
}
@@ -1415,15 +1413,15 @@ is_norm_cond_subset_of (norm_cond_t norm_cond1,
code1 = norm_cond1->cond_code;
code2 = norm_cond2->cond_code;
- if (code1 == TRUTH_AND_EXPR || code1 == BIT_AND_EXPR)
+ if (code1 == BIT_AND_EXPR)
{
/* Both conditions are AND expressions. */
- if (code2 == TRUTH_AND_EXPR || code2 == BIT_AND_EXPR)
+ if (code2 == BIT_AND_EXPR)
return is_and_set_subset_of (norm_cond1, norm_cond2);
/* NORM_COND1 is an AND expression, and NORM_COND2 is an OR
expression. In this case, returns true if any subexpression
of NORM_COND1 is a subset of any subexpression of NORM_COND2. */
- else if (code2 == TRUTH_OR_EXPR || code2 == BIT_IOR_EXPR)
+ else if (code2 == BIT_IOR_EXPR)
{
size_t len1;
len1 = VEC_length (gimple, norm_cond1->conds);
@@ -1444,7 +1442,7 @@ is_norm_cond_subset_of (norm_cond_t norm_cond1,
}
}
/* NORM_COND1 is an OR expression */
- else if (code1 == TRUTH_OR_EXPR || code1 == BIT_IOR_EXPR)
+ else if (code1 == BIT_IOR_EXPR)
{
if (code2 != code1)
return false;
@@ -1457,10 +1455,10 @@ is_norm_cond_subset_of (norm_cond_t norm_cond1,
gcc_assert (VEC_length (gimple, norm_cond1->conds) == 1);
/* Conservatively returns false if NORM_COND1 is non-decomposible
and NORM_COND2 is an AND expression. */
- if (code2 == TRUTH_AND_EXPR || code2 == BIT_AND_EXPR)
+ if (code2 == BIT_AND_EXPR)
return false;
- if (code2 == TRUTH_OR_EXPR || code2 == BIT_IOR_EXPR)
+ if (code2 == BIT_IOR_EXPR)
return is_subset_of_any (VEC_index (gimple, norm_cond1->conds, 0),
norm_cond1->invert, norm_cond2, false);