]> gcc.gnu.org Git - gcc.git/commitdiff
re PR tree-optimization/42285 (ICE in Graphite's scan_tree_for_params for 416.gamess)
authorSebastian Pop <spop@gcc.gnu.org>
Wed, 9 Dec 2009 15:18:22 +0000 (15:18 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Wed, 9 Dec 2009 15:18:22 +0000 (15:18 +0000)
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

gcc/ChangeLog.graphite
gcc/graphite-scop-detection.c
gcc/testsuite/gfortran.dg/graphite/pr42285.f90 [new file with mode: 0644]

index 3ae20755abf9fff4018d4df2a94560500694099c..a9197a56d67c11704ea13eb7d84a5d975ec1142e 100644 (file)
@@ -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.
index 02c653b69a6ef35ca8fb4a93e93fe6223e78fae3..a24420e9dad56fa7da0ff86199acc5bab918bea7 100644 (file)
@@ -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 (file)
index 0000000..d496d37
--- /dev/null
@@ -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
+
This page took 0.082245 seconds and 5 git commands to generate.