fixed bug: Wrong opcode range was requested in be
[libfirm] / ir / be / benode.c
index 1a19f1d..82f362f 100644 (file)
@@ -261,7 +261,7 @@ void be_node_init(void) {
        inited = 1;
 
        /* Acquire all needed opcodes. */
-       beo_base = get_next_ir_opcodes(beo_Last - 1);
+       beo_base = get_next_ir_opcodes(beo_Last);
 
        op_be_Spill      = new_ir_op(beo_base + beo_Spill,      "be_Spill",      op_pin_state_mem_pinned, N, oparity_unary,    0, sizeof(be_frame_attr_t),   &be_node_op_ops);
        op_be_Reload     = new_ir_op(beo_base + beo_Reload,     "be_Reload",     op_pin_state_mem_pinned, N, oparity_zero,     0, sizeof(be_frame_attr_t),   &be_node_op_ops);
@@ -765,6 +765,8 @@ ir_node *be_new_StackParam(const arch_register_class_t *cls, const arch_register
 
        be_node_set_reg_class(irn, 0, cls_frame);
        be_node_set_reg_class(irn, OUT_POS(0), cls);
+       be_node_set_flags(irn, OUT_POS(0), arch_irn_flags_rematerializable);
+
        return irn;
 }