X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firmode.c;h=88f6c6efac3835497bc5ea47e51ef085134278a4;hb=2de19654e65c59e0d0b8fa1de27c548a2e71ff74;hp=bce0814d3f20df08eff37725d35e7220a8d373bb;hpb=468b10f9c0f93416f0b092b0fb15abd98be3aad5;p=libfirm diff --git a/ir/ir/irmode.c b/ir/ir/irmode.c index bce0814d3..88f6c6efa 100644 --- a/ir/ir/irmode.c +++ b/ir/ir/irmode.c @@ -255,6 +255,7 @@ static ir_mode *register_mode(const ir_mode *new_mode) { ARR_APP1(ir_mode*, mode_list, mode); mode->kind = k_ir_mode; + mode->type = new_type_primitive(mode); /* add the new mode to the irp list of modes */ add_irp_mode(mode); @@ -278,7 +279,8 @@ ir_mode *new_ir_mode(const char *name, ir_mode_sort sort, int bit_size, int sign mode_tmpl.sort = sort; mode_tmpl.size = bit_size; mode_tmpl.sign = sign ? 1 : 0; - mode_tmpl.modulo_shift = (mode_tmpl.sort == irms_int_number) ? modulo_shift : 0; + mode_tmpl.modulo_shift = (mode_tmpl.sort == irms_int_number || + mode_tmpl.sort == irms_reference) ? modulo_shift : 0; mode_tmpl.vector_elem = 1; mode_tmpl.arithmetic = arithmetic; mode_tmpl.link = NULL; @@ -807,7 +809,7 @@ void init_mode(void) { newmode.name = new_id_from_chars("P", 1); newmode.sign = 0; newmode.size = 32; - newmode.modulo_shift = 0; + newmode.modulo_shift = 32; newmode.eq_signed = mode_Is; newmode.eq_unsigned = mode_Iu; mode_P = register_mode(&newmode);