此 C++ 代码
#include<cmath>
double f1(double a){
return std::cos(a);
}
double f2(double a){
return std::cos(a) + std::sin(a);
}
被编译成以下程序集(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
这是否意味着 gcc 知道 glibc 的标准函数并且针对使用它们的特定情况有优化技术?