All of GCC’s passes — gcc-python-plugin 0.16 documentation (original ) (raw )gcc-python-plugin
This diagram shows the various GCC optimization passes, arranged vertically, showing child passes via indentation.
The lifetime of the various properties that they maintain is shown, giving the pass that initially creates the data (if any), the pass that destroys it (if any), and each pass that requires a particular property (based on the PROP_* flags).
These tables contain the same information. The diagram and tables were autogenerated, using GCC 4.6.0
The lowering passes¶
Pass Name
Required properties
Provided properties
Destroyed properties
*warn_unused_result
gimple_any
*diagnose_omp_blocks
gimple_any
mudflap1
gimple_any
omplower
gimple_any
gimple_lomp
lower
gimple_any
gimple_lcf
ehopt
gimple_lcf
eh
gimple_lcf
gimple_leh
cfg
gimple_leh
cfg
*warn_function_return
cfg
*build_cgraph_edges
cfg
The “small IPA” passes¶
Pass Name
Required properties
Provided properties
Destroyed properties
*free_lang_data
gimple_any, gimple_lcf, gimple_leh, cfg
visibility
early_local_cleanups
> *free_cfg_annotations
cfg
> *init_datastructures
cfg
> ompexp
gimple_any
> *referenced_vars
gimple_leh, cfg
referenced_vars
> ssa
cfg, referenced_vars
ssa
> veclower
cfg
> *early_warn_uninitialized
ssa
> *rebuild_cgraph_edges
cfg
> inline_param
> einline
> early_optimizations
> > *remove_cgraph_callee_edges
> > copyrename
cfg, ssa
> > ccp
cfg, ssa
> > forwprop
cfg, ssa
> > ealias
cfg, ssa
> > esra
cfg, ssa
> > copyprop
cfg, ssa
> > mergephi
cfg, ssa
> > cddce
cfg, ssa
> > eipa_sra
> > tailr
cfg, ssa
> > switchconv
cfg, ssa
> > ehcleanup
gimple_lcf
> > profile
cfg
> > local-pure-const
> > fnsplit
cfg
> release_ssa
ssa
> *rebuild_cgraph_edges
cfg
> inline_param
tree_profile_ipa
> feedback_fnsplit
cfg
increase_alignment
matrix-reorg
emutls
cfg, ssa
The “regular IPA” passes¶
Pass Name
Required properties
Provided properties
Destroyed properties
whole-program
gimple_any, gimple_lcf, gimple_leh, cfg
ipa-profile
cp
cdtor
inline
pure-const
static-var
type-escape-var
pta
ipa_struct_reorg
Passes generating Link-Time Optimization data¶
Pass Name
Required properties
Provided properties
Destroyed properties
lto_gimple_out
gimple_any, gimple_lcf, gimple_leh, cfg
lto_decls_out
The “all other passes” catch-all¶
Pass Name
Required properties
Provided properties
Destroyed properties
ehdisp
gimple_any, gimple_lcf, gimple_leh, cfg
*all_optimizations
> *remove_cgraph_callee_edges
> *strip_predict_hints
cfg
> copyrename
cfg, ssa
> cunrolli
cfg, ssa
> ccp
cfg, ssa
> forwprop
cfg, ssa
> cdce
cfg, ssa
> alias
cfg, ssa
> retslot
ssa
> phiprop
cfg, ssa
> fre
cfg, ssa
> copyprop
cfg, ssa
> mergephi
cfg, ssa
> vrp
ssa
> dce
cfg, ssa
> cselim
cfg, ssa
> ifcombine
cfg, ssa
> phiopt
cfg, ssa
> tailr
cfg, ssa
> ch
cfg, ssa
> stdarg
cfg, ssa
> cplxlower
ssa
gimple_lcx
> sra
cfg, ssa
> copyrename
cfg, ssa
> dom
cfg, ssa
> phicprop
cfg, ssa
> dse
cfg, ssa
> reassoc
cfg, ssa
> dce
cfg, ssa
> forwprop
cfg, ssa
> phiopt
cfg, ssa
> objsz
cfg, ssa
> ccp
cfg, ssa
> copyprop
cfg, ssa
> sincos
ssa
> bswap
ssa
> crited
cfg
no_crit_edges
> pre
cfg, ssa, no_crit_edges
> sink
cfg, ssa, no_crit_edges
> loop
cfg
> > loopinit
cfg
> > lim
cfg
> > copyprop
cfg, ssa
> > dceloop
cfg, ssa
> > unswitch
cfg
> > sccp
cfg, ssa
> > *record_bounds
cfg, ssa
> > ckdd
cfg, ssa
> > ldist
cfg, ssa
> > copyprop
cfg, ssa
> > graphite0
cfg, ssa
> > > graphite
cfg, ssa
> > > lim
cfg
> > > copyprop
cfg, ssa
> > > dceloop
cfg, ssa
> > ivcanon
cfg, ssa
> > ifcvt
cfg, ssa
> > vect
cfg, ssa
> > > veclower2
cfg
> > > dceloop
cfg, ssa
> > pcom
cfg
> > cunroll
cfg, ssa
> > slp
cfg, ssa
> > parloops
cfg, ssa
> > aprefetch
cfg, ssa
> > ivopts
cfg, ssa
> > loopdone
cfg
> recip
ssa
> reassoc
cfg, ssa
> vrp
ssa
> dom
cfg, ssa
> phicprop
cfg, ssa
> cddce
cfg, ssa
> tracer
> uninit
ssa
> dse
cfg, ssa
> forwprop
cfg, ssa
> phiopt
cfg, ssa
> fab
cfg, ssa
> widening_mul
ssa
> tailc
cfg, ssa
> copyrename
cfg, ssa
> uncprop
cfg, ssa
> local-pure-const
cplxlower0
cfg
gimple_lcx
ehcleanup
gimple_lcf
resx
gimple_lcf
nrv
cfg, ssa
mudflap2
gimple_leh, cfg, ssa
optimized
cfg
*warn_function_noreturn
cfg
expand
gimple_leh, cfg, ssa, gimple_lcx
rtl
gimple_any, gimple_lcf, gimple_leh, ssa, gimple_lomp
*rest_of_compilation
rtl
> *init_function
> sibling
> rtl eh
> initvals
> unshare
> vregs
> into_cfglayout
cfglayout
> jump
> subreg1
> dfinit
> cse1
> fwprop1
> cprop
cfglayout
> rtl pre
cfglayout
> hoist
cfglayout
> cprop
cfglayout
> store_motion
cfglayout
> cse_local
> ce1
> reginfo
> loop2
> > loop2_init
> > loop2_invariant
> > loop2_unswitch
> > loop2_unroll
> > loop2_doloop
> > loop2_done
> web
> cprop
cfglayout
> cse2
> dse1
> fwprop2
> auto_inc_dec
> init-regs
> ud dce
> combine
cfglayout
> ce2
> bbpart
cfglayout
> regmove
> outof_cfglayout
cfglayout
> split1
> subreg2
> no-opt dfinit
> *stack_ptr_mod
> mode_sw
> asmcons
> sms
> sched1
> ira
> *all-postreload
rtl
> > postreload
> > gcse2
> > split2
> > zee
> > cmpelim
> > btl1
> > pro_and_epilogue
> > dse2
> > csa
> > peephole2
> > ce3
> > rnreg
> > cprop_hardreg
> > rtl dce
> > bbro
> > btl2
> > *leaf_regs
> > split4
> > sched2
> > *stack_regs
> > > split3
> > > stack
> > alignments
> > compgotos
> > vartrack
> > *free_cfg
cfg
> > mach
> > barriers
> > dbr
> > split5
> > eh_ranges
> > shorten
> > nothrow
> > final
> dfinish
*clean_state
rtl