Options specific to the Chamois version of CompCert
This html page is automatically generated by command ccomp [-]-help-chamois-html
. Use -fno-`opt`
to turn off -f`opt`
.
Optimization options:
-finline-auto-threshold n
: Inline functions under size n
-ftailrec
: Turn tail calls to same function into loops [on]
-fcse2
: Perform inter-loop CSE2 [off]
-fcse3
: Perform inter-loop CSE3 [on]
-fcse3-alias-analysis
: Perform inter-loop CSE3 with alias analysis [on]
-fcse3-across-calls
: Propagate CSE3 information across function calls [off]
-fcse3-across-merges
: Propagate CSE3 information across control-flow merges [on]
-fcse3-glb
: Refine CSE3 information using greatest lower bounds [on]
-fcse3-trivial-ops
: Replace trivial operations as well using CSE3 [off]
-fcse3-refine
: Refine CSE3 invariants by descending iteration [on]
-fcse3-conditions
: Remove redundant conditions using CSE3 [on]
-mtune=
: Type of CPU (for scheduling on some architectures)
-fprepass
: Perform prepass scheduling (only on some architectures) [on]
-fprepass= `optim`
: Perform prepass scheduling with the specified optimization [regpres] (`optim`=list: list scheduling, `optim`=revlist: reverse list scheduling, `optim`=regpres: list scheduling aware of register pressure, `optim`=regpres_old: old variant of regpres, `optim`=bnb: branch and bound approach, `optim`=mris: list scheduling with minimum register instruction sequence, `optim`=mris_lazy: lazy version of the mris scheduler, `optim`=mris_ren: like mris, but virtual registers are renamed, `optim`=zigzag: zigzag scheduling, `optim`=ilp: ILP, `optim`=greedy: just packing bundles)
-fprepass-alias-rel
: Use alias analysis for relative addressing during prepass scheduling [on]
-fprepass-alias-abs
: Use alias analysis for abstract absolute classes of addresses during prepass scheduling [on]
-fprepass-print-makespan
: Print makespan information during prepass scheduling
-regpres-threshold n
: With `-fprepass= regpres`, set threshold value for number of free registers before trying to decrease register pressure
-fregpres-wait-window
: When register pressure is high, use a 5-cycle waiting window instead of scheduling short paths first [off]
-fpostpass
: Perform postpass scheduling on aarch64 and kvx [on]
-fpostpass= `optim`
: Perform postpass scheduling with the specified optimization [list] (`optim`=list: list scheduling, `optim`=ilp: ILP, `optim`=greedy: just packing bundles)
-fcoalesce-mem
: Perform load pairing by peephole on aarch64 and kvx [on]
-fexpanse-rtlcond
: Expanse branches on riscv [on]
-fexpanse-others
: Expanse operations on riscv [on]
-flct
: Run the Lazy Code Transformations oracle [on]
-flct-trap
: Support trapping operations in LCT [on]
-flct-sr
: Support strength-reduction in LCT for riscv [on]
-flct-tun
: Activate a tunneling pass after LCT [off]
-flct-tlimit
: Limit the LCT oracle runtime (in seconds) [0]
-flct-nlimit
: Limit the LCT oracle number of candidates [64]
-flct-promote
: Promote some instructions into their long variants [on]
-flct-alias-abs
: Use alias analysis for abstract absolute classes of addresses during LCT [on]
-fstore-motion
: Run the store motion pass [off]
-fstore-motion-alias-abs n
: Use the alias analysis during the store motion pass [1] (n=0:no analysis; n=1:load-store reordering; n=2:load-store and store-store reordering)
-fpredict
: Insert static branch prediction information [on] Also swaps ifso/ifnot branches accordingly at RTL level
-ftailduplicate n
: Perform tail duplication for RTL code blocks of size n (not counting Inops) [0]
-ftracelinearize
: Uses branch prediction information to improve the Linearize [on]
-funrollsingle n
: Unrolls a single iteration of innermost loops of size n (not counting Inops) [0]
-funrollbody n
: Unrolls once the body of innermost loops of size n (not counting Inops) [0]
-flooprotate n
: Duplicates the header (condition computation part) of innermost loops to perform a loop rotate [0] Doesn't duplicate if the size of that header is strictly greater than n
-fforward-moves
: Forward moves after CSE [on]
-freg-renaming
: Register renaming [off]
-freg-renaming= `policy`
: Register renaming [backward] (`policy`=forward: forward renaming, `policy`=backward: backward renaming)
-fif-lift
: If-lifting scheduling [off]
-fif-lift= `policy`
: Apply if-lifting scheduling. It moves certain instructions over conditions. If lifting is disabled by default [movstores] (`policy`=movstores: moves stores, `policy`=passlive: stores are fixed)
-fif-lift-ratio n
: Ratio for controlling if-lifting code duplication length (only applies when -fif-lift is active). By default, always applies if-lifting [0]
-fschedule-compense
: Compensated blocks also get scheduled [on]
-ffactorize
: Factorizes the program on code duplications [off]
-freduce-memcpy
: Try to strength-reduce memory copy operations [on]
Code generation options:
-fleaf
: Optimize leaf functions [on]
-fcommon
: Put uninitialized globals in the common section [on]
-fprofile-arcs
: Profile branches [off].
-fprofile-use= filename
: Use profiling information in filename
-fbranch-probabilities
: Use profiling information (if available) for branches [on]
-fbranch-threshold
: Take into account branch counts only above this [100]
-fbranch-delta
: Take into account branch count difference above this fraction [0.2]
-fbranch-target-protection
: Branch target protection on targets supporting it [on]
-fretaddr-pac
: Return address authentification/protection on targets supporting it [on]
-ffinal-renumber
: Renumber before register allocation [on]
-fmax-alloc-rounds `n`
: Set maximal number of spilling iterations in register allocation [40]
-finterval-prop
: Perform global interval propagation [on]
-fstack-protector
: Add "canaries" to functions
-fstack-protector-all Force adding "canaries" to all functions (needs -fstack-protector)
:
-fsecu-opaque-copies
: Use opaque copies to protect countermeasures [on]
-fsecu-dup-loads
: Duplicate well defined loads [on]
-fsecu-cfc
: Add intra-procedural control-flow checking to marked functions [on]
-fsecu-cfc-return
: Add intra-procedural control-flow checks before returns [off]
-fsecu-cfc-all
: Add intra-procedural control-flow checking to all functions [off]
-fsecu-ip-cfc
: Add inter-procedural control-flow checking to all functions [off]