static ir_mode *get_ir_mode(unsigned bytes)
{
switch (bytes) {
- case 1: return mode_Bu;
+ case 1: return mode_Bu;
case 2: return mode_Hu;
case 4: return mode_Iu;
case 8: return mode_Lu;
/**
* lower a CopyB node.
*/
-static void lower_copyb_nodes(ir_node *irn, unsigned mode_bytes) {
- ir_graph *irg = current_ir_graph;
+static void lower_copyb_nodes(ir_node *irn, unsigned mode_bytes)
+{
+ ir_graph *irg = get_irn_irg(irn);
unsigned size;
unsigned offset;
ir_mode *mode;
addr_const = new_r_Const_long(irg, mode_Iu, offset);
add = new_r_Add(block, addr_src, addr_const, addr_mode);
- load = new_r_Load(block, mem, add, mode, 0);
- load_res = new_r_Proj(block, load, mode, pn_Load_res);
- load_mem = new_r_Proj(block, load, mode_M, pn_Load_M);
+ load = new_r_Load(block, mem, add, mode, cons_none);
+ load_res = new_r_Proj(load, mode, pn_Load_res);
+ load_mem = new_r_Proj(load, mode_M, pn_Load_M);
addr_const = new_r_Const_long(irg, mode_Iu, offset);
add = new_r_Add(block, addr_dst, addr_const, addr_mode);
- store = new_r_Store(block, load_mem, add, load_res, 0);
- store_mem = new_r_Proj(block, store, mode_M, pn_Store_M);
+ store = new_r_Store(block, load_mem, add, load_res, cons_none);
+ store_mem = new_r_Proj(store, mode_M, pn_Store_M);
mem = store_mem;
}
}
turn_into_tuple(irn, pn_CopyB_max);
- set_Tuple_pred(irn, pn_CopyB_M_regular, mem);
- set_Tuple_pred(irn, pn_CopyB_X_regular, get_irg_bad(irg));
- set_Tuple_pred(irn, pn_CopyB_X_except, get_irg_bad(irg));
- set_Tuple_pred(irn, pn_CopyB_M_except, get_irg_bad(irg));
+ set_Tuple_pred(irn, pn_CopyB_M, mem);
+ set_Tuple_pred(irn, pn_CopyB_X_regular, new_r_Bad(irg, mode_X));
+ set_Tuple_pred(irn, pn_CopyB_X_except, new_r_Bad(irg, mode_X));
}
/**
* Post-Walker: find small CopyB nodes.
*/
-static void find_copyb_nodes(ir_node *irn, void *ctx) {
- walk_env_t *env = ctx;
+static void find_copyb_nodes(ir_node *irn, void *ctx)
+{
+ walk_env_t *env = (walk_env_t*)ctx;
ir_type *tp;
unsigned size;
entry_t *entry;
if (is_Proj(irn)) {
ir_node *pred = get_Proj_pred(irn);
- if (is_CopyB(pred) && get_Proj_proj(irn) != pn_CopyB_M_regular) {
+ if (is_CopyB(pred) && get_Proj_proj(irn) != pn_CopyB_M) {
/* found an exception Proj: remove it from the list again */
- entry = get_irn_link(pred);
+ entry = (entry_t*)get_irn_link(pred);
list_del(&entry->list);
}
return;
return;
/* ok, link it in */
- entry = obstack_alloc(&env->obst, sizeof(*entry));
+ entry = OALLOC(&env->obst, entry_t);
entry->copyb = irn;
INIT_LIST_HEAD(&entry->list);
set_irn_link(irn, entry);
void lower_CopyB(ir_graph *irg, unsigned max_size, unsigned native_mode_bytes)
{
walk_env_t env;
- entry_t *entry;
- ir_graph *rem = current_ir_graph;
-
- current_ir_graph = irg;
+ entry_t *entry;
obstack_init(&env.obst);
env.max_size = max_size;
}
obstack_free(&env.obst, NULL);
- current_ir_graph = rem;
}