-/**
- * Some flags describing a node in more detail.
- */
-typedef enum _arch_irn_flags_t {
- arch_irn_flags_none = 0, /**< Node flags. */
- arch_irn_flags_dont_spill = 1, /**< This must not be spilled. */
- arch_irn_flags_rematerializable = 2, /**< This should be replicated instead of spilled/reloaded. */
- arch_irn_flags_ignore = 4, /**< Do not consider the node during register allocation. */
-} arch_irn_flags_t;
-
-struct _arch_irn_ops_if_t {
-
- /**
- * Get the register requirements for a given operand.
- * @param self The self pointer.
- * @param irn The node.
- * @param pos The operand's position
- * (-1 for the result of the node, 0..n for the input
- * operands).
- * @return The register requirements for the selected operand.
- * The pointer returned is never NULL.
- */
- const arch_register_req_t *(*get_irn_reg_req)(const void *self,
- arch_register_req_t *req, const ir_node *irn, int pos);
-
- /**
- * Set the register for an output operand.
- * @param irn The node.
- * @param reg The register allocated to that operand.
- * @note If the operand is not a register operand,
- * the call is ignored.
- */
- void (*set_irn_reg)(const void *self, ir_node *irn, const arch_register_t *reg);
-
- /**
- * Get the register allocated for an output operand.
- * @param irn The node.
- * @return The register allocated at that operand. NULL, if
- * the operand was no register operand or
- * @c arch_register_invalid, if no register has yet been
- * allocated for this node.
- */
- const arch_register_t *(*get_irn_reg)(const void *self, const ir_node *irn);
-
- /**
- * Classify the node.
- * @param irn The node.
- * @return A classification.
- */
- arch_irn_class_t (*classify)(const void *self, const ir_node *irn);
-
- /**
- * Get the flags of a node.
- * @param self The irn ops themselves.
- * @param irn The node.
- * @return A set of flags.
- */
- arch_irn_flags_t (*get_flags)(const void *self, const ir_node *irn);
-
- /**
- * Check, if a node modifies the stack pointer by a constant.
- * @param self The this pointer.
- * @param irn The node in question.
- * @return The (constant) amount by which the stack pointer is modifies
- * by this node. Return 0, if irn does not touch the stack pointer.
- * <tt>-n</tt> if the node modifies the sp by n against the stack's growing
- * direction and <tt>n</tt> if irn modifies the stack by n along the stack's
- * growing direction.
- */
- int (*modifies_sp)(const void *self, const ir_node *irn);
-
- /**
- * Set a bias for the stack pointer.
- * If the node in question uses the stack pointer for indexing, it must
- * consider the value of <code>bias</code> additionally.
- * @param self The this pointer.
- * @param irn The node in question.
- * @param bias The bias.
- */
- void (*set_stack_bias)(const void *self, ir_node *irn, int bias);
-};