static ir_node *deref_address(ir_type *const irtype, ir_node *const addr,
dbg_info *const dbgi)
{
- if(is_compound_type(irtype) || is_Array_type(irtype)) {
+ if (is_compound_type(irtype) ||
+ is_Method_type(irtype) ||
+ is_Array_type(irtype)) {
return addr;
}
}
case EXPR_UNARY_CAST_IMPLICIT: {
ir_node *value_node = expression_to_firm(value);
- ir_mode *mode = get_ir_mode(type);
- return create_conv(dbgi, value_node, mode);
+ if(is_type_scalar(type)) {
+ ir_mode *mode = get_ir_mode(type);
+ return create_conv(dbgi, value_node, mode);
+ } else {
+ return value_node;
+ }
}
case EXPR_UNARY_ASSUME:
if(firm_opt.confirm)
for( ; declaration != end; declaration = declaration->next) {
if(declaration->namespc != NAMESPACE_NORMAL)
continue;
- create_local_variable(declaration);
+ create_local_declaration(declaration);
}
}