OSDN Git Service

Fix PR42285.
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Dec 2009 15:18:22 +0000 (15:18 +0000)
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Dec 2009 15:18:22 +0000 (15:18 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@155108 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 3ae2075..a9197a5 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 02c653b..a24420e 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
+