*/
void optimize_cf(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for optimize_cf().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *optimize_cf_pass(const char *name, int verify, int dump);
+
/**
* Perform path-sensitive jump threading on the given graph.
*
*/
void opt_jumpthreading(ir_graph* irg);
+/**
+ * Creates an ir_graph pass for opt_jumpthreading().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *opt_jumpthreading_pass(const char *name, int verify, int dump);
+
/**
* Try to simplify boolean expression in the given ir graph.
* eg. x < 5 && x < 6 becomes x < 5
*/
void opt_bool(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for opt_bool().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *opt_bool_pass(const char *name, int verify, int dump);
+
/**
* Try to reduce the number of conv nodes in the given ir graph.
*
*/
int conv_opt(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for conv_opt().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *conv_opt_pass(const char *name, int verify, int dump);
+
/**
* Do the scalar replacement optimization.
* Make a date flow analyze and split the
*/
void optimize_funccalls(int force_run, check_alloc_entity_func callback);
+/**
+ * Creates an ir_prog pass for optimize_funccalls().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ * @param force_run if non-zero, an optimization run is started even
+ * if no const function graph was detected.
+ * Else calls are only optimized if at least one
+ * const function graph was detected.
+ * @param callback a callback function to check whether a
+ * given entity is a allocation call
+ *
+ * @return the newly created ir_prog pass
+ */
+ir_prog_pass_t *optimize_funccalls_pass(
+ const char *name, int verify, int dump,
+ int force_run, check_alloc_entity_func callback);
+
/**
* Does Partial Redundancy Elimination combined with
* Global Value Numbering.
*/
void do_gvn_pre(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for do_gvn_pre().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *do_gvn_pre_pass(const char *name, int verify, int dump);
+
/**
* This function is called to evaluate, if a mux can build
* of the current architecture.
*/
void opt_if_conv(ir_graph *irg, const ir_settings_if_conv_t *params);
+/**
+ * Creates an ir_graph pass for opt_if_conv().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ * @param params The parameters for the if conversion.
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *opt_if_conv_pass(
+ const char *name, int verify, int dump, const ir_settings_if_conv_t *params);
+
void opt_sync(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for opt_sync().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *opt_sync_pass(const char *name, int verify, int dump);
+
/*
* Check if we can replace the load by a given const from
* the const code irg.
*/
int optimize_load_store(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for optimize_load_store().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *optimize_load_store_pass(const char *name, int verify, int dump);
+
/**
* New experimental alternative to optimize_load_store.
* Based on a dataflow analysis, so load/stores are moved out of loops
*/
int opt_ldst(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for opt_ldst().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *opt_ldst_pass(const char *name, int verify, int dump);
+
/**
* Do Loop unrolling in the given graph.
*/
void optimize_loop_unrolling(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for optimize_loop_unrolling().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *optimize_loop_unrolling_pass(const char *name, int verify, int dump);
+
/**
* Optimize the frame type of an irg by removing
* never touched entities.
*/
void opt_frame_irg(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for opt_frame_irg().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *opt_frame_irg_pass(const char *name, int verify, int dump);
+
/** Possible flags for the Operator Scalar Replacement. */
typedef enum osr_flags {
osr_flag_none = 0, /**< no additional flags */
*/
void opt_osr(ir_graph *irg, unsigned flags);
+/**
+ * Creates an ir_graph pass for remove_phi_cycles().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ * @param flags set of osr_flags
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *opt_osr_pass(const char *name, int verify, int dump, unsigned flags);
+
/**
* Removes useless Phi cycles, i.e cycles of Phi nodes with only one
* non-Phi node.
*/
void remove_phi_cycles(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for remove_phi_cycles().
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ * @param params The parameters for the if conversion.
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *remove_phi_cycles_pass(const char *name, int verify, int dump);
+
+
/** A default threshold. */
#define DEFAULT_CLONE_THRESHOLD 300
*/
void combo(ir_graph *irg);
+/**
+ * Creates an ir_graph pass for combo.
+ *
+ * @param name the name of this pass or NULL
+ * @param verify should this pass be verified?
+ * @param dump should this pass result be dumped?
+ *
+ * @return the newly created ir_graph pass
+ */
+ir_graph_pass_t *combo_pass(const char *name, int verify, int dump);
+
/** Inlines all small methods at call sites where the called address comes
* from a SymConst node that references the entity representing the called
* method.