]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/39152 (Revision 144098 breaks 416.gamess in SPEC CPU 2006)
authorH.J. Lu <hongjiu.lu@intel.com>
Fri, 13 Feb 2009 14:37:11 +0000 (14:37 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Fri, 13 Feb 2009 14:37:11 +0000 (06:37 -0800)
gcc/

2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>

PR target/39152
* config/i386/i386.md: Restrict the new peephole2 to move
between the general purpose registers.

gcc/testsuite/

2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>

PR target/39152
* gfortran.dg/gomp/pr39152.f90: New.

From-SVN: r144158

gcc/ChangeLog
gcc/config/i386/i386.md
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/gomp/pr39152.f90 [new file with mode: 0644]

index 56ef5774ee9c225175ac2ee5dc073bb7df7c6b0e..010070933d9d569f43bcee8735d1c953d9715303 100644 (file)
@@ -1,3 +1,9 @@
+2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/39152
+       * config/i386/i386.md: Restrict the new peephole2 to move
+       between the general purpose registers.
+
 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/39162
index f4aaed6319e540107a3e25b79d300b169f03ebe7..f8a4209c79a62a6c7e8114b127d1d2d51a9ac65e 100644 (file)
                      [(match_dup 0)
                       (match_operand:SI 2 "memory_operand" "")]))
               (clobber (reg:CC FLAGS_REG))])]
-  "operands[0] != operands[1]"
+  "operands[0] != operands[1]
+   && GENERAL_REGNO_P (REGNO (operands[0]))
+   && GENERAL_REGNO_P (REGNO (operands[1]))"
   [(set (match_dup 0) (match_dup 4))
    (parallel [(set (match_dup 0)
                    (match_op_dup 3 [(match_dup 0) (match_dup 1)]))
index cb75a981e9634a83619cde140661d736c5843404..7908894a7f8c4c995251c9da8492b8b1067fad97 100644 (file)
@@ -1,3 +1,8 @@
+2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/39152
+       * gfortran.dg/gomp/pr39152.f90: New.
+
 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/39162
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr39152.f90 b/gcc/testsuite/gfortran.dg/gomp/pr39152.f90
new file mode 100644 (file)
index 0000000..ff088b5
--- /dev/null
@@ -0,0 +1,32 @@
+! { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
+! { dg-options "-march=i486 -fopenmp -mavx -O3 -funroll-all-loops" } 
+
+  call test_workshare
+
+contains
+  subroutine test_workshare
+    integer :: i, j, k, l, m
+    double precision, dimension (64) :: d, e
+    integer, dimension (10) :: f, g
+    integer, dimension (16, 16) :: a, b, c
+    integer, dimension (16) :: n
+!$omp parallel num_threads (4) private (j, k)
+!$omp barrier
+!$omp workshare
+    where (g .lt. 0)
+      f = 100
+    elsewhere
+      where (g .gt. 6) f = f + sum (g)
+      f = 300 + f
+    end where
+!$omp end workshare nowait
+!$omp workshare
+    forall (j = 1:16, k = 1:16) b (k, j) = a (j, k)
+    forall (j = 2:16, n (17 - j) / 4 * 4 .ne. n (17 - j))
+      n (j) = n (j - 1) * n (j)
+    end forall
+!$omp endworkshare
+!$omp end parallel
+
+  end subroutine test_workshare
+end