------- Comment #20 from kargl at gcc dot gnu dot org 2009-09-12 01:31 ------- AFAICT, this PR 323.
program VolatileTest implicit none real(8), volatile :: a real(8) uA, uB, b, c real(4), volatile :: ra real(4) ruA, ruB, rb, rc read(*,*) uA, uB, rua, ruB a = uA * uA b = uB * uB c = a - b ra = ruA * ruA rb = ruB * ruB rc = ra - rb write(*,'(3ES24.16)') a, b, c write(*,'(Z16,1X,Z16,1X,Z16)') a, b, c write(*,'(3ES15.7)') ra, rb, rc write(*,'(Z8,1X,Z8,1X,Z8)') ra, rb, rc end program VolatileTest My test system, CPU: Intel(R) Core(TM)2 Duo CPU T7250 @ 2.00GHz (1995.02-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x6fd Stepping = 13 Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> Features2=0xe3bd<SSE3,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM> AMD Features=0x20100000<NX,LM> AMD Features2=0x1<LAHF> TSC: P-state invariant REMOVE:kargl[52] gfc4x -o z dd.f90 REMOVE:kargl[53] ./z 0.1 0.1 0.1 0.1 1.0000000000000002E-02 1.0000000000000002E-02 0.0000000000000000E+00 3F847AE147AE147C 3F847AE147AE147C 0 1.0000001E-02 1.0000001E-02 0.0000000E+00 3C23D70B 3C23D70B 0 REMOVE:kargl[54] gfc4x -o z -O2 dd.f90 REMOVE:kargl[55] ./z 0.1 0.1 0.1 0.1 0.1 1.0000000000000002E-02 1.0000000000000002E-02 0.0000000000000000E+00 3F847AE147AE147C 3F847AE147AE147C 0 1.0000001E-02 1.0000001E-02 4.0978193E-10 3C23D70B 3C23D70B 2FE147AE REMOVE:kargl[56] gfc4x -o z -O2 -mfpmath=387 dd.f90 REMOVE:kargl[57] ./z 0.1 0.1 0.1 0.1 1.0000000000000002E-02 1.0000000000000002E-02 0.0000000000000000E+00 3F847AE147AE147C 3F847AE147AE147C 0 1.0000001E-02 1.0000001E-02 4.0978193E-10 3C23D70B 3C23D70B 2FE147AE REMOVE:kargl[59] gfc4x -o z -O2 -mfpmath=387 -ffloat-store dd.f90 REMOVE:kargl[60] ./z 0.1 0.1 0.1 0.1 1.0000000000000002E-02 1.0000000000000002E-02 0.0000000000000000E+00 3F847AE147AE147C 3F847AE147AE147C 0 1.0000001E-02 1.0000001E-02 0.0000000E+00 3C23D70B 3C23D70B 0 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41335