X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ir%2Fbe%2Fbeabi.c;h=e4c280213007296e28fa41f6358cfb0e6f08ea31;hb=67b6304bf1b2df3cefa9f39151ed7436e64c48dd;hp=16a9c6b11fbc8d502386a86167a71ad4a5ffb1c9;hpb=b9c29a477d8d93484ee66b827857a0e67102a189;p=libfirm diff --git a/ir/be/beabi.c b/ir/be/beabi.c index 16a9c6b11..e4c280213 100644 --- a/ir/be/beabi.c +++ b/ir/be/beabi.c @@ -1691,6 +1691,7 @@ static void fix_address_of_parameter_access(be_abi_irg_t *env, ir_entity *value_ } } +#if 0 /** * The start block has no jump, instead it has an initial exec Proj. * The backend wants to handle all blocks the same way, so we replace @@ -1721,6 +1722,7 @@ static void fix_start_block(ir_node *block, void *env) { } } } +#endif /** * Modify the irg itself and the frame type. @@ -1740,7 +1742,7 @@ static void modify_irg(be_abi_irg_t *env) pset *dont_save = pset_new_ptr(8); int n_params; - int i, j, n, temp; + int i, j, n; reg_node_map_t *rm; const arch_register_t *fp_reg; @@ -1938,18 +1940,22 @@ static void modify_irg(be_abi_irg_t *env) } else if(arg->on_stack) { - /* For atomic parameters which are actually used, we create a StackParam node. */ + ir_node *addr = be_new_FrameAddr(sp->reg_class, irg, reg_params_bl, frame_pointer, arg->stack_ent); + + /* For atomic parameters which are actually used, we create a Load node. */ if(is_atomic_type(param_type) && get_irn_n_edges(args[i]) > 0) { ir_mode *mode = get_type_mode(param_type); - const arch_register_class_t *cls = arch_isa_get_reg_class_for_mode(isa, mode); - repl = be_new_StackParam(cls, isa->bp->reg_class, irg, reg_params_bl, mode, frame_pointer, arg->stack_ent); + ir_node *load = new_rd_Load(NULL, irg, reg_params_bl, + new_NoMem(), addr, mode); + repl = new_rd_Proj(NULL, irg, reg_params_bl, load, + mode, pn_Load_res); } /* The stack parameter is not primitive (it is a struct or array), we thus will create a node representing the parameter's address on the stack. */ else { - repl = be_new_FrameAddr(sp->reg_class, irg, reg_params_bl, frame_pointer, arg->stack_ent); + repl = addr; } } @@ -1985,9 +1991,12 @@ static void modify_irg(be_abi_irg_t *env) del_pset(dont_save); obstack_free(&env->obst, args); + /* this was needed for STA backend... */ +#if 0 /* handle start block here (place a jump in the block) */ - temp = 0; - irg_block_walk_graph(irg, fix_start_block, NULL, &temp); + i = 0; + irg_block_walk_graph(irg, fix_start_block, NULL, &i); +#endif } /** Fix the state inputs of calls that still hang on unknowns */