[Bug tree-optimization/57492] New: Optimize 2.0**i to ldexp(1.0,i)
tkoenig at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri May 31 20:51:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57492
Bug ID: 57492
Summary: Optimize 2.0**i to ldexp(1.0,i)
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: tkoenig at gcc dot gnu.org
Similar to PR 57073, subject says allm ldexp* is much
faster.
Small benchmark:
#include <stdio.h>
float pow2(int);
int main()
{
int i,j;
float x;
x = 0.0;
for (j=1;j<10000000;j++)
for (i=-4;i<4;i++)
x += pow2(i);
printf("%f",x);
}
ig25@linux-fd1f:~/Krempel/P6> cat pow.c
#include <math.h>
float pow2(int i)
{
return ldexpf(1.0,i);
}
ig25@linux-fd1f:~/Krempel/P6> gcc -O main.c pow.c -lm
ig25@linux-fd1f:~/Krempel/P6> time ./a.out
134217728.000000
real 0m1.100s
user 0m1.098s
sys 0m0.002s
ig25@linux-fd1f:~/Krempel/P6> cat pow2.c
#include <math.h>
float pow2(int i)
{
return powf(2.0,i);
}
ig25@linux-fd1f:~/Krempel/P6> gcc -O main.c pow2.c -lm
ig25@linux-fd1f:~/Krempel/P6> time ./a.out
134217728.000000
real 0m6.231s
user 0m6.227s
sys 0m0.000s
More information about the Gcc-bugs
mailing list