[PATCH] Perform constant folding of math builtins
Kaveh R. Ghazi
ghazi@caip.rutgers.edu
Mon Aug 26 09:29:00 GMT 2002
> From: Roger Sayle
>
> On Mon, 26 Aug 2002, Kaveh R. Ghazi wrote:
> > > From: Roger Sayle <roger at eyesopen dot com>
> > > The following patch implements the following optimizations:
> > >
> > > sqrt(0.0) = 0.0
> > > sqrt(1.0) = 1.0
> > > log(1.0) = 0.0
> > > exp(0.0) = 1.0
> >
> > Why just these cases, can't you fold all calls where the argument is
> > constant? (Ditto for the trig functions?)
>
> Hi Kaveh,
>
> I'd love to be able to perform constant folding for all values and
> also for the trigonometric functions. There are two issues. The
> first is that "cc1" is not currently linked against -lm, so the host
> libm functions aren't available to the compiler.
Well that's not a showstopper, you can add it if need be.
> The second is that
> these values need to be calculated in the precision required for the
> target, so shouldn't use the host functions anyway.
Why not? Aren't we talking about "unsafe" math opts?
Perhaps you could lower the risk by checking that HOST_FLOAT_FORMAT ==
TARGET_FLOAT_FORMAT, or check if we're doing a cross-compile.
> Of course, I could also add "cos(0.0) = 1.0" and "sin(0.0) = 0.0" with
> the existing infrastructure.
Certainly, but I was hoping we could catch all math funcs with
constant parameters.
--Kaveh
PS: Leaving constants aside, aren't there some mathematically
equivalent trigonometric simplifications one could do like the log/exp
ones in your original patch?
--
Kaveh R. Ghazi Director of Systems Architecture
ghazi@caip.rutgers.edu Qwest Solutions
More information about the Gcc-patches
mailing list