char *p;
int i;
- assert(irg && op && mode);
+ assert(irg);
+ assert(op);
+ assert(mode);
p = obstack_alloc(irg->obst, node_size);
memset(p, 0, node_size);
res = (ir_node *)(p + firm_add_node_size);
}
void add_End_keepalive(ir_node *end, ir_node *ka) {
+ ir_graph *irg = get_irn_irg(end);
assert(is_End(end));
- assert((is_Phi(ka) || is_Proj(ka) || is_Block(ka) || is_irn_keep(ka)) && "Only Phi, Block or Keep nodes can be kept alive!");
+
+ if (get_irg_phase_state(irg) == phase_building) {
+ assert((is_Phi(ka) || is_Block(ka) || is_irn_keep(ka)) && "Only Phi, Block or Keep nodes can be kept alive!");
+ }
add_irn_n(end, ka);
}
ir_node **
get_Call_param_arr(ir_node *node) {
assert(is_Call(node));
- return (ir_node **)&get_irn_in(node)[CALL_PARAM_OFFSET + 1];
+ return &get_irn_in(node)[CALL_PARAM_OFFSET + 1];
}
int
BINOP(Add)
+BINOP(Carry)
BINOP(Sub)
UNOP(Minus)
BINOP(Mul)
return node;
}
+/* returns operand of node if node is a Pin */
+ir_node *skip_Pin(ir_node *node) {
+ if (is_Pin(node))
+ return get_Pin_op(node);
+ return node;
+}
+
/* returns operand of node if node is a Confirm */
ir_node *skip_Confirm(ir_node *node) {
if (get_irn_op(node) == op_Confirm)
return _is_Add(node);
}
+int
+(is_Carry)(const ir_node *node) {
+ return _is_Carry(node);
+}
+
int
(is_And)(const ir_node *node) {
return _is_And(node);