/* Now all blocks are in place */
/* From 'bin' we jump to whatever comes first */
if (bprecond) tmpblock = bprecond;
- else if (bbody) tmpblock = bbody;
+ else tmpblock = bbody; /* can never be null */
+
+ /* DEAD CODE
else if (bpostcond) tmpblock = bpostcond;
else tmpblock = bout;
+ */
+
if (!ir_block_create_jump(bin, ast_ctx(self), tmpblock))
return false;
/* parameters live at 0 */
for (i = 0; i < vec_size(self->params); ++i)
- ir_value_life_merge(self->locals[i], 0);
+ if (!ir_value_life_merge(self->locals[i], 0))
+ compile_error(self->context, "internal error: failed value-life merging");
do {
self->run_id++;
{
size_t i;
oprintf("%s:%s\n", ind, b->label);
- strncat(ind, "\t", IND_BUFSZ);
+ strncat(ind, "\t", IND_BUFSZ-1);
if (b->instr && b->instr[0])
oprintf("%s (%i) [entry]\n", ind, (int)(b->instr[0]->eid-1));
data->handles[2] = fdopen(errhandle[0], mode);
/* sigh */
- if (argv)
- vec_free(argv);
+ vec_free(argv);
return data->handles;
} else if (data->pid == 0) {
/* child */
* Nullify all the template members otherwise NULL comparision
* checks will fail if tmpl pointer is reused.
*/
+ mem_d((*tmpl)->tempfilename);
mem_d(*tmpl);
}