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] Make the _gfortran_pow* const


On Sun, Nov 26, 2006 at 12:42:20AM -0800, Andrew Pinski wrote:
> On Sun, 2006-11-26 at 09:38 +0100, Tobias Schl??ter wrote:
> > Andrew Pinski <pinskia@gmail.com> wrote on Sun, 26 Nov 2006:
> > >   This patch makes the _gfortran_pow* function constant functions as the
> > > return value is only dependent on those values and they don't have any
> > > special side effects.
> > >
> > > This patch speeds up my father's code by about 10% where he has a couple
> > > of rd**3.
> > 
> > Why are they not compiled as rd*rd*rd?  We have code which should do  
> > just that.
> 
> >From trans-expr.c (gfc_conv_cst_int_power):
>   if (((FLOAT_TYPE_P (type) && !flag_unsafe_math_optimizations) || optimize_size)
>       && (n > 2 || n < -1))
>     return 0;
> 
> Because rd is a floating point value and n > 2.
> 
> There was also some rd**-3 in the source also.
> 

Yes, I'm trying to catch up with my inbox.  The construct
rd**-3 is invalid code; although most compilers accept it.
You need rd**(-3).

-- 
Steve


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