From 92b1e9639eb6fa97bd8d2effae3e1e60a39f65e5 Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 1 Feb 2017 08:02:50 +0000 Subject: [PATCH] 2017-02-01 Richard Biener PR tree-optimization/71824 * graphite-scop-detection.c (scop_detection::build_scop_breadth): Verify the loops are valid in the merged SESE region. (scop_detection::can_represent_loop_1): Check analyzing the evolution of the number of iterations in the region succeeds. * gcc.dg/graphite/pr71824.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@245081 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/graphite-scop-detection.c | 6 +++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/graphite/pr71824.c | 17 +++++++++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/pr71824.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 02f635ea8f3..1b62c0b7bad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2017-02-01 Richard Biener + + PR tree-optimization/71824 + * graphite-scop-detection.c (scop_detection::build_scop_breadth): + Verify the loops are valid in the merged SESE region. + (scop_detection::can_represent_loop_1): Check analyzing the + evolution of the number of iterations in the region succeeds. + 2017-01-31 Ian Lance Taylor * config/i386/i386.c (ix86_expand_split_stack_prologue): Add diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index 3860693d65c..2f9641235e2 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -905,7 +905,9 @@ scop_detection::build_scop_breadth (sese_l s1, loop_p loop) sese_l combined = merge_sese (s1, s2); - if (combined) + if (combined + && loop_is_valid_in_scop (loop, combined) + && loop_is_valid_in_scop (loop->next, combined)) s1 = combined; else add_scop (s2); @@ -931,6 +933,8 @@ scop_detection::can_represent_loop_1 (loop_p loop, sese_l scop) && niter_desc.control.no_overflow && (niter = number_of_latch_executions (loop)) && !chrec_contains_undetermined (niter) + && !chrec_contains_undetermined (scalar_evolution_in_region (scop, + loop, niter)) && graphite_can_represent_expr (scop, loop, niter); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c313baa6437..dbbd485e118 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-02-01 Richard Biener + + PR tree-optimization/71824 + * gcc.dg/graphite/pr71824.c: New testcase. + 2017-01-31 Jakub Jelinek PR c++/79304 diff --git a/gcc/testsuite/gcc.dg/graphite/pr71824.c b/gcc/testsuite/gcc.dg/graphite/pr71824.c new file mode 100644 index 00000000000..2a90e30e50f --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr71824.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -floop-nest-optimize" } */ + +int a, b, d; +int **c; +int fn1() { + while (a) + if (d) { + int e = -d; + for (; b < e; b++) + c[b] = &a; + } else { + for (; b; b++) + c[b] = &b; + d = 0; + } +} -- 2.11.4.GIT