diff options
author | Richard Biener <rguenther@suse.de> | 2013-09-20 10:19:12 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-09-20 10:19:12 +0000 |
commit | a820c834673a3f4de4c0f303d7c686252f5eee8c (patch) | |
tree | 49475129f1d63a4e3092e32510059f6a3c26bc16 /gcc/tree-chrec.h | |
parent | 3cbe17f7ded6cbdf171c9e7368b0c391501507f1 (diff) | |
download | gcc-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.h | 17 |
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; |