diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c388057f813..ec3b96f664d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-11-24 H.J. Lu + + PR target/46519 + * config/i386/i386.c (ix86_expand_call): Don't check + TREE_THIS_VOLATILE. + 2010-11-24 H.J. Lu PR target/46519 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 2a46f1a3982..4e2e6e1db80 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 054c1fdf957..019271ae478 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-11-24 H.J. Lu + + PR target/46519 + * gfortran.dg/pr46519-1.f: New. + 2010-11-24 H.J. Lu PR target/46519 diff --git a/gcc/testsuite/gfortran.dg/pr46519-1.f b/gcc/testsuite/gfortran.dg/pr46519-1.f new file mode 100644 index 00000000000..7b1775e8b03 --- /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 } }