X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbelower.c;h=f02056a02391acf8f39a2bba7b4f2a38c7ebcddf;hb=60486fe0da8d2909a06697018bf7c9266145dbf2;hp=b2312fce98ea3fc1070de799a7b1ee9fcd23dfb6;hpb=454ec00bbe5e29a952428276fbfae4aea2a8f447;p=libfirm diff --git a/ir/be/belower.c b/ir/be/belower.c index b2312fce9..f02056a02 100644 --- a/ir/be/belower.c +++ b/ir/be/belower.c @@ -428,6 +428,9 @@ static void lower_call_node(ir_node *call, void *walk_env) { bitset_set(proj_set, get_Proj_proj(get_edge_src_irn(edge))); } } + else { + proj_T = new_r_Proj(current_ir_graph, block, call, mode_T, pn_Call_T_result); + } /* Create for each caller save register a proj (keep node arguement) */ /* if this proj is not already present */ @@ -471,11 +474,13 @@ static void lower_nodes_walker(ir_node *irn, void *walk_env) { const arch_env_t *arch_env = env->chord_env->main_env->arch_env; if (!is_Block(irn)) { - if (is_Perm(arch_env, irn) && ! is_Proj(irn)) { - lower_perm_node(irn, walk_env); - } - else if (is_Call(arch_env, irn)) { - lower_call_node(irn, walk_env); + if (!is_Proj(irn)) { + if (is_Perm(arch_env, irn)) { + lower_perm_node(irn, walk_env); + } + else if (is_Call(arch_env, irn)) { + lower_call_node(irn, walk_env); + } } }