aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-forwprop.c
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2004-09-24 13:26:29 +0000
committerAndrew Pinski <pinskia@physics.uc.edu>2004-09-24 13:26:29 +0000
commit98a521a00369e58894bec92f50ad33fc00e0f75f (patch)
tree58c2501c3ecaa6e0b9dc6365590dbe4096a9f698 /gcc/tree-ssa-forwprop.c
parent43f0ee7c3112212aa2b070b15f77324a22ed6f24 (diff)
2004-09-24 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/17624 * tree-ssa-forwprop.c (record_single_argument_cond_exprs): Reject if any of the operands occur in an abnormal PHI. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@88032 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-forwprop.c')
-rw-r--r--gcc/tree-ssa-forwprop.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 619cab03320..cbf1fdec578 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -212,6 +212,11 @@ record_single_argument_cond_exprs (varray_type cond_worklist,
|| !CONSTANT_CLASS_P (op1)
|| !INTEGRAL_TYPE_P (TREE_TYPE (op1)))
continue;
+
+ /* Don't propagate if the first operand occurs in
+ an abnormal PHI. */
+ if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (op0))
+ continue;
}
/* These cases require comparisons of a naked SSA_NAME or
@@ -235,6 +240,18 @@ record_single_argument_cond_exprs (varray_type cond_worklist,
|| (TREE_CODE (op1) != SSA_NAME
&& !is_gimple_min_invariant (op1)))
continue;
+
+ /* Don't propagate if the first operand occurs in
+ an abnormal PHI. */
+ if (TREE_CODE (op0) == SSA_NAME
+ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (op0))
+ continue;
+
+ /* Don't propagate if the second operand occurs in
+ an abnormal PHI. */
+ if (TREE_CODE (op1) == SSA_NAME
+ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (op1))
+ continue;
}
/* If TEST_VAR is set from a TRUTH_NOT_EXPR, then it
@@ -247,6 +264,12 @@ record_single_argument_cond_exprs (varray_type cond_worklist,
if (TREE_CODE (def_rhs) != SSA_NAME
&& !is_gimple_min_invariant (def_rhs))
continue;
+
+ /* Don't propagate if the operand occurs in
+ an abnormal PHI. */
+ if (TREE_CODE (def_rhs) == SSA_NAME
+ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (def_rhs))
+ continue;
}
/* If TEST_VAR was set from a cast of an integer type
@@ -268,6 +291,13 @@ record_single_argument_cond_exprs (varray_type cond_worklist,
;
else
continue;
+
+ /* Don't propagate if the operand occurs in
+ an abnormal PHI. */
+ if (TREE_CODE (TREE_OPERAND (def_rhs, 0)) == SSA_NAME
+ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (TREE_OPERAND
+ (def_rhs, 0)))
+ continue;
}
else
continue;