diff options
author | Richard Biener <rguenther@suse.de> | 2016-03-01 15:58:25 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-03-01 15:58:25 +0000 |
commit | e546907cd952ac97968b579b2bf6942e08b302ef (patch) | |
tree | 1f973cccee4e6ef4bb323dcafb0cebbdfb1fa1e7 /gcc/tree-chrec.c | |
parent | 1be56bc54224b8e74c7596d243e24659970876b9 (diff) | |
download | gcc-e546907cd952ac97968b579b2bf6942e08b302ef.zip gcc-e546907cd952ac97968b579b2bf6942e08b302ef.tar.gz gcc-e546907cd952ac97968b579b2bf6942e08b302ef.tar.bz2 |
re PR middle-end/69983 (FAIL: gcc.dg/graphite/scop-sor.c scan-tree-dump-times graphite "number of SCoPs: 1" 1)
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.
From-SVN: r233856
Diffstat (limited to 'gcc/tree-chrec.c')
-rw-r--r-- | gcc/tree-chrec.c | 12 |
1 files changed, 8 insertions, 4 deletions
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); } } |