From 0c6ca7f80ad0d8922d775dd5f026b0303131850b Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Fri, 12 Dec 2008 17:28:06 +0000 Subject: [PATCH] re PR middle-end/38409 ([graphite] ICE : in canonicalize_loop_ivs, at tree-parloops.c:1384) 2008-12-12 Sebastian Pop PR middle-end/38409 * gcc.dg/graphite/pr38409.c: New. * graphite.c (nb_reductions_in_loop): Use simple_iv. From-SVN: r142716 --- gcc/ChangeLog | 5 +++ gcc/graphite.c | 3 +- gcc/testsuite/ChangeLog | 5 +++ gcc/testsuite/gcc.dg/graphite/pr38409.c | 48 +++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/pr38409.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c386069bd3da..9bedbaf60499 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 877dffe2816c..eda09f89471b 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 a3c9d7c4e64c..34dfb65f0713 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 000000000000..521ac3537aec --- /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) ; +}