如何從GCC /鏗鏘聲組件輸出中消除“噪音”?我想檢查boost::variant在我的代碼中應(yīng)用的程序集輸出,以便查看哪些中間調(diào)用被優(yōu)化掉了。當(dāng)我編譯以下示例(使用GCC 5.3 g++ -O3 -std=c++14 -S)時,似乎編譯器優(yōu)化了所有內(nèi)容并直接返回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);}但是,完整的程序集輸出包含的內(nèi)容遠(yuǎn)遠(yuǎn)超過上面的摘錄,對我而言,它看起來永遠(yuǎn)不會被調(diào)用。有沒有辦法告訴GCC / clang刪除所有“噪音”并輸出程序運行時實際調(diào)用的內(nèi)容?
如何從GCC /鏗鏘聲組件輸出中消除“噪音”?
慕婉清6462132
2019-05-28 16:49:25