-
-# ifndef _IROP_T_H_
-# define _IROP_T_H_
-
-# include "irop.h"
-
-/** The allowed parities */
-typedef enum {
- oparity_invalid = 0,
- oparity_unary, /**< an unary operator -- considering 'numeric' arguments. */
- oparity_binary, /**< an binary operator -- considering 'numeric' arguments.*/
- oparity_trinary, /**< an trinary operator -- considering 'numeric' arguments.*/
- oparity_zero, /**< no operators, as e.g. Const. */
- oparity_variable, /**< arity not fixed by opcode, but statically
- known. E.g., number of arguments to call. */
- oparity_dynamic, /**< arity depends on state of firm representation.
- Can change by optimizations...
- We must allocate a dynamic in array for the node! */
- oparity_any, /**< other arity */
-} op_arity;
-
-
-/** The irop flags */
-typedef enum {
- irop_flag_labeled = 0x00000001, /**< if set, Output edge labels on in-edges in vcg graph */
- irop_flag_commutative = 0x00000002, /**< operation is commutative */
- irop_flag_cfopcode = 0x00000004, /**< is a control flow operation */
- irop_flag_ip_cfopcode = 0x00000008, /**< operation manipulates interprocedural control flow */
- irop_flag_fragile = 0x00000010, /**< set if the operation can change the control flow because
- of an exception */
-} irop_flags;
-
-
-/** the type of an ir_op */
-struct ir_op {
- opcode code; /**< the unique opcode of the op */
- ident *name; /**< the name of the op */
- size_t attr_size; /**< Space needed in memory for private attributes */
- op_pinned pinned; /**< How to deal with the node in cse, pre. */
- 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 */
-};
-