This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, middle-end, i386]: reciprocal rsqrt pass + full recip x86 backend support


Uros Bizjak wrote:
> This patch implements reciprocal sqrt pass.

I don't know whether this a bug in the patch or only revealed by the
patch, but the "aermod.f90" benchmark from Polyhedron crashes here at
run time (segmentation fault) when compiled with

  gfortran -ffast-math -mrecip aermod.f90

Valgrind claims:
==16734== Conditional jump or move depends on uninitialised value(s)
==16734==    at 0x4BA046: numrise_ (aermod.f90:35497)
==16734==    by 0x4CBC05: prmdelh_ (aermod.f90:39786)
==16734==    by 0x41D06F: prmcalc_ (aermod.f90:6787)
[...]

The program does not crash without -mrecip.

Tobias


PS: Polyhedron result on AMD Athlon(tm) 64 X2 Dual Core Processor 4800+

Column 1:
gfortran -march=opteron -ffast-math -funroll-loops -ftree-vectorize
-ftree-loop-linear -msse3 -O3

Column 2:
gfortran -march=opteron -ffast-math -funroll-loops -ftree-vectorize
-ftree-loop-linear -mrecip -msse3 -O3

13.90 13.90  ac
37.17  --    aermod (wrong-code)
13.88 13.92  air
84.56 88.85  capacita (+5%)
12.72 12.72  channel
43.11 41.78  doduc (-3%)
11.70 11.67  fatigue
12.09  9.26  gas_dyn (-24%) great!
51.88 51.85  induct
25.95 25.95  linpk
23.90 23.93  mdbx
28.24 28.19  nf
63.96 64.40  protein
36.72 36.74  rnflow
19.42 19.35  test_fpu
 7.82  7.90   tfft


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]