docu: further improvements
[libfirm] / include / libfirm / iroptimize.h
index c71f276..57d8b7f 100644 (file)
@@ -20,7 +20,6 @@
 /**
  * @file
  * @brief   Available Optimisations of libFirm.
- * @version $Id$
  */
 #ifndef FIRM_IROPTIMIZE_H
 #define FIRM_IROPTIMIZE_H
 #include "nodeops.h"
 #include "begin.h"
 
+/**
+ * @defgroup iroptimize  Transformations and Optimisations
+ * @{
+ */
+
 /**
  * Control flow optimization.
  *
  * Independent of compiler flag it removes Tuples from cf edges,
  * Bad predecessors from Blocks and Phis, and unnecessary predecessors of End.
  * Destroys backedge information.
- *
- * @bug Chokes on Id nodes if called in a certain order with other
- *      optimizations.  Call local_optimize_graph() before to remove
- *      Ids.
  */
 FIRM_API void optimize_cf(ir_graph *irg);
 
@@ -168,39 +168,16 @@ FIRM_API void escape_analysis(int run_scalar_replace,
  * graphs.
  *
  * If callee information is valid, we also optimize polymorphic Calls.
- *
- * @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
- *
- * If the frontend created external entities with the irg_const_function
- * property set, the force_run parameter should be set, else
- * should be unset.
- *
- * @note This optimization destroys the link fields of nodes.
  */
-FIRM_API void optimize_funccalls(int force_run,
-                                 check_alloc_entity_func callback);
+FIRM_API void optimize_funccalls(void);
 
 /**
  * Creates an ir_prog pass for optimize_funccalls().
  *
  * @param name       the name of this pass or NULL
- * @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
  */
-FIRM_API ir_prog_pass_t *optimize_funccalls_pass(const char *name,
-                                                 int force_run,
-                                                 check_alloc_entity_func callback);
+FIRM_API ir_prog_pass_t *optimize_funccalls_pass(const char *name);
 
 /**
  * Does Partial Redundancy Elimination combined with
@@ -1105,6 +1082,31 @@ FIRM_API ir_value_classify_sign classify_value_sign(ir_node *n);
 FIRM_API ir_tarval *computed_value_Cmp_Confirm(
        const ir_node *cmp, ir_node *left, ir_node *right, ir_relation relation);
 
+typedef ir_entity *(*compilerlib_entity_creator_t)(ident *id, ir_type *mt);
+/**
+ * Set the compilerlib entity creation callback that is used to create
+ * compilerlib function entities.
+ *
+ * @param cb  the new compilerlib entity creation callback
+ */
+FIRM_API void set_compilerlib_entity_creator(compilerlib_entity_creator_t cb);
+
+/**
+ * Get the compilerlib entity creation callback.
+ */
+FIRM_API compilerlib_entity_creator_t get_compilerlib_entity_creator(void);
+
+/**
+ * Construct the entity for a given function using the current compilerlib
+ * entity creation callback.
+ *
+ * @param id  the identifier of the compilerlib function
+ * @param mt  the method type of the compilerlib function
+ */
+FIRM_API ir_entity *create_compilerlib_entity(ident *id, ir_type *mt);
+
+/** @} */
+
 #include "end.h"
 
 #endif