#include "irgraph.h"
#include "iredgekinds.h"
#include "irtypeinfo.h"
+#include "irextbb.h"
#include "execution_frequency.h"
#include "irmemory.h"
#include "callgraph.h"
/** Cond attributes. */
typedef struct {
- cond_kind kind; /**< flavor of Cond */
- long default_proj; /**< only for non-binary Conds: biggest Proj number, i.e. the one used for default. */
- cond_jmp_predicate pred; /**< only for binary Conds: The jump predication. */
+ cond_kind kind; /**< flavor of Cond */
+ long default_proj; /**< only for non-binary Conds: biggest Proj number, i.e. the one used for default. */
+ cond_jmp_predicate jmp_pred; /**< only for binary Conds: The jump predication. */
} cond_attr;
/** Const attributes. */
ir_entity ** callee_arr; /**< result of callee analysis */
} call_attr;
+/** Builtin attributes. */
+typedef struct {
+ except_attr exc; /**< the exception attribute. MUST be the first one. */
+ ir_builtin_kind kind; /**< kind of the called builtin procedure */
+ ir_type *builtin_tp; /**< type of called builtin procedure */
+} builtin_attr;
+
/** Alloc attributes. */
typedef struct {
except_attr exc; /**< the exception attribute. MUST be the first one. */
const_attr con; /**< For Const: contains the value of the constant and a type */
symconst_attr symc; /**< For SymConst. */
sel_attr sel; /**< For Sel. */
- call_attr call; /**< For Call: pointer to the type of the method to call */
+ call_attr call; /**< For Call. */
+ builtin_attr builtin; /**< For Builtin. */
callbegin_attr callbegin; /**< For CallBegin. */
alloc_attr alloc; /**< For Alloc. */
free_attr free; /**< For Free. */
void *link; /**< To attach additional information to the node, e.g.
used during optimization to link to nodes that
shall replace a node. */
+ long node_nr; /**< A globally unique node number for each node. */
/* ------- Fields for optimizations / analysis information ------- */
ir_def_use_edge *out; /**< array of def-use edges. */
struct dbg_info *dbi; /**< A pointer to information for debug support. */
#ifdef DEBUG_libfirm
unsigned out_valid : 1;
unsigned flags : 31;
- long node_nr; /**< A unique node number for each node to make output
- readable. */
#endif
/* ------- For analyses -------- */
ir_loop *loop; /**< the loop the node is in. Access routines in irloop.h */
thread local data. */
anchor_initial_mem, /**< initial memory of this graph */
anchor_args, /**< methods arguments */
- anchor_value_param_base, /**< method value param base */
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 */
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. */
int max_irg_idx; /**< highest unused irg index */
-#ifdef DEBUG_libfirm
long max_node_nr; /**< to generate unique numbers for nodes. */
-#endif
#ifndef NDEBUG
ir_resources_t reserved_resources; /**< Bitset for tracking used global resources. */
#endif