diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2010-11-24 19:16:40 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2010-11-24 11:16:40 -0800 |
commit | f0145bb81657b9916b181ddc5388e9b1e48b36ca (patch) | |
tree | c8cf6601f28348b1ed2e935439573013c5149de7 | |
parent | 617e6634a2c2a39a41035ad9e181260f75e9bf92 (diff) | |
download | gcc-f0145bb81657b9916b181ddc5388e9b1e48b36ca.zip gcc-f0145bb81657b9916b181ddc5388e9b1e48b36ca.tar.gz gcc-f0145bb81657b9916b181ddc5388e9b1e48b36ca.tar.bz2 |
Don't check TREE_THIS_VOLATILE in ix86_expand_call.
gcc/
2010-11-24 H.J. Lu <hongjiu.lu@intel.com>
PR target/46519
* config/i386/i386.c (ix86_expand_call): Don't check
TREE_THIS_VOLATILE.
gcc/testsuite/
2010-11-24 H.J. Lu <hongjiu.lu@intel.com>
PR target/46519
* gfortran.dg/pr46519-1.f: New.
From-SVN: r167126
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr46519-1.f | 46 |
4 files changed, 58 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c388057..ec3b96f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2010-11-24 H.J. Lu <hongjiu.lu@intel.com> PR target/46519 + * config/i386/i386.c (ix86_expand_call): Don't check + TREE_THIS_VOLATILE. + +2010-11-24 H.J. Lu <hongjiu.lu@intel.com> + + PR target/46519 * config/i386/i386.c (upper_128bits_state): New. (block_info_def): Remove upper_128bits_set and done. Add state, referenced, count, processed and rescanned. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 2a46f1a..4e2e6e1 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -21755,7 +21755,7 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1, } /* Add UNSPEC_CALL_NEEDS_VZEROUPPER decoration. */ - if (TARGET_VZEROUPPER && !TREE_THIS_VOLATILE (cfun->decl)) + if (TARGET_VZEROUPPER) { rtx unspec; int avx256; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 054c1fd..019271a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2010-11-24 H.J. Lu <hongjiu.lu@intel.com> PR target/46519 + * gfortran.dg/pr46519-1.f: New. + +2010-11-24 H.J. Lu <hongjiu.lu@intel.com> + + PR target/46519 * gcc.target/i386/avx-vzeroupper-10.c: Expect no avx_vzeroupper. * gcc.target/i386/avx-vzeroupper-11.c: Likewise. diff --git a/gcc/testsuite/gfortran.dg/pr46519-1.f b/gcc/testsuite/gfortran.dg/pr46519-1.f new file mode 100644 index 0000000..7b1775e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr46519-1.f @@ -0,0 +1,46 @@ +! { dg-do compile { target i?86-*-* x86_64-*-* } } +! { dg-options "-O3 -mavx -mvzeroupper -dp" } + + PROGRAM MG3XDEMO + INTEGER LM, NM, NV, NR, NIT + + + PARAMETER( LM=7 ) +C PARAMETER( NIT=40 ) + PARAMETER( NM=2+2**LM, NV=NM**3 ) + PARAMETER( NR = (8*(NM**3+NM**2+5*NM-23+7*LM))/7 ) +C +C +C If commented line is used than there is no penalty +C COMMON /X/ U, V, R, A, C, IR, MM + COMMON /X/ A, C, IR, MM + REAL*8 A(0:3),C(0:3) + + INTEGER IT, N + INTEGER LMI, MTIME, NTIMES +C + READ *,LMI + READ *,NIT + READ *,NTIMES + READ *,U0 + + READ 9004, A + READ 9004, C +9004 FORMAT (4D8.0) + + DO I = 0, 3 + A(I) = A(I)/3.0D0 + C(I) = C(I)/64.0D0 + ENDDO +C + N = 2 + 2**LMI + + WRITE(6,7)N-2,N-2,N-2,NIT + 6 FORMAT( I4, 2E19.12) + 7 FORMAT(/,' KERNEL B: SOLVING A POISSON PROBLEM ON A ',I6,' BY ', + > I6,' BY ',I6,' GRID,',/,' USING ',I6,' MULTIGRID ITERATIONS.',/) +C + STOP + END + +! { dg-final { scan-assembler-times "avx_vzeroupper" 1 } } |