From: Sebastian Hack Date: Wed, 18 Jan 2006 15:49:52 +0000 (+0000) Subject: Added tags for ops X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=ffb44cf6888d05f8928cfc2bf5719977515baead;p=libfirm Added tags for ops [r7258] --- diff --git a/ir/ir/irop.c b/ir/ir/irop.c index a04437d25..fe38f7c9d 100644 --- a/ir/ir/irop.c +++ b/ir/ir/irop.c @@ -172,6 +172,7 @@ new_ir_op(opcode code, const char *name, op_pin_state p, res->flags = flags; res->opar = opar; res->op_index = op_index; + res->tag = NULL; if (ops) memcpy(&res->ops, ops, sizeof(res->ops)); diff --git a/ir/ir/irop_t.h b/ir/ir/irop_t.h index 72f1d81a0..2ae965fc1 100644 --- a/ir/ir/irop_t.h +++ b/ir/ir/irop_t.h @@ -27,6 +27,7 @@ struct ir_op { op_arity opar; /**< arity of operator. */ int op_index; /**< the index of the first data operand, 0 for most cases, 1 for Div etc. */ unsigned flags; /**< flags describing the behavior of the ir_op, a bitmaks of irop_flags */ + void *tag; /**< Some custom pointer the op's creator can attach stuff to. */ ir_op_ops ops; /**< the operations of the this op. */ }; @@ -129,10 +130,19 @@ static INLINE const ir_op_ops *_get_op_ops(const ir_op *op) { return &op->ops; } +static INLINE void _set_op_tag(ir_op *op, void *tag) { + op->tag = tag; +} + +static INLINE void *_get_op_tag(ir_op *op) { + return op->tag; +} + #define get_op_code(op) _get_op_code(op) #define get_op_ident(op) _get_op_ident(op) #define get_op_pinned(op) _get_op_pinned(op) #define get_op_ops(op) _get_op_ops(op) - +#define set_op_tag(op, tag) _set_op_tag((op), (tag)) +#define get_op_tag(op) _get_op_tag(op) #endif /* _IROP_T_H_ */