http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57056
Bug #: 57056 Summary: Missed optimization of finite finite builtin Classification: Unclassified Product: gcc Version: 4.7.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: nel...@seznam.cz Created attachment 29930 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29930 benchmark Hi, Current builtin finite is slower on attached benchmark than my version. It also needs to load 64bit constants which is not friendly to code size. My version is: int finite4(double x) { uint64_t lx; EXTRACT_WORDS64(lx,x); lx=lx>>52; return ((lx&0x7ff)!=0x7ff); } Most of uses of isfinite()/finite() function are in condition so I benchmark finite in condition. Benchmark is run by for i in `seq 0 7`; do echo finite$i; gcc finite_bench.c -O3 -Wall -W -fno-builtin-finite -Dfinite=finite$i; for j in `seq 1 8`; do /usr/bin/time -f "%U" ./a.out; done; done