diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c386069bd3d..9bedbaf6049 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-12-12 Sebastian Pop + + PR middle-end/38409 + * graphite.c (nb_reductions_in_loop): Use simple_iv. + 2008-12-12 Dwarakanath Rajagopal * config/i386/x86intrin.h: New header file to support all x86 diff --git a/gcc/graphite.c b/gcc/graphite.c index 877dffe2816..eda09f89471 100644 --- a/gcc/graphite.c +++ b/gcc/graphite.c @@ -2119,13 +2119,14 @@ nb_reductions_in_loop (loop_p loop) { gimple phi = gsi_stmt (gsi); tree scev; + affine_iv iv; if (!is_gimple_reg (PHI_RESULT (phi))) continue; scev = analyze_scalar_evolution (loop, PHI_RESULT (phi)); scev = instantiate_parameters (loop, scev); - if (chrec_contains_undetermined (scev)) + if (!simple_iv (loop, phi, PHI_RESULT (phi), &iv, true)) res++; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a3c9d7c4e64..34dfb65f071 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-12-12 Sebastian Pop + + PR middle-end/38409 + * gcc.dg/graphite/pr38409.c: New. + 2008-12-12 Daniel Franke PR fortran/36355 diff --git a/gcc/testsuite/gcc.dg/graphite/pr38409.c b/gcc/testsuite/gcc.dg/graphite/pr38409.c new file mode 100644 index 00000000000..521ac3537ae --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr38409.c @@ -0,0 +1,48 @@ +/* { dg-options "-O2 -floop-block" } */ + +typedef struct test input ; +struct test +{ + int type ; + int symflag ; +}; +Chv_copyEntriesToVector ( input *chv,double *dvec) +{ + double *entries ; + int mm, nent; + int first, i, k , stride ; + if ( ((chv)->type == 1) ) + { + for ( i = 0 ; i < 10 ; i++) + { + dvec[2*mm] = entries[2*k] ; + k += stride ; + stride -= 2 ; + } + } + return(mm) ; +} +/* { dg-options "-O2 -floop-block" } */ + +typedef struct test input ; +struct test +{ + int type ; + int symflag ; +}; +Chv_copyEntriesToVector ( input *chv,double *dvec) +{ + double *entries ; + int mm, nent; + int first, i, k , stride ; + if ( ((chv)->type == 1) ) + { + for ( i = 0 ; i < 10 ; i++) + { + dvec[2*mm] = entries[2*k] ; + k += stride ; + stride -= 2 ; + } + } + return(mm) ; +}