Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22002

How to remove "noise" from GCC/clang assembly output?

$
0
0

I want to inspect the assembly output of applying boost::variant in my code in order to see which intermediate calls are optimized away.

When I compile the following example (with GCC 5.3 using g++ -O3 -std=c++14 -S), it seems as if the compiler optimizes away everything and directly returns 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);}

However, the full assembly output contains much more than the above excerpt, which to me looks like it is never called. Is there a way to tell GCC/clang to remove all that "noise" and just output what is actually called when the program is ran?


full assembly output:

    .file   "main1.cpp"    .section    .rodata.str1.8,"aMS",@progbits,1    .align 8.LC0:    .string "/opt/boost/include/boost/variant/detail/forced_return.hpp"    .section    .rodata.str1.1,"aMS",@progbits,1.LC1:    .string "false"    .section    .text.unlikely._ZN5boost6detail7variant13forced_returnIvEET_v,"axG",@progbits,_ZN5boost6detail7variant13forced_returnIvEET_v,comdat.LCOLDB2:    .section    .text._ZN5boost6detail7variant13forced_returnIvEET_v,"axG",@progbits,_ZN5boost6detail7variant13forced_returnIvEET_v,comdat.LHOTB2:    .p2align 4,,15    .weak   _ZN5boost6detail7variant13forced_returnIvEET_v    .type   _ZN5boost6detail7variant13forced_returnIvEET_v, @function_ZN5boost6detail7variant13forced_returnIvEET_v:.LFB1197:    .cfi_startproc    subq    $8, %rsp    .cfi_def_cfa_offset 16    movl    $_ZZN5boost6detail7variant13forced_returnIvEET_vE19__PRETTY_FUNCTION__, %ecx    movl    $49, %edx    movl    $.LC0, %esi    movl    $.LC1, %edi    call    __assert_fail    .cfi_endproc.LFE1197:    .size   _ZN5boost6detail7variant13forced_returnIvEET_v, .-_ZN5boost6detail7variant13forced_returnIvEET_v    .section    .text.unlikely._ZN5boost6detail7variant13forced_returnIvEET_v,"axG",@progbits,_ZN5boost6detail7variant13forced_returnIvEET_v,comdat.LCOLDE2:    .section    .text._ZN5boost6detail7variant13forced_returnIvEET_v,"axG",@progbits,_ZN5boost6detail7variant13forced_returnIvEET_v,comdat.LHOTE2:    .section    .text.unlikely._ZN5boost6detail7variant13forced_returnIiEET_v,"axG",@progbits,_ZN5boost6detail7variant13forced_returnIiEET_v,comdat.LCOLDB3:    .section    .text._ZN5boost6detail7variant13forced_returnIiEET_v,"axG",@progbits,_ZN5boost6detail7variant13forced_returnIiEET_v,comdat.LHOTB3:    .p2align 4,,15    .weak   _ZN5boost6detail7variant13forced_returnIiEET_v    .type   _ZN5boost6detail7variant13forced_returnIiEET_v, @function_ZN5boost6detail7variant13forced_returnIiEET_v:.LFB9757:    .cfi_startproc    subq    $8, %rsp    .cfi_def_cfa_offset 16    movl    $_ZZN5boost6detail7variant13forced_returnIiEET_vE19__PRETTY_FUNCTION__, %ecx    movl    $39, %edx    movl    $.LC0, %esi    movl    $.LC1, %edi    call    __assert_fail    .cfi_endproc.LFE9757:    .size   _ZN5boost6detail7variant13forced_returnIiEET_v, .-_ZN5boost6detail7variant13forced_returnIiEET_v    .section    .text.unlikely._ZN5boost6detail7variant13forced_returnIiEET_v,"axG",@progbits,_ZN5boost6detail7variant13forced_returnIiEET_v,comdat.LCOLDE3:    .section    .text._ZN5boost6detail7variant13forced_returnIiEET_v,"axG",@progbits,_ZN5boost6detail7variant13forced_returnIiEET_v,comdat.LHOTE3:    .section    .text.unlikely,"ax",@progbits.LCOLDB4:    .text.LHOTB4:    .p2align 4,,15    .globl  _Z3runN5boost7variantI3FooJ3BarEEE    .type   _Z3runN5boost7variantI3FooJ3BarEEE, @function_Z3runN5boost7variantI3FooJ3BarEEE:.LFB9310:    .cfi_startproc    subq    $8, %rsp    .cfi_def_cfa_offset 16    movl    (%rdi), %eax    cltd    xorl    %edx, %eax    cmpl    $19, %eax    ja  .L7    jmp *.L9(,%rax,8)    .section    .rodata    .align 8    .align 4.L9:    .quad   .L30    .quad   .L10    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .quad   .L7    .text    .p2align 4,,10    .p2align 3.L7:    call    _ZN5boost6detail7variant13forced_returnIiEET_v    .p2align 4,,10    .p2align 3.L30:    movl    $100, %eax.L8:    addq    $8, %rsp    .cfi_remember_state    .cfi_def_cfa_offset 8    ret    .p2align 4,,10    .p2align 3.L10:    .cfi_restore_state    movl    $999, %eax    jmp .L8    .cfi_endproc.LFE9310:    .size   _Z3runN5boost7variantI3FooJ3BarEEE, .-_Z3runN5boost7variantI3FooJ3BarEEE    .section    .text.unlikely.LCOLDE4:    .text.LHOTE4:    .globl  _Z3runN5boost7variantI3FooI3BarEEE    .set    _Z3runN5boost7variantI3FooI3BarEEE,_Z3runN5boost7variantI3FooJ3BarEEE    .section    .text.unlikely.LCOLDB5:    .section    .text.startup,"ax",@progbits.LHOTB5:    .p2align 4,,15    .globl  main    .type   main, @functionmain:.LFB9320:    .cfi_startproc    movl    $100, %eax    ret    .cfi_endproc.LFE9320:    .size   main, .-main    .section    .text.unlikely.LCOLDE5:    .section    .text.startup.LHOTE5:    .section    .rodata    .align 32    .type   _ZZN5boost6detail7variant13forced_returnIvEET_vE19__PRETTY_FUNCTION__, @object    .size   _ZZN5boost6detail7variant13forced_returnIvEET_vE19__PRETTY_FUNCTION__, 58_ZZN5boost6detail7variant13forced_returnIvEET_vE19__PRETTY_FUNCTION__:    .string "T boost::detail::variant::forced_return() [with T = void]"    .align 32    .type   _ZZN5boost6detail7variant13forced_returnIiEET_vE19__PRETTY_FUNCTION__, @object    .size   _ZZN5boost6detail7variant13forced_returnIiEET_vE19__PRETTY_FUNCTION__, 57_ZZN5boost6detail7variant13forced_returnIiEET_vE19__PRETTY_FUNCTION__:    .string "T boost::detail::variant::forced_return() [with T = int]"    .ident  "GCC: (Ubuntu 5.3.0-3ubuntu1~14.04) 5.3.0 20151204"    .section    .note.GNU-stack,"",@progbits

Viewing all articles
Browse latest Browse all 22002

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>