------- Comment #14 from kargl at gcc dot gnu dot org  2007-06-18 20:47 -------
(In reply to comment #13)
> The '-ffloat-store' option works! Thank you.
> 
> However that gave me some quenstions;
> 
>     Is that feature or bug?

It is a 'feature' of the i386 class of cpu.  See PR 323 for 
details.

>     There is many floating point operations of course.
>     Why the only one specific resion make problem?

The floating point operations are done with 80-bit 
precision and the intermediate results that are left
in a register have the extra precision.  Double precision
has 53 bits of precision and single precision has 24
bits.  The mixed mode arithmetic that ftnchek warns
about can cause the type of problem you are seeing.
The -ffloat-store option forces the contents in a register
after a floating pointing operation to be written to main
memory and then re-read.  This removes the extra precision.


>     That is not set when optimize.
>     So, what's the disadvantage and
>     why the 'fortran' with many floating point operation
>     dosn't take it when optimize?

You'll need to review the code.  I'd suggest first eliminating
the warns produced by ftnchek.  If the problems disappear, then
be happy.  If the problems are still present, you'll need to 
review the floating point operations in the code.


>     Why x86 need that option but x86_64 or PPC do not need?

These cpus do not store intermediate results in 80-bit register.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32391

Reply via email to