libFirm
|
Available Optimisations of libFirm. More...
Go to the source code of this file.
Macros | |
#define | osr_flag_default osr_flag_lftr_with_ov_check |
default setting | |
#define | DEFAULT_CLONE_THRESHOLD 20 |
A default threshold. |
Typedefs | |
typedef int(* | check_alloc_entity_func )(ir_entity *ent) |
A callback that checks whether a entity is an allocation routine. | |
typedef int(* | arch_allow_ifconv_func )(ir_node *sel, ir_node *mux_false, ir_node *mux_true) |
This function is called to evaluate, if a mux(sel , mux_false , mux_true ) should be built for the current architecture. | |
typedef ir_type *(* | gen_pointer_type_to_func )(ir_type *tp) |
This is the type for a method, that returns a pointer type to tp. | |
typedef void(* | opt_ptr )(ir_graph *irg) |
pointer to an optimization function | |
typedef ir_entity *(* | compilerlib_entity_creator_t )(ident *id, ir_type *mt) |
Type of callbacks for creating entities of the compiler library. |
Enumerations | |
enum | osr_flags { osr_flag_none = 0, osr_flag_lftr_with_ov_check = 1, osr_flag_ignore_x86_shift = 2, osr_flag_keep_reg_pressure = 4 } |
Possible flags for the Operator Scalar Replacement. More... |
Functions | |
void | optimize_cf (ir_graph *irg) |
Control flow optimization. | |
ir_graph_pass_t * | optimize_cf_pass (const char *name) |
Creates an ir_graph pass for optimize_cf(). | |
void | opt_jumpthreading (ir_graph *irg) |
Perform path-sensitive jump threading on the given graph. | |
ir_graph_pass_t * | opt_jumpthreading_pass (const char *name) |
Creates an ir_graph pass for opt_jumpthreading(). | |
void | opt_bool (ir_graph *irg) |
Simplifies boolean expression in the given ir graph. | |
ir_graph_pass_t * | opt_bool_pass (const char *name) |
Creates an ir_graph pass for opt_bool(). | |
void | conv_opt (ir_graph *irg) |
Reduces the number of Conv nodes in the given ir graph. | |
ir_graph_pass_t * | conv_opt_pass (const char *name) |
Creates an ir_graph pass for conv_opt(). | |
void | escape_enalysis_irg (ir_graph *irg, check_alloc_entity_func callback) |
Performs simple and fast escape analysis for one graph. | |
void | escape_analysis (int run_scalar_replace, check_alloc_entity_func callback) |
Performs simple and fast escape analysis for all graphs. | |
void | optimize_funccalls (void) |
Optimize function calls by handling const functions. | |
ir_prog_pass_t * | optimize_funccalls_pass (const char *name) |
Creates an ir_prog pass for optimize_funccalls(). | |
void | do_gvn_pre (ir_graph *irg) |
Does Partial Redundancy Elimination combined with Global Value Numbering. | |
ir_graph_pass_t * | do_gvn_pre_pass (const char *name) |
Creates an ir_graph pass for do_gvn_pre(). | |
void | opt_if_conv (ir_graph *irg) |
Perform If conversion on a graph. | |
ir_graph_pass_t * | opt_if_conv_pass (const char *name) |
Creates an ir_graph pass for opt_if_conv(). | |
void | opt_parallelize_mem (ir_graph *irg) |
Tries to reduce dependencies for memory nodes where possible by parallelizing them and synchronizing with Sync nodes. | |
ir_graph_pass_t * | opt_parallelize_mem_pass (const char *name) |
Creates an ir_graph pass for opt_sync(). | |
ir_node * | can_replace_load_by_const (const ir_node *load, ir_node *c) |
Check if we can replace the load by a given const from the const code irg. | |
void | optimize_load_store (ir_graph *irg) |
Load/Store optimization. | |
ir_graph_pass_t * | optimize_load_store_pass (const char *name) |
Creates an ir_graph pass for optimize_load_store(). | |
void | opt_ldst (ir_graph *irg) |
New experimental alternative to optimize_load_store. | |
ir_graph_pass_t * | opt_ldst_pass (const char *name) |
Creates an ir_graph pass for opt_ldst(). | |
void | loop_optimization (ir_graph *irg) |
Optimize loops by peeling or unrolling them if beneficial. | |
void | opt_frame_irg (ir_graph *irg) |
Optimize the frame type of an irg by removing never touched entities. | |
ir_graph_pass_t * | opt_frame_irg_pass (const char *name) |
Creates an ir_graph pass for opt_frame_irg(). | |
void | opt_osr (ir_graph *irg, unsigned flags) |
Performs the Operator Scalar Replacement optimization and linear function test replacement for loop control. | |
ir_graph_pass_t * | opt_osr_pass (const char *name, unsigned flags) |
Creates an ir_graph pass for remove_phi_cycles(). | |
void | remove_phi_cycles (ir_graph *irg) |
Removes useless Phi cycles, i.e cycles of Phi nodes with only one non-Phi node. | |
ir_graph_pass_t * | remove_phi_cycles_pass (const char *name) |
Creates an ir_graph pass for remove_phi_cycles(). | |
void | proc_cloning (float threshold) |
Performs procedure cloning. | |
ir_prog_pass_t * | proc_cloning_pass (const char *name, float threshold) |
Creates an ir_prog pass for proc_cloning(). | |
void | optimize_reassociation (ir_graph *irg) |
Reassociation. | |
ir_graph_pass_t * | optimize_reassociation_pass (const char *name) |
Creates an ir_graph pass for optimize_reassociation(). | |
void | normalize_one_return (ir_graph *irg) |
Normalize the Returns of a graph by creating a new End block with One Return(Phi). | |
ir_graph_pass_t * | normalize_one_return_pass (const char *name) |
Creates an ir_graph pass for normalize_one_return(). | |
void | normalize_n_returns (ir_graph *irg) |
Normalize the Returns of a graph by moving the Returns upwards as much as possible. | |
ir_graph_pass_t * | normalize_n_returns_pass (const char *name) |
Creates an ir_graph pass for normalize_n_returns(). | |
void | scalar_replacement_opt (ir_graph *irg) |
Performs the scalar replacement optimization. | |
ir_graph_pass_t * | scalar_replacement_opt_pass (const char *name) |
Creates an ir_graph pass for scalar_replacement_opt(). | |
void | opt_tail_rec_irg (ir_graph *irg) |
Optimizes tail-recursion calls by converting them into loops. | |
ir_graph_pass_t * | opt_tail_rec_irg_pass (const char *name) |
Creates an ir_graph pass for opt_tail_rec_irg(). | |
void | opt_tail_recursion (void) |
Optimize tail-recursion calls for all IR-Graphs. | |
ir_prog_pass_t * | opt_tail_recursion_pass (const char *name) |
Creates an ir_prog pass for opt_tail_recursion(). | |
void | normalize_irp_class_casts (gen_pointer_type_to_func gppt_fct) |
Insert Casts so that class type casts conform exactly with the type hierarchy. | |
void | normalize_irg_class_casts (ir_graph *irg, gen_pointer_type_to_func gppt_fct) |
Insert Casts so that class type casts conform exactly with the type hierarchy in given graph. | |
void | optimize_class_casts (void) |
Optimize casting between class types. | |
void | combo (ir_graph *irg) |
CLiff Click's combo algorithm from "Combining Analyses, combining Optimizations". | |
ir_graph_pass_t * | combo_pass (const char *name) |
Creates an ir_graph pass for combo. | |
void | inline_small_irgs (ir_graph *irg, int size) |
Inlines all small methods at call sites where the called address comes from a SymConst node that references the entity representing the called method. | |
ir_graph_pass_t * | inline_small_irgs_pass (const char *name, int size) |
Creates an ir_graph pass for inline_small_irgs(). | |
void | inline_leaf_functions (unsigned maxsize, unsigned leafsize, unsigned size, int ignore_runtime) |
Inlineing with a different heuristic than inline_small_irgs(). | |
ir_prog_pass_t * | inline_leaf_functions_pass (const char *name, unsigned maxsize, unsigned leafsize, unsigned size, int ignore_runtime) |
Creates an ir_prog pass for inline_leaf_functions(). | |
void | inline_functions (unsigned maxsize, int inline_threshold, opt_ptr after_inline_opt) |
Heuristic inliner. | |
ir_prog_pass_t * | inline_functions_pass (const char *name, unsigned maxsize, int inline_threshold, opt_ptr after_inline_opt) |
Creates an ir_prog pass for inline_functions(). | |
void | shape_blocks (ir_graph *irg) |
Combines congruent blocks into one. | |
ir_graph_pass_t * | shape_blocks_pass (const char *name) |
Creates an ir_graph pass for shape_blocks(). | |
void | do_loop_inversion (ir_graph *irg) |
Perform loop inversion on a given graph. | |
void | do_loop_unrolling (ir_graph *irg) |
Perform loop unrolling on a given graph. | |
void | do_loop_peeling (ir_graph *irg) |
Perform loop peeling on a given graph. | |
ir_graph_pass_t * | loop_inversion_pass (const char *name) |
Creates an ir_graph pass for loop inversion. | |
ir_graph_pass_t * | loop_unroll_pass (const char *name) |
Creates an ir_graph pass for loop unrolling. | |
ir_graph_pass_t * | loop_peeling_pass (const char *name) |
Creates an ir_graph pass for loop peeling. | |
ir_graph_pass_t * | set_vrp_pass (const char *name) |
Creates an ir_graph pass for set_vrp_data() | |
void | garbage_collect_entities (void) |
Removes all entities which are unused. | |
ir_prog_pass_t * | garbage_collect_entities_pass (const char *name) |
Pass for garbage_collect_entities. | |
void | dead_node_elimination (ir_graph *irg) |
Performs dead node elimination by copying the ir graph to a new obstack. | |
ir_graph_pass_t * | dead_node_elimination_pass (const char *name) |
Creates an ir_graph pass for dead_node_elimination(). | |
int | inline_method (ir_node *call, ir_graph *called_graph) |
Inlines a method at the given call site. | |
void | place_code (ir_graph *irg) |
Code Placement. | |
ir_graph_pass_t * | place_code_pass (const char *name) |
Creates an ir_graph pass for place_code(). | |
void | fixpoint_vrp (ir_graph *) |
Determines information about the values of nodes and perform simplifications using this information. | |
ir_graph_pass_t * | fixpoint_vrp_irg_pass (const char *name) |
Creates an ir_graph pass for fixpoint_vrp(). | |
int | value_not_zero (const ir_node *n, const ir_node **confirm) |
Checks if the value of a node is != 0. | |
int | value_not_null (const ir_node *n, const ir_node **confirm) |
Checks if the value of a node cannot represent a NULL pointer. | |
ir_value_classify_sign | classify_value_sign (ir_node *n) |
Checks if the value of a node can be confirmed >= 0 or <= 0, If the mode of the value did not honor signed zeros, else check for >= 0 or < 0. | |
ir_tarval * | computed_value_Cmp_Confirm (const ir_node *cmp, ir_node *left, ir_node *right, ir_relation relation) |
Returns the value of a Cmp if one or both predecessors are Confirm nodes. | |
void | set_compilerlib_entity_creator (compilerlib_entity_creator_t cb) |
Sets the compilerlib entity creation callback that is used to create compilerlib function entities. | |
compilerlib_entity_creator_t | get_compilerlib_entity_creator (void) |
Returns the compilerlib entity creation callback. | |
ir_entity * | create_compilerlib_entity (ident *id, ir_type *mt) |
Constructs the entity for a given function using the current compilerlib entity creation callback. |
Available Optimisations of libFirm.
Definition in file iroptimize.h.