------- Comment #8 from uros at kss-loka dot si 2006-01-18 09:50 ------- (In reply to comment #7)
> Hmm, I get (but that looks like different branch predictions): It looks that your default is -mtune=pentium. > _testf: > fldl 4(%esp) > ftst > fnstsw %ax > testb $64, %ah > jne L10 > ftst > fnstsw %ax > fstp %st(0) > testb $69, %ah > jne L5 > fld1 > ret > .align 2,0x90 > L10: > fstp %st(0) > fldz > ret > L5: > flds LC2 > ret With proposed patch, this code is compiled to (-O2 -ffast-math -mtune=pentium -fomit-frame-pointer): testf: fldl 4(%esp) ftst fnstsw %ax fstp %st(0) testb $64, %ah jne .L10 testb $69, %ah jne .L5 fld1 ret .p2align 4,,7 .L10: fldz ret .L5: flds .LC2 ret and for -mtune=i686: testf: fldl 4(%esp) ftst fnstsw %ax fstp %st(0) sahf je .L10 jbe .L5 fld1 ret .p2align 4,,7 .L10: fldz .p2align 4,,8 ret .L5: flds .LC2 .p2align 4,,4 ret BTW: I'll attach a patch, rediffed to current SVN. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17390