X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firtypes.h;h=87a3cb3a776fb3e45bd7e020718c0191caaf4d75;hb=c3455814e22a6be862cc053da8c68d3e5f51e231;hp=b17299ce34ff7352ecc72e5779110451e8d13baf;hpb=6f068af98daa4725d60e5d23a8f98ec2841cfa44;p=libfirm diff --git a/ir/ir/irtypes.h b/ir/ir/irtypes.h index b17299ce3..87a3cb3a7 100644 --- a/ir/ir/irtypes.h +++ b/ir/ir/irtypes.h @@ -61,17 +61,25 @@ ENUM_COUNTABLE(ir_phase_id) /** The type of an ir_op. */ struct ir_op { - unsigned 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_pin_state pin_state; /**< How to deal with the node in CSE, PRE. */ - op_arity opar; /**< The 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 bitmasks of irop_flags. */ - unsigned tag; /**< Some custom TAG value the op's creator set to. */ - void *attr; /**< custom pointer where op's creator can attach attribute stuff to. */ - - ir_op_ops ops; /**< The operations of the this op. */ + unsigned 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_pin_state pin_state; /**< How to deal with the node in CSE, PRE. */ + op_arity opar; /**< The arity of operator. */ + int op_index; /**< The index of the first data operand, 0 for + most cases, 1 for Div etc. */ + int fragile_mem_index; /**< index of memory input for fragile nodes */ + int pn_x_regular; /**< for fragile ops the position of the + X_regular output */ + int pn_x_except; /**< for fragile ops the position of the + X_except output */ + unsigned flags; /**< Flags describing the behavior of the ir_op, + a bitmasks of irop_flags. */ + unsigned tag; /**< Some custom TAG value the op's creator set */ + void *attr; /**< custom pointer where op's creator can attach + attribute stuff to. */ + ir_op_ops ops; /**< The operations of the this op. */ }; /** @@ -194,9 +202,12 @@ typedef struct sel_attr { /** Exception attributes. */ typedef struct except_attr { - op_pin_state pin_state; /**< the pin state for operations that might generate a exception: - If it's know that no exception will be generated, could be set to - op_pin_state_floats. */ + unsigned pin_state : 2; /**< the pin state for operations with + variable pinned state. Contains a + op_pin_state */ + unsigned throws_exception : 1; /**< if true a fragile op throws and + must produce X_except and X_regular + values */ } except_attr; /** Call attributes. */