The following fixes another disconnect as to with respect to what loop to analyze CHRECs.
Boostrap and regtest running on x86_64-unknown-linux-gnu. Richard. 2018-06-06 Richard Biener <rguent...@suse.de> PR tree-optimization/85935 * graphite-scop-detection.c (find_params_in_bb): Analyze condition operands with respect to the correct loop. Assert the analysis doesn't fail. * gcc.dg/graphite/pr85935.c: New testcase. diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index 48e40142e59..0dafc399521 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -1176,13 +1176,15 @@ find_params_in_bb (sese_info_p region, gimple_poly_bb_p gbb) /* Find parameters in conditional statements. */ gimple *stmt; - loop_p loop = GBB_BB (gbb)->loop_father; FOR_EACH_VEC_ELT (GBB_CONDITIONS (gbb), i, stmt) { + loop_p loop = gimple_bb (stmt)->loop_father; tree lhs = scalar_evolution_in_region (region->region, loop, gimple_cond_lhs (stmt)); tree rhs = scalar_evolution_in_region (region->region, loop, gimple_cond_rhs (stmt)); + gcc_assert (!chrec_contains_undetermined (lhs) + && !chrec_contains_undetermined (rhs)); scan_tree_for_params (region, lhs); scan_tree_for_params (region, rhs); diff --git a/gcc/testsuite/gcc.dg/graphite/pr85935.c b/gcc/testsuite/gcc.dg/graphite/pr85935.c new file mode 100644 index 00000000000..8c63ea93770 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr85935.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-O -floop-parallelize-all -fno-tree-loop-im --param scev-max-expr-size=3" } */ + +typedef int dq; + +int gb; + +void +qq (dq ww, int kk) +{ + dq *up = &ww; + + (void) *up; + + while (kk < 1) + { + ++ww; + + if (ww == 0) + for (gb = 0; gb < 2; ++gb) + ; + + ++kk; + } +}