X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firtypes.h;h=2652e14769839117a045824871766876ae154485;hb=41eca21e7add2e4f30f14c46600a23839852b3fc;hp=eade5faf986439c825a785724e7d5b7674b9cad3;hpb=64d13bb5d7e4b2c992d562840c9625afad83fa22;p=libfirm diff --git a/ir/ir/irtypes.h b/ir/ir/irtypes.h index eade5faf9..2652e1476 100644 --- a/ir/ir/irtypes.h +++ b/ir/ir/irtypes.h @@ -34,6 +34,7 @@ #include "irgraph.h" #include "iredgekinds.h" #include "irtypeinfo.h" +#include "irextbb.h" #include "execution_frequency.h" #include "irmemory.h" #include "callgraph.h" @@ -153,9 +154,9 @@ typedef struct { /** 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. */ @@ -193,6 +194,13 @@ typedef struct { 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. */ @@ -304,7 +312,8 @@ typedef union { 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. */ @@ -357,6 +366,7 @@ struct ir_node { 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. */ @@ -364,8 +374,6 @@ struct ir_node { #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 */ @@ -408,7 +416,6 @@ enum irg_anchors { 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 */ @@ -460,9 +467,6 @@ struct ir_graph { unsigned fp_model; /**< floating point model of the graph. */ /* -- Fields for construction -- */ -#if USE_EXPLICIT_PHI_IN_STACK - struct Phi_in_stack *Phi_in_stack; /**< Needed for automatic Phi construction. */ -#endif int n_loc; /**< Number of local variables in this procedure including procedure parameters. */ void **loc_descriptions; /**< Storage for local variable descriptions. */ @@ -480,11 +484,11 @@ struct ir_graph { unsigned *caller_isbe; /**< For callgraph analysis: raw bitset if backedge info calculated. */ cg_callee_entry **callees; /**< For callgraph analysis: list of callee calls */ unsigned *callee_isbe; /**< For callgraph analysis: raw bitset if backedge info calculated. */ + ir_loop *l; /**< For callgraph analysis. */ int callgraph_loop_depth; /**< For callgraph analysis */ int callgraph_recursion_depth; /**< For callgraph analysis */ double method_execution_frequency; /**< For callgraph analysis */ - ir_loop *l; /**< For callgraph analysis. */ /* -- Fields for Walking the graph -- */ ir_visited_t visited; /**< this flag is an identifier for @@ -562,9 +566,7 @@ struct ir_prog { 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