diff options
author | Sebastian Pop <spop@gcc.gnu.org> | 2009-12-09 15:18:22 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2009-12-09 15:18:22 +0000 |
commit | d505015aa52a7113d13a185e2aa4c14e77c9a1fa (patch) | |
tree | 3248fff7ff5f8b31595f3224f05124441e5d911a /gcc | |
parent | da8a7529b5d71b27396f19b3677d17ae6457d376 (diff) | |
download | gcc-d505015aa52a7113d13a185e2aa4c14e77c9a1fa.zip gcc-d505015aa52a7113d13a185e2aa4c14e77c9a1fa.tar.gz gcc-d505015aa52a7113d13a185e2aa4c14e77c9a1fa.tar.bz2 |
re PR tree-optimization/42285 (ICE in Graphite's scan_tree_for_params for 416.gamess)
Fix PR42285.
2009-12-08 Sebastian Pop <sebpop@gmail.com>
PR middle-end/42285
* graphite-scop-detection.c (graphite_can_represent_init): Also
handle more complex MULT_EXPRs containing parameters by recursion
on the structure.
* testsuite/gfortran.dg/graphite/pr42285.f90: New.
From-SVN: r155108
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog.graphite | 13 | ||||
-rw-r--r-- | gcc/graphite-scop-detection.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/graphite/pr42285.f90 | 24 |
3 files changed, 41 insertions, 2 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 3ae2075..a9197a5 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,16 @@ +2009-12-08 Sebastian Pop <sebpop@gmail.com> + + PR middle-end/42285 + * graphite-scop-detection.c (graphite_can_represent_init): Also + handle more complex MULT_EXPRs containing parameters by recursion + on the structure. + + * testsuite/gfortran.dg/graphite/pr42285.f90: New. + +2009-12-01 Tobias Grosser <grosser@fim.uni-passau.de> + + * testsuite/g++.dg/graphite/pr42130.C: Fix type. + 2009-11-29 Alexander Monakov <amonakov@gcc.gnu.org> * testsuite/g++.dg/graphite/pr42130.C: Correct testcase. diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index 02c653b..a24420e 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -168,9 +168,11 @@ graphite_can_represent_init (tree e) case MULT_EXPR: if (chrec_contains_symbols (TREE_OPERAND (e, 0))) - return host_integerp (TREE_OPERAND (e, 1), 0); + return graphite_can_represent_init (TREE_OPERAND (e, 0)) + && host_integerp (TREE_OPERAND (e, 1), 0); else - return host_integerp (TREE_OPERAND (e, 0), 0); + return graphite_can_represent_init (TREE_OPERAND (e, 1)) + && host_integerp (TREE_OPERAND (e, 0), 0); case PLUS_EXPR: case POINTER_PLUS_EXPR: diff --git a/gcc/testsuite/gfortran.dg/graphite/pr42285.f90 b/gcc/testsuite/gfortran.dg/graphite/pr42285.f90 new file mode 100644 index 0000000..d496d37 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/graphite/pr42285.f90 @@ -0,0 +1,24 @@ +! { dg-options "-O2 -floop-interchange" } + +SUBROUTINE EFGRDM(NCF,NFRG,G,RTRMS,GM,IOPT,K1) + IMPLICIT DOUBLE PRECISION (A-H,O-Z) + DIMENSION G(*),RTRMS(*),GM(*) + + DUM = 0 + DO I=1,NFRG + DO J=1,3 + IF (IOPT.EQ.0) THEN + GM(K1)=G(K1) + END IF + END DO + DO J=1,3 + JDX=NCF*9+IOPT*9*NFRG + DO M=1,3 + DUM=DUM+RTRMS(JDX+M) + END DO + GM(K1)=DUM + END DO + END DO + RETURN +END SUBROUTINE EFGRDM + |