为了账号安全,请及时绑定邮箱和手机立即绑定

如何从GCC /铿锵声组件输出中消除“噪音”?

如何从GCC /铿锵声组件输出中消除“噪音”?

C++ C
慕婉清6462132 2019-05-28 16:49:25
如何从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
提交
取消
意见反馈 帮助中心 APP下载
官方微信