From: Sebastian Pop Date: Wed, 22 Dec 2010 21:19:34 +0000 (+0000) Subject: Fix PR47019: parameters of a SCoP are SCEV analyzable. X-Git-Tag: releases/gcc-4.6.0~1655 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9be8ba7e828bed6ebcbfdae4d2ca60333b8f6f28;p=thirdparty%2Fgcc.git Fix PR47019: parameters of a SCoP are SCEV analyzable. 2010-12-22 Sebastian Pop PR tree-optimization/47019 * sese.h (scev_analyzable_p): Parameters of a SCoP are SCEV analyzable. * gfortran.dg/graphite/pr47019.f: New. From-SVN: r168182 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 11dea2d503ea..6beaa7c5175a 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 97807d820089..d3b8958ce06c 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 906fc60ab4e7..22b83bf67587 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 000000000000..69067e9c500e --- /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