gphi *phi;
phi = create_phi_node (tmp, bb);
- /* RET_TYPE can be a float when -ffast-maths is enabled. */
- add_phi_arg (phi, fold_convert (ret_type, init), single_pred_edge (bb),
+ add_phi_arg (phi, init, single_pred_edge (bb),
UNKNOWN_LOCATION);
return PHI_RESULT (phi);
}
}
phis_constructed = true;
}
+ tree ret_type = TREE_TYPE (DECL_RESULT (current_function_decl));
+ if (POINTER_TYPE_P (ret_type))
+ ret_type = sizetype;
if (act->add && !a_acc)
a_acc = create_tailcall_accumulator ("add_acc", first,
- integer_zero_node);
+ build_zero_cst (ret_type));
if (act->mult && !m_acc)
m_acc = create_tailcall_accumulator ("mult_acc", first,
- integer_one_node);
+ build_one_cst (ret_type));
}
if (a_acc || m_acc)