aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2010-11-24 19:16:40 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2010-11-24 11:16:40 -0800
commitf0145bb81657b9916b181ddc5388e9b1e48b36ca (patch)
treec8cf6601f28348b1ed2e935439573013c5149de7
parent617e6634a2c2a39a41035ad9e181260f75e9bf92 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr46519-1.f46
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 } }