aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-chrec.h
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-09-20 10:19:12 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-09-20 10:19:12 +0000
commita820c834673a3f4de4c0f303d7c686252f5eee8c (patch)
tree49475129f1d63a4e3092e32510059f6a3c26bc16 /gcc/tree-chrec.h
parent3cbe17f7ded6cbdf171c9e7368b0c391501507f1 (diff)
downloadgcc-a820c834673a3f4de4c0f303d7c686252f5eee8c.zip
gcc-a820c834673a3f4de4c0f303d7c686252f5eee8c.tar.gz
gcc-a820c834673a3f4de4c0f303d7c686252f5eee8c.tar.bz2
re PR tree-optimization/58473 (FAIL: ext/random/normal_mv_distribution/cons/default.cc (test for excess errors))
2013-09-20 Richard Biener <rguenther@suse.de> PR middle-end/58473 * tree-chrec.h (build_polynomial_chrec): Use gcc_checking_assert, make type comparison less strict. From-SVN: r202774
Diffstat (limited to 'gcc/tree-chrec.h')
-rw-r--r--gcc/tree-chrec.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/gcc/tree-chrec.h b/gcc/tree-chrec.h
index ad39a6b..c69183b 100644
--- a/gcc/tree-chrec.h
+++ b/gcc/tree-chrec.h
@@ -137,15 +137,18 @@ build_polynomial_chrec (unsigned loop_num,
|| !val)
return chrec_dont_know;
- /* Pointer types should occur only on the left hand side, i.e. in
- the base of the chrec, and not in the step. */
- gcc_assert (!POINTER_TYPE_P (TREE_TYPE (right)));
-
- /* Types of left and right sides of a chrec should be compatible. */
+ /* Types of left and right sides of a chrec should be compatible, but
+ pointer CHRECs are special in that the evolution is of ptroff type. */
if (POINTER_TYPE_P (TREE_TYPE (left)))
- gcc_assert (ptrofftype_p (TREE_TYPE (right)));
+ gcc_checking_assert (ptrofftype_p (TREE_TYPE (right)));
else
- gcc_assert (TREE_TYPE (left) == TREE_TYPE (right));
+ {
+ /* Pointer types should occur only on the left hand side, i.e. in
+ the base of the chrec, and not in the step. */
+ gcc_checking_assert (!POINTER_TYPE_P (TREE_TYPE (right))
+ && types_compatible_p (TREE_TYPE (left),
+ TREE_TYPE (right)));
+ }
if (chrec_zerop (right))
return left;