This is the mail archive of the gcc@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]

What is acceptable for -ffast-math? (Was: associative law in combine)


> Joern Rennecke wrote:
> 
> > > > Jan Hubicka wrote:
> 
> > > OK, so to speak loud - where is the proper place to convert
> > > a/b/c to a/(b*c) at tree level. fold-const or some other?
> > 
> > Only if b and c are constants, the operations are floating point, and
> > b can be multiplied with c without loss of precision or overflow.
> > Or if b and/or c is a power of two, and b can be multiplied with c without
> > overflow.
> 
> Joern is right, Jan.  One can argue about the loss of precision (under
> unsafe math optimisations), but not the overflow.  I overlooked that
> issue in my reply to you.  Because overflow can only be determined at
> compile time with constants, this conversion cannot be right for
> variables.
OK, I believe, that our concept of unsafe_math_optimizations allows such
transformation, but I see, that the line between acceptable
unsafe_math_optimization and unacceptable one is pretty fragine.

In case -ffast-math is not enought to ask for such transformation,
we probably should invent switch for that.  This change (plus the
other changes to avoid divisions) seems to play important role
on optimizing some FP software (due to extreme cost of fp division).

Honza


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