+/** 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_none = 0x00000000, /**< nothing */
+ 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_flag_forking = 0x00000020, /**< the operation is a forking control flow */
+ irop_flag_highlevel = 0x00000040, /**< the operation is a pure high-level one and can be
+ skipped in low-level optimizations */
+ irop_flag_constlike = 0x00000080 /**< the operation has no arguments and is some
+ kind of a constant */
+} irop_flags;
+