Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-18 Thread Dominique Dhumieres
> Google is your friend... Thanks Jack. As you can see in comment #46 of pr40106, I have found my own way. In my previous attempts I have made two mistakes: (1) I tried to use the search engine of the gcc mailing lists that kept parsing optimize_insn_for_speed_p as if the _ were spaces. (2) I did

Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-18 Thread Vincent Lefevre
On 2010-03-18 15:49:05 +, Joseph S. Myers wrote: > And the same rule on pow(-0, y) is present in 754-2008 (I don't know > whether this was deliberately following the C definition, or deciding > independently that this was the right definition, but you may know as a > listed member of the bal

Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-18 Thread Joseph S. Myers
On Thu, 18 Mar 2010, Vincent Lefevre wrote: > On 2010-03-18 15:32:04 +0100, Michael Matz wrote: > > > So, pow(-0.0, 0.5) should return +0. But sqrt(-0.0) should return -0 > > > according to the IEEE 754 standard (and F.9.4.5 from ISO C99). > > > > Yes, and I don't know why they specified it like

Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-18 Thread Nathan Froyd
On Thu, Mar 18, 2010 at 04:34:56PM +0100, Vincent Lefevre wrote: > On 2010-03-18 15:32:04 +0100, Michael Matz wrote: > > But unfortunately you are right, this expansion can only be done for > > -fno-signed-zeros. (FWIW the general expandsion of pow(x,N/2) where > > N!=1 is already guarded by unsafe

Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-18 Thread Vincent Lefevre
On 2010-03-18 15:32:04 +0100, Michael Matz wrote: > > So, pow(-0.0, 0.5) should return +0. But sqrt(-0.0) should return -0 > > according to the IEEE 754 standard (and F.9.4.5 from ISO C99). > > Yes, and I don't know why they specified it like that. After all > (-0)*(-0)==+0 (not ==-0), so the ab

Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-18 Thread Jakub Jelinek
On Thu, Mar 18, 2010 at 04:07:28PM +0100, Dominique Dhumieres wrote: > May I remind my original question: > > > In the block "Handle constant exponents." in gcc/builtins.c, the condition > > !optimize_size has been replaced with optimize_insn_for_speed_p () between > > gcc 4.3 and 4.4, but I have

Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-18 Thread Dominique Dhumieres
May I remind my original question: > In the block "Handle constant exponents." in gcc/builtins.c, the condition > !optimize_size has been replaced with optimize_insn_for_speed_p () between > gcc 4.3 and 4.4, but I have not been able to find when and why. > Does anybody remembers the when and why?

Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-18 Thread Michael Matz
Hi, On Thu, 18 Mar 2010, Vincent Lefevre wrote: > On 2010-03-16 16:18:17 +0100, Richard Guenther wrote: > > pow (a, 0.5) is always expanded to sqrt(a). > > This violates the ISO C99 standard for -0.0. > > According to N1256, F.9.4.4: > > pow(±0, y) returns +0 for y > 0 and not an odd integer

Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-18 Thread Vincent Lefevre
On 2010-03-18 14:43:39 +0100, Vincent Lefevre wrote: > This violates the ISO C99 standard for -0.0. > > According to N1256, F.9.4.4: > > pow(±0, y) returns +0 for y > 0 and not an odd integer. > > So, pow(-0.0, 0.5) should return +0. But sqrt(-0.0) should return -0 > according to the IEEE 754

Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-18 Thread Vincent Lefevre
On 2010-03-16 16:18:17 +0100, Richard Guenther wrote: > pow (a, 0.5) is always expanded to sqrt(a). This violates the ISO C99 standard for -0.0. According to N1256, F.9.4.4: pow(±0, y) returns +0 for y > 0 and not an odd integer. So, pow(-0.0, 0.5) should return +0. But sqrt(-0.0) should retu

Re: Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-16 Thread Richard Guenther
On Tue, Mar 16, 2010 at 4:11 PM, Dominique Dhumieres wrote: > In the block "Handle constant exponents." in gcc/builtins.c, the condition > !optimize_size has been replaced with optimize_insn_for_speed_p () between > gcc 4.3 and 4.4, but I have not been able to find when and why. > Does anybody rem

Questions about "Handle constant exponents." in gcc/builtins.c

2010-03-16 Thread Dominique Dhumieres
In the block "Handle constant exponents." in gcc/builtins.c, the condition !optimize_size has been replaced with optimize_insn_for_speed_p () between gcc 4.3 and 4.4, but I have not been able to find when and why. Does anybody remembers the when and why? This change make the optimization sensitive