mirror of git://gcc.gnu.org/git/gcc.git
re PR tree-optimization/50913 (ICE in scan_tree_for_params_right_scev, at graphite-sese-to-poly.c:633 compiling libgfortran with -floop-interchange -m32)
2012-01-10 Richard Guenther <rguenther@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. From-SVN: r183055
This commit is contained in:
parent
f148a434f6
commit
390b24dcc5
|
|
@ -1,3 +1,10 @@
|
||||||
|
2012-01-10 Richard Guenther <rguenther@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.
|
||||||
|
|
||||||
2012-01-10 Uros Bizjak <ubizjak@gmail.com>
|
2012-01-10 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
* config/i386/constraints.md ("L"): Return true for 0xffffffff.
|
* config/i386/constraints.md ("L"): Return true for 0xffffffff.
|
||||||
|
|
|
||||||
|
|
@ -258,25 +258,33 @@ graphite_can_represent_expr (basic_block scop_entry, loop_p loop,
|
||||||
Graphite. */
|
Graphite. */
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
stmt_has_simple_data_refs_p (loop_p outermost_loop, gimple stmt)
|
stmt_has_simple_data_refs_p (loop_p outermost_loop ATTRIBUTE_UNUSED,
|
||||||
|
gimple stmt)
|
||||||
{
|
{
|
||||||
data_reference_p dr;
|
data_reference_p dr;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
int j;
|
int j;
|
||||||
bool res = true;
|
bool res = true;
|
||||||
VEC (data_reference_p, heap) *drs = VEC_alloc (data_reference_p, heap, 5);
|
VEC (data_reference_p, heap) *drs = NULL;
|
||||||
|
loop_p outer;
|
||||||
|
|
||||||
graphite_find_data_references_in_stmt (outermost_loop,
|
for (outer = loop_containing_stmt (stmt); outer; outer = loop_outer (outer))
|
||||||
loop_containing_stmt (stmt),
|
{
|
||||||
stmt, &drs);
|
graphite_find_data_references_in_stmt (outer,
|
||||||
|
loop_containing_stmt (stmt),
|
||||||
|
stmt, &drs);
|
||||||
|
|
||||||
FOR_EACH_VEC_ELT (data_reference_p, drs, j, dr)
|
FOR_EACH_VEC_ELT (data_reference_p, drs, j, dr)
|
||||||
for (i = 0; i < DR_NUM_DIMENSIONS (dr); i++)
|
for (i = 0; i < DR_NUM_DIMENSIONS (dr); i++)
|
||||||
if (!graphite_can_represent_scev (DR_ACCESS_FN (dr, i)))
|
if (!graphite_can_represent_scev (DR_ACCESS_FN (dr, i)))
|
||||||
{
|
{
|
||||||
res = false;
|
res = false;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free_data_refs (drs);
|
||||||
|
drs = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
free_data_refs (drs);
|
free_data_refs (drs);
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,12 @@
|
||||||
|
2012-01-10 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/50913
|
||||||
|
* 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.
|
||||||
|
|
||||||
2012-01-10 Richard Henderson <rth@redhat.com>
|
2012-01-10 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* lib/target-supports.exp (check_effective_target_vect_perm,
|
* lib/target-supports.exp (check_effective_target_vect_perm,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
void spread_i1 (int *rptr, int *sptr, int ncopies, int *extent, int rdelta, int m)
|
||||||
|
{
|
||||||
|
int *dest;
|
||||||
|
int n;
|
||||||
|
|
||||||
|
while (m--)
|
||||||
|
{
|
||||||
|
dest = rptr;
|
||||||
|
for (n = 0; n < ncopies; n ++)
|
||||||
|
{
|
||||||
|
*dest = *sptr;
|
||||||
|
dest += rdelta;
|
||||||
|
}
|
||||||
|
if (extent [n])
|
||||||
|
if (n)
|
||||||
|
rptr ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { return 0; }
|
||||||
|
|
||||||
|
/* { dg-final { cleanup-tree-dump "graphite" } } */
|
||||||
|
|
@ -23,5 +23,5 @@ int toto()
|
||||||
return a[3][5] + b[1];
|
return a[3][5] + b[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */
|
/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite" { xfail *-*-* } } } */
|
||||||
/* { dg-final { cleanup-tree-dump "graphite" } } */
|
/* { dg-final { cleanup-tree-dump "graphite" } } */
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ c=0.d0
|
||||||
|
|
||||||
end subroutine matrix_multiply
|
end subroutine matrix_multiply
|
||||||
|
|
||||||
! { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" } }
|
! { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" { xfail *-*-* } } }
|
||||||
! { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" { xfail *-*-* } } }
|
! { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" { xfail *-*-* } } }
|
||||||
! { dg-final { cleanup-tree-dump "graphite" } }
|
! { dg-final { cleanup-tree-dump "graphite" } }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,6 @@
|
||||||
RETURN
|
RETURN
|
||||||
END
|
END
|
||||||
|
|
||||||
! { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite" } }
|
! { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite" { xfail *-*-* } } }
|
||||||
! { dg-final { scan-tree-dump-times "will be loop blocked" 2 "graphite" { xfail *-*-* } } }
|
! { dg-final { scan-tree-dump-times "will be loop blocked" 2 "graphite" { xfail *-*-* } } }
|
||||||
! { dg-final { cleanup-tree-dump "graphite" } }
|
! { dg-final { cleanup-tree-dump "graphite" } }
|
||||||
|
|
|
||||||
|
|
@ -41,5 +41,5 @@
|
||||||
! known to be 4 in the inner two loops. See interchange-2.f for the
|
! known to be 4 in the inner two loops. See interchange-2.f for the
|
||||||
! kernel from bwaves.
|
! kernel from bwaves.
|
||||||
|
|
||||||
! { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } }
|
! { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } }
|
||||||
! { dg-final { cleanup-tree-dump "graphite" } }
|
! { dg-final { cleanup-tree-dump "graphite" } }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue