Small IPA passes (GNU Compiler Collection (GCC) Internals) (original) (raw)
8.4.1 Small IPA passes ¶
A small IPA pass is a pass derived from simple_ipa_opt_pass
. As described in Using summary information in IPA passes, it does everything at once and defines only the Execute stage. During this stage it accesses and modifies the function bodies. No generate_summary
, read_summary
, or write_summary
hooks are defined.
- IPA free lang data
This pass frees resources that are used by the front end but are not needed once it is done. It is located in tree.cc and is described bypass_ipa_free_lang_data
. - IPA function and variable visibility
This is a local function pass handling visibilities of all symbols. This happens before LTO streaming, so -fwhole-program should be ignored at this level. It is located in ipa-visibility.cc and is described bypass_ipa_function_and_variable_visibility
. - IPA remove symbols
This pass performs reachability analysis and reclaims all unreachable nodes. It is located in passes.cc and is described bypass_ipa_remove_symbols
. - IPA OpenACC
This is a pass group for OpenACC processing. It is located intree-ssa-loop.cc and is described bypass_ipa_oacc
. - IPA points-to analysis
This is a tree-based points-to analysis pass. The idea behind this analyzer is to generate set constraints from the program, then solve the resulting constraints in order to generate the points-to sets. It is located in tree-ssa-structalias.cc and is described bypass_ipa_pta
. - IPA OpenACC kernels
This is a pass group for processing OpenACC kernels regions. It is a subpass of the IPA OpenACC pass group that runs on offloaded functions containing OpenACC kernels loops. It is located intree-ssa-loop.cc and is described bypass_ipa_oacc_kernels
. - Target clone
This is a pass for parsing functions with multiple target attributes. It is located in multiple_target.cc and is described bypass_target_clone
. - IPA auto profile
This pass uses AutoFDO profiling data to annotate the control flow graph. It is located in auto-profile.cc and is described bypass_ipa_auto_profile
. - IPA tree profile
This pass does profiling for all functions in the call graph. It calculates branch probabilities and basic block execution counts. It is located in tree-profile.cc and is described bypass_ipa_tree_profile
. - IPA free function summary
This pass is a small IPA pass when argumentsmall_p
is true. It releases inline function summaries and call summaries. It is located in ipa-fnsummary.cc and is described bypass_ipa_free_free_fn_summary
. - IPA increase alignment
This pass increases the alignment of global arrays to improve vectorization. It is located in tree-vectorizer.ccand is described bypass_ipa_increase_alignment
. - IPA transactional memory
This pass is for transactional memory support. It is located in trans-mem.cc and is described bypass_ipa_tm
. - IPA lower emulated TLS
This pass lowers thread-local storage (TLS) operations to emulation functions provided by libgcc. It is located in tree-emutls.cc and is described bypass_ipa_lower_emutls
.