diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 11dea2d503e..6beaa7c5175 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-12-22 Sebastian Pop + + PR tree-optimization/47019 + * sese.h (scev_analyzable_p): Parameters of a SCoP are SCEV analyzable. + 2010-12-22 Nathan Froyd * c-aux-info.c (gen_formal_list_for_type): Use prototype_p. diff --git a/gcc/sese.h b/gcc/sese.h index 97807d82008..d3b8958ce06 100644 --- a/gcc/sese.h +++ b/gcc/sese.h @@ -413,7 +413,8 @@ scev_analyzable_p (tree def, sese region) scev = scalar_evolution_in_region (region, loop, def); return !chrec_contains_undetermined (scev) - && TREE_CODE (scev) != SSA_NAME + && (TREE_CODE (scev) != SSA_NAME + || !defined_in_sese_p (scev, region)) && (tree_does_not_contain_chrecs (scev) || evolution_function_is_affine_p (scev)); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 906fc60ab4e..22b83bf6758 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-12-22 Sebastian Pop + + PR tree-optimization/47019 + * gfortran.dg/graphite/pr47019.f: New. + 2010-12-22 Jason Merrill * g++.dg/init/volatile2.C: New. diff --git a/gcc/testsuite/gfortran.dg/graphite/pr47019.f b/gcc/testsuite/gfortran.dg/graphite/pr47019.f new file mode 100644 index 00000000000..69067e9c500 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/graphite/pr47019.f @@ -0,0 +1,12 @@ +! { dg-options "-O -ftree-pre -fgraphite-identity -fno-tree-copy-prop" } + + subroutine foo (ldmx,ldmy,v) + integer :: ldmx, ldmy, v, l, m + dimension v(5,ldmx,ldmy) + do m = 5, 1, -1 + do l = m+1, 5 + v(m,3,2) = v(1,3,2) + end do + v(m,3,2) = m + end do + end