cor*_*ump 4 c c++ compiler-construction optimization
如果你有使用常量的函数调用,它没有副作用,它不依赖于任何东西,如下所示:
int foo(int a,int b) { return a+b; }
该函数是否内联?或者,也许是在编译时评估的函数,插入此评估的结果代替函数调用?
我尝试用一个相当古老的gcc编译它 -
#include <iostream>
int foo(int a,int b)
{
return a+b;
}
int main()
{
std::cout << foo(100, 123) ;
}
Run Code Online (Sandbox Code Playgroud)
主要编译到这 -
LFB1439:
subq $8, %rsp
.LCFI1:
movl $223, %esi
movl $_ZSt4cout, %edi
call _ZNSolsEi
xorl %eax, %eax
addq $8, %rsp
ret
Run Code Online (Sandbox Code Playgroud)
所以它在编译时编译了添加到223.
显然,结果取决于您的代码和编译器,但这表明它可以并且可以在编译时内联和计算添加,如果可以的话.
归档时间: |
|
查看次数: |
655 次 |
最近记录: |