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

如何从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删除所有“噪音”并输出程序运行时实际调用的内容?


慕婉清6462132
浏览 743回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP