如何从GCC /铿锵声组件输出中消除“噪音”?我想检查boost::variant在我的代码中应用的程序集输出,以便查看哪些中间调用被优化掉了。当我编译以下示例(使用GCC 5.3 g++ -O3 -std=c++14 -S)时,似乎编译器优化了所有内容并直接返回100:(...)main:.LFB9320:
.cfi_startproc
movl $100, %eax
ret .cfi_endproc(...)#include <boost/variant.hpp>struct Foo{
int get() { return 100; }};struct Bar{
int get() { return 999; }};using Variant = boost::variant<Foo, Bar>;int run(Variant v){
return boost::apply_visitor([](auto& x){return x.get();}, v);}int main(){
Foo f;
return run(f);}但是,完整的程序集输出包含的内容远远超过上面的摘录,对我而言,它看起来永远不会被调用。有没有办法告诉GCC / clang删除所有“噪音”并输出程序运行时实际调用的内容?
3 回答
- 3 回答
- 0 关注
- 742 浏览
添加回答
举报
0/150
提交
取消