/** A map from a method type to its lowered type. */
static pmap *lowered_type;
-ir_nodeset_t created_mux_nodes;
+static ir_nodeset_t created_mux_nodes;
/**
* @return The lowered (floating point) mode.
assert(double_types <= 3);
if (float_types + double_types > 1)
- snprintf(buf, sizeof(buf), "__%s%s%s%s%d", name, first_param, second_param, result, float_types + double_types);
+ snprintf(buf, sizeof(buf), "__%s%s%s%s%u", name, first_param, second_param, result, float_types + double_types);
else
snprintf(buf, sizeof(buf), "__%s%s%s%s", name, first_param, second_param, result);
*/
static void lower_Cmp(ir_node *n)
{
- ir_node *symconst;
+ ir_node *symconst = NULL;
ir_node *block = get_nodes_block(n);
ir_node *call_result = NULL;
dbg_info *dbgi = get_irn_dbg_info(n);
ir_mode *op_mode = get_irn_mode(left);
ir_node *right = get_Cmp_right(n);
ir_node *symconst2 = NULL;
- ir_node *zero = new_rd_Const_long(dbgi, irg, mode_Is, 0);
+ ir_node *zero = new_rd_Const(dbgi, irg, get_mode_null(mode_Is));
if (! mode_is_float(op_mode))
return;
ir_entity *ent = get_irg_entity(irg);
ir_type *mtp = get_entity_type(ent);
ir_type *lowered_mtp = lower_method_type(mtp);
+ ir_type *frame_tp = get_irg_frame_type(irg);
+ size_t n_members;
+ size_t i;
if (lowered_mtp != mtp)
set_entity_type(ent, lowered_mtp);
irg_walk_graph(irg, NULL, lower_mode, NULL);
+
+ /* fixup parameter entities */
+ n_members = get_compound_n_members(frame_tp);
+ for (i = 0; i < n_members; ++i) {
+ ir_entity *member = get_compound_member(frame_tp, i);
+ ir_type *type = get_entity_type(member);
+ if (is_Primitive_type(type)) {
+ ir_type *lowered = lower_type(type);
+ set_entity_type(member, lowered);
+ }
+ }
}
}