local_optimize() now kills unrteachable code if dominance info is available.
[libfirm] / ir / ir / irop.c
index db8a14c..2fec766 100644 (file)
@@ -181,6 +181,7 @@ init_op(void)
 #define F   irop_flag_fragile
 #define Y   irop_flag_forking
 #define H   irop_flag_highlevel
+#define c   irop_flag_constlike
 
   op_Block     = new_ir_op(iro_Block,     "Block",     op_pin_state_pinned, L,       oparity_variable, -1, sizeof(block_attr));
 
@@ -192,8 +193,8 @@ init_op(void)
   op_Return    = new_ir_op(iro_Return,    "Return",    op_pin_state_pinned, L|X,     oparity_zero,     -1, 0);
   op_Raise     = new_ir_op(iro_Raise,     "Raise",     op_pin_state_pinned, L|X,     oparity_any,      -1, 0);
 
-  op_Const     = new_ir_op(iro_Const,     "Const",     op_pin_state_floats, N,       oparity_zero,     -1, sizeof(const_attr));
-  op_SymConst  = new_ir_op(iro_SymConst,  "SymConst",  op_pin_state_floats, N,       oparity_zero,     -1, sizeof(symconst_attr));
+  op_Const     = new_ir_op(iro_Const,     "Const",     op_pin_state_floats, c,       oparity_zero,     -1, sizeof(const_attr));
+  op_SymConst  = new_ir_op(iro_SymConst,  "SymConst",  op_pin_state_floats, c,       oparity_zero,     -1, sizeof(symconst_attr));
 
   op_Sel       = new_ir_op(iro_Sel,       "Sel",       op_pin_state_floats, L,       oparity_any,      -1, sizeof(sel_attr));
   op_InstOf    = new_ir_op(iro_InstOf,    "InstOf",    op_pin_state_floats, L,       oparity_any,      -1, sizeof(sel_attr));
@@ -358,3 +359,13 @@ void      set_op_pinned(ir_op *op, op_pin_state op_pin_state_pinned) {
 unsigned get_next_ir_opcode(void) {
   return next_iro++;
 }
+
+/* Returns the generic function pointer from an ir operation. */
+op_func (get_generic_function_ptr)(const ir_op *op) {
+  return _get_generic_function_ptr(op);
+}
+
+/* Store a generic function pointer into an ir operation. */
+void (set_generic_function_ptr)(ir_op *op, op_func func) {
+  _set_generic_function_ptr(op, func);
+}