Este código c++ é
#include<cmath>
double f1(double a){
return std::cos(a);
}
double f2(double a){
return std::cos(a) + std::sin(a);
}
é compilado no seguinte assembly ( https://godbolt.org/z/Y578h1TKx )
f1(double):
jmp cos
f2(double):
sub rsp, 24
lea rdi, [rsp+8]
mov rsi, rsp
call sincos
movsd xmm0, QWORD PTR [rsp+8]
addsd xmm0, QWORD PTR [rsp]
add rsp, 24
ret
Isso significa que o gcc conhece as funções padrão da glibc e tem técnicas de otimização para casos específicos que as utilizam?