http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14741
--- Comment #21 from Sebastian Pop <spop at gcc dot gnu.org> --- Scop detection does not detect this loop because we now require the scev of the data references to be analyzable in all the loops around: commit e97c4b0daa932558eae4d9b9794cdd549e6d40bd Author: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue Jan 10 09:14:51 2012 +0000 2012-01-10 Richard Guenther <rguent...@suse.de> PR tree-optimization/50913 * graphite-scop-detection.c (stmt_has_simple_data_refs_p): Require data-refs to be representable by Graphite with respect to any loop nest. * gcc.dg/graphite/interchange-16.c: New testcase. * gcc.dg/graphite/scop-20.c: XFAIL. * gfortran.dg/graphite/interchange-1.f: Likewise. * gfortran.dg/graphite/block-1.f90: Likewise. * gfortran.dg/graphite/block-2.f: Likewise. So for this gimple stmt: # VUSE <.MEM_6> _29 = *a_28(D)[_27]; the data reference when analyzed in the innermost loop is: {(stride.12_14 + offset.13_15) + _19, +, stride.12_14}_3 and that cannot be represented in graphite as it has a non constant (parametric) stride. Note that this data reference can be represented in an outer loop, as the stride is then a multidimensional access with constant strides.