tarval *null; /**< the value 0 */
tarval *one; /**< the value 1 */
tarval *minus_one; /**< the value -1 */
+ tarval *all_one; /**< the value ~0 */
ir_mode *eq_signed; /**< For pointer modes, the equivalent signed integer one. */
ir_mode *eq_unsigned; /**< For pointer modes, the equivalent unsigned integer one. */
void *link; /**< To store some intermediate information */
unsigned is_matured:1; /**< If set, all in-nodes of the block are fixed. */
unsigned is_dead:1; /**< If set, the block is dead (and could be replace by a Bad. */
unsigned is_mb_head:1; /**< Set if this block is a macroblock head. */
+ unsigned has_label:1; /**< Set if this block has a label assigned. */
ir_node **graph_arr; /**< An array to store all parameters. */
/* Attributes holding analyses information */
ir_dom_info dom; /**< Datastructure that holds information about dominators.
ir_extblk *extblk; /**< The extended basic block this block belongs to. */
ir_region *region; /**< The immediate structural region this block belongs to. */
unsigned mb_depth; /**< The macroblock depth: A distance from the macroblock header */
+ ir_label_t label; /**< The block label if assigned. */
struct list_head succ_head; /**< A list head for all successor edges of a block. */
} block_attr;
typedef struct {
except_attr exc; /**< The exception attribute. MUST be the first one. */
ir_mode *load_mode; /**< The mode of this Load operation. */
- ir_volatility volatility; /**< The volatility of a Load/Store operation. */
+ unsigned volatility:1; /**< The volatility of this Load operation. */
+ unsigned aligned:1; /**< The align attribute of this Load operation. */
} load_attr;
/** Store attributes. */
typedef struct {
except_attr exc; /**< the exception attribute. MUST be the first one. */
- ir_volatility volatility; /**< the volatility of a Store operation */
+ unsigned volatility:1; /**< The volatility of this Store operation. */
+ unsigned aligned:1; /**< The align attribute of this Store operation. */
} store_attr;
typedef struct {
struct dbg_info *dbi; /**< A pointer to information for debug support. */
/* ------- For debugging ------- */
#ifdef DEBUG_libfirm
+ unsigned flags;
int out_valid;
long node_nr; /**< A unique node number for each node to make output
readable. */
typedef irg_edge_info_t irg_edges_info_t[EDGE_KIND_LAST];
/**
- * Index constants for nodes that can be accessed through the graph itself.
+ * Index constants for nodes that can be accessed through the graph anchor node.
*/
enum irg_anchors {
- anchor_start_block = 0, /**< block the start node will belong to */
- anchor_start, /**< start node of this ir_graph */
- anchor_end_block, /**< block the end node will belong to */
+ anchor_end_block = 0, /**< block the end node will belong to, same as Anchors block */
+ anchor_start_block, /**< block the start node will belong to */
anchor_end, /**< end node of this ir_graph */
+ anchor_start, /**< start node of this ir_graph */
anchor_end_reg, /**< end node of this ir_graph */
anchor_end_except, /**< end node of this ir_graph */
anchor_frame, /**< method's frame */
anchor_bad, /**< bad node of this ir_graph, the one and
only in this graph */
anchor_no_mem, /**< NoMem node of this ir_graph, the one and only in this graph */
- anchor_max
+ anchor_last
};
/** A callgraph entry for callees. */
class it belongs to. */
ir_type *frame_type; /**< A class type representing the stack frame.
Can include "inner" methods. */
- ir_node *anchors[anchor_max]; /**< List of anchor nodes. */
+ ir_node *anchor; /**< The anchor node. */
ir_node **proj_args; /**< Projs of the methods arguments. */
struct obstack *obst; /**< The obstack where all of the ir_nodes live. */
ir_node *current_block; /**< Current block for newly gen_*()-erated ir_nodes. */
ir_address_taken_computed_state globals_adr_taken_state; /**< Address taken state of the globals. */
ir_exc_region_t last_region_nr; /**< The last exception region number that was assigned. */
+ ir_label_t last_label_nr; /**< The highest label number for generating unique labels. */
#ifdef DEBUG_libfirm
long max_node_nr; /**< to generate unique numbers for nodes. */
#endif