.. This file is autogenerated, using:
   ./gcc-with-python generate-tables-of-passes-rst.py test.c

All of GCC's passes
===================


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).

.. image:: passes.svg
   :width: 550px
   :height: 3302px
   :scale: 50%


These tables contain the same information.  The diagram and tables were
autogenerated, using GCC 4.6.0

.. _all_lowering_passes:

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
   ======================  ===================  ===================  ====================


.. _all_small_ipa_passes:

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
   ================================  =======================================  ===================  ====================


.. _all_regular_ipa_passes:

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
   ================  =======================================  ===================  ====================


.. _all_lto_gen_passes:

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
   ==============  =======================================  ===================  ====================


.. _all_passes:

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
   ==============================  =======================================  ===================  ====================================================


