default:
/* ranges: */
/* boolean operations result in floats */
-
+
/*
* opcode >= 10 takes true branch opcode is at least 10
* opcode <= 23 takes false branch opcode is at least 24
*/
if (opcode >= INSTR_EQ_F && opcode <= INSTR_GT)
ot = TYPE_FLOAT;
-
- /*
- * At condition "opcode <= 23", the value of "opcode" must be
+
+ /*
+ * At condition "opcode <= 23", the value of "opcode" must be
* at least 24.
* At condition "opcode <= 23", the value of "opcode" cannot be
* equal to any of {1, 2, 3, 4, 5, 6, 7, 8, 9, 62, 63, 64, 65}.
* The condition "opcode <= 23" cannot be true.
- *
+ *
* Thus ot=2 (TYPE_FLOAT) can never be true
*/
#if 0
/* 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++;
return;
}
oprintf("%sfunction %s\n", ind, f->name);
- strncat(ind, "\t", IND_BUFSZ);
+ strncat(ind, "\t", IND_BUFSZ-1);
if (vec_size(f->locals))
{
oprintf("%s%i locals:\n", ind, (int)vec_size(f->locals));
{
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));
return;
}
- strncat(ind, "\t", IND_BUFSZ);
+ strncat(ind, "\t", IND_BUFSZ-1);
if (in->_ops[0] && (in->_ops[1] || in->_ops[2])) {
ir_value_dump(in->_ops[0], oprintf);