diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2008-12-12 17:28:06 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2008-12-12 17:28:06 +0000 |
commit | 0c6ca7f80ad0d8922d775dd5f026b0303131850b (patch) | |
tree | 087e96ac469b200300f2d33c97b0a94b92bf04f4 | |
parent | 0a280b3566a96f29c7d5ec1cc35ef9d12482abb6 (diff) | |
download | gcc-0c6ca7f80ad0d8922d775dd5f026b0303131850b.zip gcc-0c6ca7f80ad0d8922d775dd5f026b0303131850b.tar.gz gcc-0c6ca7f80ad0d8922d775dd5f026b0303131850b.tar.bz2 |
re PR middle-end/38409 ([graphite] ICE : in canonicalize_loop_ivs, at tree-parloops.c:1384)
2008-12-12 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/38409
* gcc.dg/graphite/pr38409.c: New.
* graphite.c (nb_reductions_in_loop): Use simple_iv.
From-SVN: r142716
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/graphite.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/pr38409.c | 48 |
4 files changed, 60 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c386069..9bedbaf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-12-12 Sebastian Pop <sebastian.pop@amd.com> + + PR middle-end/38409 + * graphite.c (nb_reductions_in_loop): Use simple_iv. + 2008-12-12 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com> * config/i386/x86intrin.h: New header file to support all x86 diff --git a/gcc/graphite.c b/gcc/graphite.c index 877dffe..eda09f8 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 a3c9d7c..34dfb65 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-12-12 Sebastian Pop <sebastian.pop@amd.com> + + PR middle-end/38409 + * gcc.dg/graphite/pr38409.c: New. + 2008-12-12 Daniel Franke <franke.daniel@gmail.com> 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 0000000..521ac35 --- /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) ; +} |