unsigned op_flav:2; /**< flavour of an op (flavour_Div/Mod/DivMod) */
- unsigned flags:4; /**< indicating if spillable and/or rematerializeable */
+ unsigned flags:4; /**< indicating if spillable, rematerializeable, stack modifying and/or ignore */
unsigned is_commutative:1; /**< indicates whether op is commutative or not */
unsigned got_lea:1; /**< indicates whether or not this node already consumed a LEA */
- unsigned n_res:7; /**< number of results produced by this node */
+ unsigned got_reload:1; /**< set to 1 if node cosumed a reload */
+
+ unsigned n_res:6; /**< number of results produced by this node */
} data;
- struct obstack *am_offs; /**< offsets for AddrMode */
- ident *am_sc; /**< SymConst for AddrMode */
+ int *out_flags; /**< flags for each produced value */
+
+ int am_offs; /**< offsets for AddrMode */
+ ident *am_sc; /**< SymConst for AddrMode */
union {
tarval *tv; /**< tarval for immediate operations */
long pn_code; /**< projnum "types" (e.g. indicate compare operators and argument numbers) */
+ unsigned latency; /**< the latency of the instruction in clock cycles */
+
#ifndef NDEBUG
const char *orig_node; /**< holds the name of the original ir node for debugging purposes */
#endif /* NDEBUG */