diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-chrec.c | 12 |
2 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3972148..254a403 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-03-01 Richard Biener <rguenther@suse.de> + + PR tree-optimization/69983 + * tree-chrec.c (eq_evolutions_p): Handle conversions, compare + types and fall back to operand_equal_p. + 2016-03-01 Andreas Krebbel <krebbel@linux.vnet.ibm.com> Revert diff --git a/gcc/tree-chrec.c b/gcc/tree-chrec.c index 7a2e100..ee789a2 100644 --- a/gcc/tree-chrec.c +++ b/gcc/tree-chrec.c @@ -1468,11 +1468,11 @@ eq_evolutions_p (const_tree chrec0, const_tree chrec1) if (chrec0 == chrec1) return true; + if (! types_compatible_p (TREE_TYPE (chrec0), TREE_TYPE (chrec1))) + return false; + switch (TREE_CODE (chrec0)) { - case INTEGER_CST: - return operand_equal_p (chrec0, chrec1, 0); - case POLYNOMIAL_CHREC: return (CHREC_VARIABLE (chrec0) == CHREC_VARIABLE (chrec1) && eq_evolutions_p (CHREC_LEFT (chrec0), CHREC_LEFT (chrec1)) @@ -1487,8 +1487,12 @@ eq_evolutions_p (const_tree chrec0, const_tree chrec1) && eq_evolutions_p (TREE_OPERAND (chrec0, 1), TREE_OPERAND (chrec1, 1)); + CASE_CONVERT: + return eq_evolutions_p (TREE_OPERAND (chrec0, 0), + TREE_OPERAND (chrec1, 0)); + default: - return false; + return operand_equal_p (chrec0, chrec1, 0); } } |