re PR target/39152 (Revision 144098 breaks 416.gamess in SPEC CPU 2006)

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
This commit is contained in:
H.J. Lu 2009-02-13 14:37:11 +00:00 committed by H.J. Lu
parent 53f648e2a4
commit 72f4e3a7f7
4 changed files with 46 additions and 1 deletions

View 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

View File

@ -20736,7 +20736,9 @@
[(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)]))

View 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

View File

@ -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