X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=ir.c;h=c61459499bedc3810430b77b0387343dbee7b997;hp=e794860f078a998cbe1694799574cc55fec99d7a;hb=8c08897749366bd83a9a623727aca2927257d4cf;hpb=b1d1aabbdd298397ef7603fba92e37e4528e57bc diff --git a/ir.c b/ir.c index e794860..c614594 100644 --- a/ir.c +++ b/ir.c @@ -1206,22 +1206,11 @@ bool ir_value_set_field(ir_value *self, ir_value *fld) return true; } -static char *ir_strdup(const char *str) -{ - if (str && !*str) { - /* actually dup empty strings */ - char *out = (char*)mem_a(1); - *out = 0; - return out; - } - return util_strdup(str); -} - bool ir_value_set_string(ir_value *self, const char *str) { if (self->vtype != TYPE_STRING) return false; - self->constval.vstring = ir_strdup(str); + self->constval.vstring = util_strdupe(str); self->hasvalue = true; return true; } @@ -1651,7 +1640,7 @@ void ir_phi_add(ir_instr* self, ir_block *b, ir_value *v) * is doing something wrong. */ irerror(self->context, "Invalid entry block for PHI"); - abort(); + exit(EXIT_FAILURE); } pe.value = v; @@ -3151,14 +3140,14 @@ static bool gen_function_varargs_copy(ir_function *self) stmt.o3.s1 = 0; maxparams = numparams + self->max_varargs; for (i = numparams; i < maxparams; ++i) { - if (i <= 8) { + if (i < 8) { stmt.o1.u1 = OFS_PARM0 + 3*i; stmt.o2.u1 = ir_value_code_addr(self->locals[i]); code_push_statement(&stmt, self->context.line); continue; } - ext = i - 9; - if (ext >= vec_size(ir->extparams)) + ext = i - 8; + while (ext >= vec_size(ir->extparams)) ir_gen_extparam(ir); ep = ir->extparams[ext]; @@ -3292,6 +3281,8 @@ static void gen_vector_defs(prog_section_def def, const char *name) def.offset++; component[len-1]++; } + + mem_d(component); } static void gen_vector_fields(prog_section_field fld, const char *name) @@ -3320,6 +3311,8 @@ static void gen_vector_fields(prog_section_field fld, const char *name) fld.offset++; component[len-1]++; } + + mem_d(component); } static bool ir_builder_gen_global(ir_builder *self, ir_value *global, bool islocal)