re PR middle-end/89677 (internal compiler error: in wide_int_to_tree_1, at tree.c:1549)

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.

	* gcc.dg/torture/pr89677.c: New testcase.

From-SVN: r269646
This commit is contained in:
Richard Biener 2019-03-13 11:32:11 +00:00 committed by Richard Biener
parent c045ea5763
commit cd5091f1ea
4 changed files with 31 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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;
}
}

View File

@ -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);