* @file
* @brief Implements several optimizations for ARM.
* @author Michael Beck
- * @version $Id$
*/
#include "config.h"
first = node;
block = get_nodes_block(node);
for (cnt = 1; cnt < v.ops; ++cnt) {
- int value = sign * arm_ror(v.values[cnt], v.rors[cnt]);
- ir_node *next = be_new_IncSP(&arm_gp_regs[REG_SP], block, node,
+ int value = sign * arm_ror(v.values[cnt], v.rors[cnt]);
+ ir_node *incsp = be_new_IncSP(&arm_registers[REG_SP], block, node,
value, 1);
- sched_add_after(node, next);
- node = next;
+ sched_add_after(node, incsp);
+ node = incsp;
}
/* reattach IncSP users */
ir_node *ptr;
ptr = new_bd_arm_Add_imm(dbgi, block, frame, v->values[0], v->rors[0]);
- arch_set_irn_register(ptr, &arm_gp_regs[REG_R12]);
+ arch_set_irn_register(ptr, &arm_registers[REG_R12]);
sched_add_before(node, ptr);
for (cnt = 1; cnt < v->ops; ++cnt) {
ir_node *next = new_bd_arm_Add_imm(dbgi, block, ptr, v->values[cnt],
v->rors[cnt]);
- arch_set_irn_register(next, &arm_gp_regs[REG_R12]);
+ arch_set_irn_register(next, &arm_registers[REG_R12]);
sched_add_before(node, next);
ptr = next;
}
ir_node *ptr;
ptr = new_bd_arm_Sub_imm(dbgi, block, frame, v->values[0], v->rors[0]);
- arch_set_irn_register(ptr, &arm_gp_regs[REG_R12]);
+ arch_set_irn_register(ptr, &arm_registers[REG_R12]);
sched_add_before(node, ptr);
for (cnt = 1; cnt < v->ops; ++cnt) {
ir_node *next = new_bd_arm_Sub_imm(dbgi, block, ptr, v->values[cnt],
v->rors[cnt]);
- arch_set_irn_register(next, &arm_gp_regs[REG_R12]);
+ arch_set_irn_register(next, &arm_registers[REG_R12]);
sched_add_before(node, next);
ptr = next;
}
void arm_peephole_optimization(ir_graph *irg)
{
/* register peephole optimizations */
- clear_irp_opcodes_generic_func();
+ ir_clear_opcodes_generic_func();
register_peephole_optimisation(op_be_IncSP, peephole_be_IncSP);
register_peephole_optimisation(op_arm_Str, peephole_arm_Str_Ldr);
register_peephole_optimisation(op_arm_Ldr, peephole_arm_Str_Ldr);