ir_block_create_fieldaddress to pass on fieldtype from its input field

This commit is contained in:
Wolfgang Bumiller 2012-07-28 21:59:34 +02:00
parent 06ee0dc4f7
commit 03307a0903

6
ir.c
View file

@ -1270,6 +1270,8 @@ on_error:
ir_value* ir_block_create_fieldaddress(ir_block *self, const char *label, ir_value *ent, ir_value *field)
{
ir_value *v;
/* Support for various pointer types todo if so desired */
if (ent->vtype != TYPE_ENTITY)
return NULL;
@ -1277,7 +1279,9 @@ ir_value* ir_block_create_fieldaddress(ir_block *self, const char *label, ir_val
if (field->vtype != TYPE_FIELD)
return NULL;
return ir_block_create_general_instr(self, label, INSTR_ADDRESS, ent, field, TYPE_POINTER);
v = ir_block_create_general_instr(self, label, INSTR_ADDRESS, ent, field, TYPE_POINTER);
v->fieldtype = field->fieldtype;
return v;
}
ir_value* ir_block_create_load_from_ent(ir_block *self, const char *label, ir_value *ent, ir_value *field, int outype)