aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr89677.c15
-rw-r--r--gcc/tree-scalar-evolution.c5
4 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 73b62b2..86e210b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2019-03-13 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/89677
+ * tree-scalar-evolution.c (simplify_peeled_chrec): Do not
+ throw FP expressions at tree-affine.
+
2019-03-14 Richard Biener <rguenther@suse.de>
* tree-pretty-print.c (dump_generic_node): For -gimple properly
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2439836..a61b668 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-03-13 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/89677
+ * gcc.dg/torture/pr89677.c: New testcase.
+
2019-03-13 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/85558
diff --git a/gcc/testsuite/gcc.dg/torture/pr89677.c b/gcc/testsuite/gcc.dg/torture/pr89677.c
new file mode 100644
index 0000000..a45ca1f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr89677.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target int32plus } */
+
+int a, b, d;
+unsigned c;
+float e, f, g;
+void h() {
+ float *i = &g;
+ for (; c < 10; c += 3)
+ for (; d; d += 3) {
+ a = *i;
+ g = f + 0;
+ f = b + *i + (b - e + 305219) + -b + 3;
+ }
+}
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index 3de5590..c814437 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -1456,6 +1456,11 @@ simplify_peeled_chrec (struct loop *loop, tree arg, tree init_cond)
return build_polynomial_chrec (loop->num, init_cond, right);
}
+ /* The affine code only deals with pointer and integer types. */
+ if (!POINTER_TYPE_P (type)
+ && !INTEGRAL_TYPE_P (type))
+ return chrec_dont_know;
+
/* Try harder to check if they are equal. */
tree_to_aff_combination_expand (left, type, &aff1, &peeled_chrec_map);
tree_to_aff_combination_expand (step_val, type, &aff2, &peeled_chrec_map);