- if (is_Proj(irn) && get_Proj_proj(irn) == pn_Call_T_result) {
- res_proj = irn;
- foreach_out_edge(irn, res_edge) {
- int proj;
- be_abi_call_arg_t *arg;
- ir_node *res = get_edge_src_irn(res_edge);
-
- assert(is_Proj(res));
-
- proj = get_Proj_proj(res);
- arg = get_call_arg(call, 1, proj);
-
- /*
- shift the proj number to the right, since we will drop the
- unspeakable Proj_T from the Call. Therefore, all real argument
- Proj numbers must be increased by pn_be_Call_first_res
- */
- proj += pn_be_Call_first_res;
- set_Proj_proj(res, proj);
- obstack_ptr_grow(obst, res);
-
- if (proj > curr_res_proj)
- curr_res_proj = proj;
- if (arg->in_reg) {
- pset_remove_ptr(caller_save, arg->reg);
- //pmap_insert(arg_regs, arg->reg, INT_TO_PTR(proj + 1))
- }
- }
+ if(!is_Proj(irn) || get_Proj_proj(irn) != pn_Call_T_result)
+ continue;
+
+ foreach_out_edge(irn, res_edge) {
+ int proj;
+ ir_node *res = get_edge_src_irn(res_edge);
+
+ assert(is_Proj(res));
+
+ proj = get_Proj_proj(res);
+ assert(proj < n_res);
+ assert(res_projs[proj] == NULL);
+ res_projs[proj] = res;