BugFix: works again for RAW with non twos-complement
[libfirm] / ir / ir / irop.c
index a1fe39d..5ffa77b 100644 (file)
@@ -108,6 +108,8 @@ 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_Min;         ir_op *get_op_Min       (void) { return op_Max;       }
+ir_op *op_Max;         ir_op *get_op_Max       (void) { return op_Max;       }
 ir_op *op_CopyB;       ir_op *get_op_CopyB     (void) { return op_CopyB;     }
 
 ir_op *op_Raise;       ir_op *get_op_Raise     (void) { return op_Raise;     }
@@ -233,10 +235,7 @@ new_ir_op(unsigned code, const char *name, op_pin_state p,
           unsigned flags, op_arity opar, int op_index, size_t attr_size,
           const ir_op_ops *ops)
 {
-       ir_op *res;
-
-       res = (ir_op *)xmalloc(sizeof(*res));
-       memset(res, 0, sizeof(*res));
+       ir_op *res = XMALLOCZ(ir_op);
 
        res->code      = code;
        res->name      = new_id_from_chars(name, strlen(name));
@@ -351,6 +350,8 @@ init_op(void)
 
        op_NoMem     = new_ir_op(iro_NoMem,     "NoMem",     op_pin_state_pinned, N|NB|NI, oparity_zero,     -1, 0, NULL);
        op_Mux       = new_ir_op(iro_Mux,       "Mux",       op_pin_state_floats, N,       oparity_trinary,  -1, 0, NULL);
+       op_Min       = new_ir_op(iro_Min,       "Min",       op_pin_state_floats, N,       oparity_binary,   -1, 0, NULL);
+       op_Max       = new_ir_op(iro_Max,       "Max",       op_pin_state_floats, N,       oparity_binary,   -1, 0, NULL);
        op_CopyB     = new_ir_op(iro_CopyB,     "CopyB",     op_pin_state_mem_pinned, F|H|M, oparity_trinary,-1, sizeof(copyb_attr), NULL);
 
        op_InstOf    = new_ir_op(iro_InstOf,    "InstOf",    op_pin_state_mem_pinned, H,   oparity_unary,    -1, sizeof(io_attr), NULL);
@@ -439,6 +440,8 @@ void finish_op(void) {
        free_ir_op (op_EndExcept); op_EndExcept = NULL;
 
        free_ir_op (op_NoMem    ); op_NoMem     = NULL;
+       free_ir_op (op_Max      ); op_Max       = NULL;
+       free_ir_op (op_Min      ); op_Min       = NULL;
        free_ir_op (op_Mux      ); op_Mux       = NULL;
        free_ir_op (op_CopyB    ); op_CopyB     = NULL;