打印优化级别的对应选项
例子
$ gcc -Q --help=optimizers
The following options control optimizations:
-O<number>
-Ofast
-Os
-falign-functions [disabled]
-falign-jumps [disabled]
-falign-labels [disabled]
-falign-loops [disabled]
-fasynchronous-unwind-tables [enabled]
-fbranch-count-reg [enabled]
-fbranch-probabilities [disabled]
-fbranch-target-load-optimize [disabled]
-fbranch-target-load-optimize2 [disabled]
-fbtr-bb-exclusive [disabled]
-fcaller-saves [disabled]
-fcombine-stack-adjustments [disabled]
-fcommon [enabled]
-fcompare-elim [disabled]
-fconserve-stack [disabled]
-fcprop-registers [disabled]
-fcrossjumping [disabled]
-fcse-follow-jumps [disabled]
-fcx-fortran-rules [disabled]
-fcx-limited-range [disabled]
-fdata-sections [disabled]
-fdce [enabled]
-fdefer-pop [disabled]
-fdelayed-branch [disabled]
-fdelete-null-pointer-checks [enabled]
-fdevirtualize [disabled]
-fdse [enabled]
-fearly-inlining [enabled]
-fexceptions [disabled]
-fexpensive-optimizations [disabled]
-ffinite-math-only [disabled]
-ffloat-store [disabled]
-fforward-propagate [disabled]
-fgcse [disabled]
-fgcse-after-reload [disabled]
-fgcse-las [disabled]
-fgcse-lm [enabled]
-fgcse-sm [disabled]
-fgraphite-identity [disabled]
-fguess-branch-probability [disabled]
-fhandle-exceptions
-fif-conversion [disabled]
-fif-conversion2 [disabled]
-finline-functions [disabled]
-finline-functions-called-once [enabled]
-finline-small-functions [disabled]
-fipa-cp [disabled]
-fipa-cp-clone [disabled]
-fipa-matrix-reorg [disabled]
-fipa-profile [disabled]
-fipa-pta [disabled]
-fipa-pure-const [disabled]
-fipa-reference [disabled]
-fipa-sra [disabled]
-fivopts [enabled]
-fjump-tables [enabled]
-floop-block [disabled]
-floop-flatten [disabled]
-floop-interchange [disabled]
-floop-parallelize-all [disabled]
-floop-strip-mine [disabled]
-flto-report [disabled]
-fltrans [disabled]
-fmath-errno [enabled]
-fmerge-all-constants [disabled]
-fmerge-constants [disabled]
-fmodulo-sched [disabled]
-fmove-loop-invariants [enabled]
-fnon-call-exceptions [disabled]
-fnothrow-opt [disabled]
-fomit-frame-pointer [disabled]
-foptimize-register-move [disabled]
-foptimize-sibling-calls [disabled]
-fpack-struct [disabled]
-fpack-struct=<number>
-fpeel-loops [disabled]
-fpeephole [enabled]
-fpeephole2 [disabled]
-fpredictive-commoning [disabled]
-fprefetch-loop-arrays [enabled]
-freg-struct-return [disabled]
-fregmove [disabled]
-frename-registers [enabled]
-freorder-blocks [disabled]
-freorder-blocks-and-partition [disabled]
-freorder-functions [disabled]
-frerun-cse-after-loop [disabled]
-freschedule-modulo-scheduled-loops [disabled]
-frounding-math [disabled]
-frtti [enabled]
-fsched-critical-path-heuristic [enabled]
-fsched-dep-count-heuristic [enabled]
-fsched-group-heuristic [enabled]
-fsched-interblock [enabled]
-fsched-last-insn-heuristic [enabled]
-fsched-pressure [disabled]
-fsched-rank-heuristic [enabled]
-fsched-spec [enabled]
-fsched-spec-insn-heuristic [enabled]
-fsched-spec-load [disabled]
-fsched-spec-load-dangerous [disabled]
-fsched-stalled-insns [disabled]
-fsched-stalled-insns-dep [enabled]
-fsched2-use-superblocks [disabled]
-fschedule-insns [disabled]
-fschedule-insns2 [disabled]
-fsection-anchors [disabled]
-fsel-sched-pipelining [disabled]
-fsel-sched-pipelining-outer-loops [disabled]
-fsel-sched-reschedule-pipelined [disabled]
-fselective-scheduling [disabled]
-fselective-scheduling2 [disabled]
-fshort-double [disabled]
-fshort-enums [enabled]
-fshort-wchar [disabled]
-fsignaling-nans [disabled]
-fsigned-zeros [enabled]
-fsingle-precision-constant [disabled]
-fsplit-ivs-in-unroller [enabled]
-fsplit-wide-types [disabled]
-fstrict-aliasing [disabled]
-fstrict-enums [disabled]
-fthread-jumps [disabled]
-fno-threadsafe-statics [enabled]
-ftoplevel-reorder [enabled]
-ftrapping-math [enabled]
-ftrapv [disabled]
-ftree-bit-ccp [disabled]
-ftree-builtin-call-dce [disabled]
-ftree-ccp [disabled]
-ftree-ch [disabled]
-ftree-copy-prop [disabled]
-ftree-copyrename [disabled]
-ftree-cselim [enabled]
-ftree-dce [disabled]
-ftree-dominator-opts [disabled]
-ftree-dse [disabled]
-ftree-forwprop [enabled]
-ftree-fre [disabled]
-ftree-loop-distribute-patterns [disabled]
-ftree-loop-distribution [disabled]
-ftree-loop-if-convert [enabled]
-ftree-loop-if-convert-stores [disabled]
-ftree-loop-im [enabled]
-ftree-loop-ivcanon [enabled]
-ftree-loop-optimize [enabled]
-ftree-lrs [disabled]
-ftree-phiprop [enabled]
-ftree-pre [disabled]
-ftree-pta [enabled]
-ftree-reassoc [enabled]
-ftree-scev-cprop [enabled]
-ftree-sink [disabled]
-ftree-slp-vectorize [enabled]
-ftree-sra [disabled]
-ftree-switch-conversion [disabled]
-ftree-ter [disabled]
-ftree-vect-loop-version [enabled]
-ftree-vectorize [disabled]
-ftree-vrp [disabled]
-funit-at-a-time [enabled]
-funroll-all-loops [disabled]
-funroll-loops [disabled]
-funsafe-loop-optimizations [disabled]
-funsafe-math-optimizations [disabled]
-funswitch-loops [disabled]
-funwind-tables [disabled]
-fvar-tracking [enabled]
-fvar-tracking-assignments [enabled]
-fvar-tracking-assignments-toggle [disabled]
-fvar-tracking-uninit [disabled]
-fvariable-expansion-in-unroller [disabled]
-fvect-cost-model [enabled]
-fvpt [disabled]
-fweb [enabled]
-fwhole-program [disabled]
-fwpa [disabled]
-fwrapv [disabled]
技巧
如上所示,使用-Q --help=optimizers
选项可以打印出gcc的所有优化(相关的)选项,以及缺省情况下它们是否打开。类似的,你也可以查看不同优化级别下,这些优化选项是否打开:
$ gcc -Q --help=optimizers -O
$ gcc -Q --help=optimizers -O1
$ gcc -Q --help=optimizers -O2
$ gcc -Q --help=optimizers -O3
$ gcc -Q --help=optimizers -Og
$ gcc -Q --help=optimizers -Os
$ gcc -Q --help=optimizers -Ofast
详情参见gcc手册
贡献者
xmj