(proj < (int)get_method_n_params(mt)),
"More Projs for args than args in type", 0
);
- if ((mode_is_reference(mode)) && is_compound_type(get_method_param_type(mt, proj)))
+ ir_type *param_type = get_method_param_type(mt, proj);
+ if (mode_is_reference(mode) && (is_compound_type(param_type) || is_Array_type(param_type)))
/* value argument */ break;
if (!irg_is_constrained(get_irn_irg(pred), IR_GRAPH_CONSTRAINT_BACKEND)) {
ASSERT_AND_RET_DBG(
- (mode == get_type_mode(get_method_param_type(mt, proj))),
+ (mode == get_type_mode(param_type)),
"Mode of Proj from Start doesn't match mode of param type.", 0,
show_proj_mode_failure(p, get_method_param_type(mt, proj));
);
/* the is_method_entity(ent) exception is for nested functions... */
ASSERT_AND_RET_DBG((get_entity_owner(ent)->flags & tf_segment)
|| is_method_entity(ent),
- "SymConst node with frame entity", 0,
+ "SymConst node with non-segment entity", 0,
show_node_failure(n););
}
return 1;