irop_flag_constlike = 0x00000080, /**< the operation has no arguments and is some
kind of a constant */
irop_flag_keep = 0x00000100, /**< this operation can be kept in End's keep-alive list */
- irop_flag_machine = 0x00000200 /**< this operation is a machine operation, all higher flags are machine flags */
+ irop_flag_machine = 0x00000200, /**< this operation is a machine operation */
+ irop_flag_machine_op = 0x00000400, /**< this operation is a machine operand */
+ irop_flag_user = 0x00000800 /**< this flag and all higher one are free for machine user */
} irop_flags;
/** The opcodes of the libFirm predefined operations. */
iro_MaxOpcode
} opcode;
+#ifndef _IR_OP_TYPEDEF_
+#define _IR_OP_TYPEDEF_
typedef struct ir_op ir_op;
+#endif
extern ir_op *op_Block; ir_op *get_op_Block (void);
* io_op Operations.
*/
typedef struct {
- computed_value_func computed_value; /**< evaluates a node into a tarval if possible. */
+ computed_value_func computed_value; /**< evaluates a node into a tarval if possible. */
equivalent_node_func equivalent_node; /**< optimizes the node by returning an equivalent one. */
transform_node_func transform_node; /**< optimizes the node by transforming it. */
node_cmp_attr_func node_cmp_attr; /**< compares two node attributes. */