IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    GCC: Dump enabled optimization options

    hev发表于 2020-01-14 11:37:00
    love 0

    -fverbose-asm
    Put extra commentary information in the generated assembly code to make it more readable. This option is generally only of use to those who actually need to read the generated assembly code (perhaps while debugging the compiler itself).

    -O3

    gcc -O3 -fverbose-asm -o t.s t.c
    
    	.arch armv8-a
    	.file	"t.c"
    // GNU C17 (GCC) version 9.2.0 (aarch64-unknown-linux-gnu)
    //	compiled by GNU C version 9.2.0, GMP version 6.1.2, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.21-GMP
    
    // GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
    // options passed:  t.c -march=armv8-a -mlittle-endian -mabi=lp64
    // -auxbase-strip 3 -O3 -fverbose-asm
    // options enabled:  -fPIC -fPIE -faggressive-loop-optimizations
    // -falign-functions -falign-jumps -falign-labels -falign-loops
    // -fassume-phsa -fasynchronous-unwind-tables -fauto-inc-dec
    // -fbranch-count-reg -fcaller-saves -fcode-hoisting
    // -fcombine-stack-adjustments -fcommon -fcompare-elim -fcprop-registers
    // -fcrossjumping -fcse-follow-jumps -fdefer-pop
    // -fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively
    // -fdwarf2-cfi-asm -fearly-inlining -feliminate-unused-debug-types
    // -fexpensive-optimizations -fforward-propagate -ffp-int-builtin-inexact
    // -ffunction-cse -fgcse -fgcse-after-reload -fgcse-lm -fgnu-runtime
    // -fgnu-unique -fguess-branch-probability -fhoist-adjacent-loads -fident
    // -fif-conversion -fif-conversion2 -findirect-inlining -finline
    // -finline-atomics -finline-functions -finline-functions-called-once
    // -finline-small-functions -fipa-bit-cp -fipa-cp -fipa-cp-clone -fipa-icf
    // -fipa-icf-functions -fipa-icf-variables -fipa-profile -fipa-pure-const
    // -fipa-ra -fipa-reference -fipa-reference-addressable -fipa-sra
    // -fipa-stack-alignment -fipa-vrp -fira-hoist-pressure
    // -fira-share-save-slots -fira-share-spill-slots
    // -fisolate-erroneous-paths-dereference -fivopts -fkeep-static-consts
    // -fleading-underscore -flifetime-dse -floop-interchange
    // -floop-unroll-and-jam -flra-remat -flto-odr-type-merging -fmath-errno
    // -fmerge-constants -fmerge-debug-strings -fmove-loop-invariants
    // -fomit-frame-pointer -foptimize-sibling-calls -foptimize-strlen
    // -fpartial-inlining -fpeel-loops -fpeephole -fpeephole2 -fplt
    // -fpredictive-commoning -fprefetch-loop-arrays -free -freg-struct-return
    // -freorder-blocks -freorder-functions -frerun-cse-after-loop
    // -fsched-critical-path-heuristic -fsched-dep-count-heuristic
    // -fsched-group-heuristic -fsched-interblock -fsched-last-insn-heuristic
    // -fsched-pressure -fsched-rank-heuristic -fsched-spec
    // -fsched-spec-insn-heuristic -fsched-stalled-insns-dep -fschedule-fusion
    // -fschedule-insns -fschedule-insns2 -fsection-anchors
    // -fsemantic-interposition -fshow-column -fshrink-wrap
    // -fshrink-wrap-separate -fsigned-zeros -fsplit-ivs-in-unroller
    // -fsplit-loops -fsplit-paths -fsplit-wide-types -fssa-backprop
    // -fssa-phiopt -fstack-protector-strong -fstdarg-opt -fstore-merging
    // -fstrict-aliasing -fstrict-volatile-bitfields -fsync-libcalls
    // -fthread-jumps -ftoplevel-reorder -ftrapping-math -ftree-bit-ccp
    // -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-coalesce-vars
    // -ftree-copy-prop -ftree-cselim -ftree-dce -ftree-dominator-opts
    // -ftree-dse -ftree-forwprop -ftree-fre -ftree-loop-distribute-patterns
    // -ftree-loop-distribution -ftree-loop-if-convert -ftree-loop-im
    // -ftree-loop-ivcanon -ftree-loop-optimize -ftree-loop-vectorize
    // -ftree-parallelize-loops= -ftree-partial-pre -ftree-phiprop -ftree-pre
    // -ftree-pta -ftree-reassoc -ftree-scev-cprop -ftree-sink
    // -ftree-slp-vectorize -ftree-slsr -ftree-sra -ftree-switch-conversion
    // -ftree-tail-merge -ftree-ter -ftree-vrp -funit-at-a-time
    // -funswitch-loops -funwind-tables -fverbose-asm
    // -fversion-loops-for-strides -fzero-initialized-in-bss
    // -mfix-cortex-a53-835769 -mfix-cortex-a53-843419 -mglibc -mlittle-endian
    // -momit-leaf-frame-pointer -mpc-relative-literal-loads
    
    	.text
    	.ident	"GCC: (GNU) 9.2.0"
    	.section	.note.GNU-stack,"",@progbits
    

    -Og

    gcc -Og -fverbose-asm -o t.s t.c
    
    	.arch armv8-a
    	.file	"t.c"
    // GNU C17 (GCC) version 9.2.0 (aarch64-unknown-linux-gnu)
    //	compiled by GNU C version 9.2.0, GMP version 6.1.2, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.21-GMP
    
    // GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
    // options passed:  t.c -march=armv8-a -mlittle-endian -mabi=lp64
    // -auxbase-strip 3 -Og -fverbose-asm
    // options enabled:  -fPIC -fPIE -faggressive-loop-optimizations
    // -fassume-phsa -fasynchronous-unwind-tables -fauto-inc-dec
    // -fcombine-stack-adjustments -fcommon -fcompare-elim -fcprop-registers
    // -fdefer-pop -fdelete-null-pointer-checks -fdwarf2-cfi-asm
    // -fearly-inlining -feliminate-unused-debug-types -fforward-propagate
    // -ffp-int-builtin-inexact -ffunction-cse -fgcse-lm -fgnu-runtime
    // -fgnu-unique -fguess-branch-probability -fident -finline
    // -finline-atomics -fipa-profile -fipa-pure-const -fipa-reference
    // -fipa-reference-addressable -fipa-stack-alignment -fira-hoist-pressure
    // -fira-share-save-slots -fira-share-spill-slots -fivopts
    // -fkeep-static-consts -fleading-underscore -flifetime-dse
    // -flto-odr-type-merging -fmath-errno -fmerge-constants
    // -fmerge-debug-strings -fomit-frame-pointer -fpeephole -fplt
    // -fprefetch-loop-arrays -freg-struct-return -freorder-blocks
    // -fsched-critical-path-heuristic -fsched-dep-count-heuristic
    // -fsched-group-heuristic -fsched-interblock -fsched-last-insn-heuristic
    // -fsched-pressure -fsched-rank-heuristic -fsched-spec
    // -fsched-spec-insn-heuristic -fsched-stalled-insns-dep -fschedule-fusion
    // -fsection-anchors -fsemantic-interposition -fshow-column -fshrink-wrap
    // -fshrink-wrap-separate -fsigned-zeros -fsplit-ivs-in-unroller
    // -fsplit-wide-types -fssa-backprop -fstack-protector-strong -fstdarg-opt
    // -fstrict-volatile-bitfields -fsync-libcalls -ftoplevel-reorder
    // -ftrapping-math -ftree-builtin-call-dce -ftree-ccp -ftree-ch
    // -ftree-coalesce-vars -ftree-copy-prop -ftree-cselim -ftree-dce
    // -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre
    // -ftree-loop-if-convert -ftree-loop-im -ftree-loop-ivcanon
    // -ftree-loop-optimize -ftree-parallelize-loops= -ftree-phiprop
    // -ftree-reassoc -ftree-scev-cprop -ftree-sink -ftree-slsr -ftree-ter
    // -funit-at-a-time -funwind-tables -fverbose-asm -fzero-initialized-in-bss
    // -mfix-cortex-a53-835769 -mfix-cortex-a53-843419 -mglibc -mlittle-endian
    // -momit-leaf-frame-pointer -mpc-relative-literal-loads
    
    	.text
    	.ident	"GCC: (GNU) 9.2.0"
    	.section	.note.GNU-stack,"",@progbits
    

    References
    GCC Options – https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html



沪ICP备19023445号-2号
友情链接