#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.
* 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.
* @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