http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50030
vincenzo Innocente <vincenzo.innocente at cern dot ch> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Regression: sin optimized |sin optimized in sinf at |in sinf at -O2 |-O2 --- Comment #2 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 2011-08-09 20:08:55 UTC --- sorry, the "regression" is in my benchmark that suddenly showed identical timing for "sin" and "sinf" while I was actually testing "sinl" and NOT "sin". I was also using -std=c++0x that apparently preserved sinl(float) so prior to 4.7 (at least 4.6.1) float sind(float x) { return sinl(x); } compiled with c++ -O2 -c expd.cc -std=c++0x produced 40: 48 83 ec 28 sub $0x28,%rsp 44: c5 fa 11 44 24 18 vmovss %xmm0,0x18(%rsp) 4a: d9 44 24 18 flds 0x18(%rsp) 4e: db 3c 24 fstpt (%rsp) 51: e8 00 00 00 00 callq 56 <sind(float)+0x16> 52: R_X86_64_PC32 sinl-0x4 56: d9 5c 24 1c fstps 0x1c(%rsp) 5a: c5 fa 10 44 24 1c vmovss 0x1c(%rsp),%xmm0 60: 48 83 c4 28 add $0x28,%rsp 64: c3 retq 65: 66 66 2e 0f 1f 84 00 nopw %cs:0x0(%rax,%rax,1) 6c: 00 00 00 00 now not anymore. I agree this is not a real regression. still remains that sin and exp behaves differently when a float argument is passed