Remove it, maybe it can be done in the AST instead.

This commit is contained in:
Dale Weiler 2013-09-28 06:09:24 -04:00
parent c4e92df106
commit 8a294683bb

27
ir.c
View file

@ -3178,32 +3178,6 @@ static bool gen_blocks_recursive(code_t *code, ir_function *func, ir_block *bloc
if (instr->_ops[2]) if (instr->_ops[2])
stmt.o2.u1 = ir_value_code_addr(instr->_ops[2]); stmt.o2.u1 = ir_value_code_addr(instr->_ops[2]);
if (stmt.opcode == INSTR_NOT_F) {
/*
* We can optimize for superfluous cases of not.
*/
if (i + 4 <= vec_size(block->instr)) {
for (j = 0; j < 2; j++) {
if (ir_value_code_addr(block->instr[i+j]->_ops[0]) != ir_value_code_addr(block->instr[i+j]->_ops[1]))
break;
}
if (--j && block->instr[i+2]->_ops[0] && block->instr[i+2]->_ops[1]
&& block->instr[i+3]->_ops[0] && block->instr[i+2]->_ops[1]
&& ir_value_code_addr(block->instr[i+2]->_ops[1]) == ir_value_code_addr(block->instr[i+3]->_ops[0])
&& ir_value_code_addr(block->instr[i+2]->_ops[0]) == ir_value_code_addr(block->instr[i+3]->_ops[1]))
{
code_push_statement(code, &stmt, instr->context);
code_push_statement(code, &stmt, instr->context);
for (j = 1; j < 4; j++)
block->instr[i+j]->opcode = VINSTR_NOP;
++opts_optimizationcount[OPTIM_PEEPHOLE];
continue;
}
}
code_push_statement(code, &stmt, instr->context);
continue;
}
if (stmt.opcode == INSTR_RETURN || stmt.opcode == INSTR_DONE) if (stmt.opcode == INSTR_RETURN || stmt.opcode == INSTR_DONE)
{ {
stmt.o1.u1 = stmt.o3.u1; stmt.o1.u1 = stmt.o3.u1;
@ -3228,7 +3202,6 @@ static bool gen_blocks_recursive(code_t *code, ir_function *func, ir_block *bloc
continue; continue;
} }
} }
code_push_statement(code, &stmt, instr->context); code_push_statement(code, &stmt, instr->context);
} }
return true; return true;