Remove entity_usage_state attribute
[libfirm] / include / libfirm / lowering.h
index 44ea887..be46d60 100644 (file)
 #include "begin.h"
 
 /**
- * Lower CopyB nodes of size smaller that max_size into Loads/Stores
+ * Lower small CopyB nodes to Load/Store nodes, preserve medium-sized CopyB
+ * nodes and replace large CopyBs by a call to memcpy, depending on the given
+ * parameters.
+ *
+ * Small CopyB nodes (size <= max_small_size) are turned into a series of
+ * loads and stores.
+ * Medium-sized CopyB nodes (max_small_size < size < min_large_size) are
+ * left untouched.
+ * Large CopyB nodes (size >= min_large_size) are turned into a memcpy call.
+ *
+ * @param irg                 The graph to be lowered.
+ * @param max_small_size      The maximum number of bytes for a CopyB node so
+ *                            that it is still considered 'small'.
+ * @param min_large_size      The minimum number of bytes for a CopyB node so
+ *                            that it is regarded as 'large'.
  */
-FIRM_API void lower_CopyB(ir_graph *irg, unsigned max_size,
-                          unsigned native_mode_bytes);
+FIRM_API void lower_CopyB(ir_graph *irg, unsigned max_small_size,
+                          unsigned min_large_size);
 
 /**
  * Lowers all Switches (Cond nodes with non-boolean mode) depending on spare_size.
@@ -59,25 +73,20 @@ FIRM_API void lower_switch(ir_graph *irg, unsigned small_switch,
  * Handle bit fields by added And/Or calculations.
  *
  * @param irg               the graph to lower
- * @param lower_bitfields   the graph contains old-style bitfield
- *                          constructs
  *
  * @note: There is NO lowering ob objects oriented types. This is highly compiler
  *        and ABI specific and should be placed directly in the compiler.
  */
-FIRM_API void lower_highlevel_graph(ir_graph *irg, int lower_bitfields);
+FIRM_API void lower_highlevel_graph(ir_graph *irg);
 
 /**
  * Creates an ir_graph pass for lower_highlevel_graph().
  *
  * @param name              the name of this pass or NULL
- * @param lower_bitfields   the graph contains old-style bitfield
- *                          constructs
  *
  * @return  the newly created ir_graph pass
  */
-FIRM_API ir_graph_pass_t *lower_highlevel_graph_pass(const char *name,
-                                                     int lower_bitfields);
+FIRM_API ir_graph_pass_t *lower_highlevel_graph_pass(const char *name);
 
 /**
  * Replaces SymConsts by a real constant if possible.
@@ -88,7 +97,7 @@ FIRM_API ir_graph_pass_t *lower_highlevel_graph_pass(const char *name,
  * @note There is NO lowering of objects oriented types. This is highly compiler
  *       and ABI specific and should be placed directly in the compiler.
  */
-FIRM_API void lower_highlevel(int lower_bitfields);
+FIRM_API void lower_highlevel(void);
 
 /**
  * does the same as lower_highlevel for all nodes on the const code irg