self->return_value = NULL;
return self;
-
+
cleanup:
mem_d(self);
return NULL;
return true;
error: /* clean up */
- ir_value_delete(v);
+ if(v) ir_value_delete(v);
return false;
}
/* 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;
if (bprecond)
{
ir_block *ontrue, *onfalse;
- if (bbody) ontrue = bbody;
+ ontrue = bbody; /* can never be null */
+
+ /* all of this is dead code
else if (bincrement) ontrue = bincrement;
- else if (bpostcond) ontrue = bpostcond;
- else ontrue = bprecond;
+ else ontrue = bpostcond;
+ */
+
onfalse = bout;
if (self->pre_not) {
tmpblock = ontrue;
{
ir_block *ontrue, *onfalse;
if (bprecond) ontrue = bprecond;
- else if (bbody) ontrue = bbody;
+ else ontrue = bbody; /* can never be null */
+
+ /* all of this is dead code
else if (bincrement) ontrue = bincrement;
else ontrue = bpostcond;
+ */
+
onfalse = bout;
if (self->post_not) {
tmpblock = ontrue;