#include "irtypes.h"
#include "tv.h"
+#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)
+#define set_op_attr(op, attr) set_op_attr_((op), (attr))
+#define get_op_attr(op) get_op_attr_(op)
+
+#define set_generic_function_ptr(op, func) set_generic_function_ptr_((op), (op_func)(func))
+#define get_generic_function_ptr(type, op) ((type*)get_generic_function_ptr_((op)))
+
/**
* Frees a newly created ir operation.
*/
/** frees memory allocated by irop module */
void firm_finish_op(void);
-/**
- * Copies simply all attributes stored in the old node to the new node.
- * Assumes both have the same opcode and sufficient size.
- *
- * @param old_node the old node from which the attributes are read
- * @param new_node the new node to which the attributes are written
- */
-void default_copy_attr(ir_graph *irg, const ir_node *old_node,
- ir_node *new_node);
-
/**
* Returns the attribute size of nodes of this opcode.
* @note Use not encouraged, internal feature.
return op->ops.generic;
}
-static inline const ir_op_ops *get_op_ops_(const ir_op *op)
+static inline ir_op_ops *get_op_ops_(ir_op *op)
{
return &op->ops;
}
return op->attr;
}
-#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)
-#define set_op_attr(op, attr) set_op_attr_((op), (attr))
-#define get_op_attr(op) get_op_attr_(op)
-
#endif