* Try to reduce the number of conv nodes in the given ir graph.
*
* @param irg the graph
+ *
+ * @return non-zero if the optimization could be applied, 0 else
*/
-void conv_opt(ir_graph *irg);
+int conv_opt(ir_graph *irg);
/**
* Do the scalar replacement optimization.
*
* Store after Load: A Store after a Load is removed, if the
* Store doesn't have an exception handler.
+ *
+ * @return non-zero if the optimization could be applied, 0 else
*/
-void optimize_load_store(ir_graph *irg);
+int optimize_load_store(ir_graph *irg);
/**
* Do Loop unrolling in the given graph.
* See Muchnik 12.3.1 Algebraic Simplification and Reassociation of
* Addressing Expressions.
*
- *
+ * @return non-zero if the optimization could be applied, 0 else
*/
-void optimize_reassociation(ir_graph *irg);
+int optimize_reassociation(ir_graph *irg);
/**
* Normalize the Returns of a graph by creating a new End block
* @param ignore_runtime count a function only calling runtime functions as
* leave
*/
-void inline_leave_functions(int maxsize, int leavesize, int size, int ignore_runtime);
+void inline_leave_functions(unsigned maxsize, unsigned leavesize,
+ unsigned size, int ignore_runtime);
/**
* Heuristic inliner. Calculates a benefice value for every call and inlines
* those calls with a value higher than the threshold.
*
- * @param maxsize Do not inline any calls if a method has more than
+ * @param maxsize Do not inline any calls if a method has more than
* maxsize firm nodes. It may reach this limit by
* inlineing.
* @param threshold inlining threshold
*/
-void inline_functions(int maxsize, int inline_threshold);
+void inline_functions(unsigned maxsize, int inline_threshold);
+
+/**
+ * Combines congruent end blocks into one.
+ *
+ * @param irg The IR-graph to optimize.
+ *
+ * @return non-zero if the graph was transformed
+ */
+int melt_end_blocks(ir_graph *irg);
#endif