Added the Keep node
[libfirm] / ir / ir / irop.c
index 23e9d89..a04437d 100644 (file)
@@ -93,7 +93,9 @@ ir_op *op_EndExcept;   ir_op *get_op_EndExcept (void) { return op_EndExcept; }
 ir_op *op_NoMem;       ir_op *get_op_NoMem     (void) { return op_NoMem;     }
 ir_op *op_Mux;         ir_op *get_op_Mux       (void) { return op_Mux;       }
 ir_op *op_CopyB;       ir_op *get_op_CopyB     (void) { return op_CopyB;     }
+ir_op *op_Bound;       ir_op *get_op_Bound     (void) { return op_Bound;     }
 
+ir_op *op_Keep;        ir_op *get_op_Keep      (void) { return op_Keep;      }
 
 /*
  * Copies all attributes stored in the old node to the new node.
@@ -217,7 +219,7 @@ init_op(void)
   op_SymConst  = new_ir_op(iro_SymConst,  "SymConst",  op_pin_state_floats, c,       oparity_zero,     -1, sizeof(symconst_attr), NULL);
 
   op_Sel       = new_ir_op(iro_Sel,       "Sel",       op_pin_state_floats, L,       oparity_any,      -1, sizeof(sel_attr), NULL);
-  op_InstOf    = new_ir_op(iro_InstOf,    "InstOf",    op_pin_state_floats, L,       oparity_any,      -1, sizeof(sel_attr), NULL);
+  op_InstOf    = new_ir_op(iro_InstOf,    "InstOf",    op_pin_state_floats, L|F|H,   oparity_unary,    -1, sizeof(io_attr), NULL);
 
   op_Call      = new_ir_op(iro_Call,      "Call",      op_pin_state_mem_pinned, L|F, oparity_variable, -1, sizeof(call_attr), NULL);
   op_Add       = new_ir_op(iro_Add,       "Add",       op_pin_state_floats, C,       oparity_binary,    0, 0, NULL);
@@ -265,6 +267,9 @@ init_op(void)
   op_NoMem     = new_ir_op(iro_NoMem,     "NoMem",     op_pin_state_pinned, N,       oparity_zero,     -1, 0, NULL);
   op_Mux       = new_ir_op(iro_Mux,       "Mux",       op_pin_state_floats, N,       oparity_trinary,  -1, 0, NULL);
   op_CopyB     = new_ir_op(iro_CopyB,     "CopyB",   op_pin_state_mem_pinned, L|F|H, oparity_trinary,  -1, sizeof(copyb_attr), NULL);
+  op_Bound     = new_ir_op(iro_Bound,     "Bound",   op_pin_state_mem_pinned, L|F|H, oparity_trinary,  -1, sizeof(bound_attr), NULL);
+
+  op_Keep      = new_ir_op(iro_Keep,      "Keep",      op_pin_state_pinned, N,       oparity_variable, -1, 0, NULL);
 
 #undef H
 #undef Y
@@ -339,6 +344,9 @@ void finish_op(void) {
   free_ir_op (op_NoMem    ); op_NoMem     = NULL;
   free_ir_op (op_Mux      ); op_Mux       = NULL;
   free_ir_op (op_CopyB    ); op_CopyB     = NULL;
+  free_ir_op (op_Bound    ); op_Bound     = NULL;
+
+  free_ir_op (op_Keep     ); op_Keep      = NULL;
 }
 
 /* Returns the string for the opcode. */