X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ir%2Fir%2Firtypes.h;h=9138099aeef7cb601554697ae00d92a7f4aecfea;hb=e882b686518c16d814ee7c317f59b686b1cb5d08;hp=e69392c037610c8a3ce61bc6c08adf4d741c00b0;hpb=fab5da4b7215a533d35fa244135dae84652e725b;p=libfirm diff --git a/ir/ir/irtypes.h b/ir/ir/irtypes.h index e69392c03..9138099ae 100644 --- a/ir/ir/irtypes.h +++ b/ir/ir/irtypes.h @@ -209,6 +209,7 @@ typedef struct block_attr { bitset_t *backedge; /**< Bitfield n set to true if pred n is backedge.*/ ir_entity *entity; /**< entitiy representing this block */ ir_node *phis; /**< The list of Phi nodes in this block. */ + double execfreq; /**< block execution frequency */ } block_attr; /** Cond attributes. */ @@ -329,11 +330,6 @@ typedef struct bound_attr { except_attr exc; /**< The exception attribute. MUST be the first one. */ } bound_attr; -/** Conv attribute. */ -typedef struct conv_attr { - char strict; /**< If set, this is a strict Conv that cannot be removed. */ -} conv_attr; - /** Div attribute. */ typedef struct div_attr { except_attr exc; /**< The exception attribute. MUST be the first one. */ @@ -392,7 +388,6 @@ typedef union ir_attr { except_attr except; /**< For Phi node construction in case of exceptions */ copyb_attr copyb; /**< For CopyB operation */ bound_attr bound; /**< For Bound operation */ - conv_attr conv; /**< For Conv operation */ div_attr div; /**< For Div operation */ mod_attr mod; /**< For Mod operation */ asm_attr assem; /**< For ASM operation. */ @@ -418,6 +413,11 @@ typedef struct ir_def_use_edge { int pos; /** The position of this edge in use's input array. */ } ir_def_use_edge; +typedef struct ir_def_use_edges { + unsigned n_edges; + ir_def_use_edge edges[]; +} ir_def_use_edges; + /** * The common structure of an irnode. * If the node has some attributes, they are stored in the attr field. @@ -435,13 +435,12 @@ struct ir_node { 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. */ - /* ------- For debugging ------- */ -#ifdef DEBUG_libfirm - unsigned out_valid : 1; - unsigned flags : 31; -#endif + union { + ir_def_use_edges *out; /**< array of def-use edges. */ + unsigned n_outs; /**< number of def-use edges (temporarily used + during construction of datastructure ) */ + } o; + struct dbg_info *dbi; /**< A pointer to information for debug support. */ /* ------- For analyses -------- */ ir_loop *loop; /**< the loop the node is in. Access routines in irloop.h */ struct ir_node **deps; /**< Additional dependencies induced by state. */ @@ -515,14 +514,9 @@ struct ir_graph { struct obstack *obst; /**< The obstack where all of the ir_nodes live. */ ir_node *current_block; /**< Current block for newly gen_*()-erated ir_nodes. */ - /* -- Fields for graph properties -- */ - irg_inline_property inline_property; /**< How to handle inlineing. */ - mtp_additional_properties additional_properties; /**< Additional graph properties. */ - /* -- Fields indicating different states of irgraph -- */ ir_graph_properties_t properties; ir_graph_constraints_t constraints; - irg_phase_state phase_state; /**< Compiler phase. */ op_pin_state irg_pinned_state; /**< Flag for status of nodes. */ ir_typeinfo_state typeinfo_state; /**< Validity of type information. */ irg_callee_info_state callee_info_state; /**< Validity of callee information. */ @@ -538,7 +532,8 @@ struct ir_graph { /* -- Fields for optimizations / analysis information -- */ pset *value_table; /**< Hash table for global value numbering (cse) for optimizing use in iropt.c */ - ir_def_use_edge *outs; /**< Space for the Def-Use arrays. */ + struct obstack out_obst; /**< Space for the Def-Use arrays. */ + bool out_obst_allocated; ir_vrp_info vrp; /**< vrp info */ ir_loop *loop; /**< The outermost loop for this graph. */ @@ -565,8 +560,6 @@ struct ir_graph { ir_visited_t self_visited; /**< visited flag of the irg */ - unsigned estimated_node_count; /**< estimated number of nodes in this graph, - updated after every walk */ irg_edges_info_t edge_info; /**< edge info for automatic outs */ ir_node **idx_irn_map; /**< Array mapping node indexes to nodes. */ @@ -576,7 +569,6 @@ struct ir_graph { unsigned dump_nr; /**< number of graph dumps */ #ifdef DEBUG_libfirm - int n_outs; /**< Size wasted for outs */ long graph_nr; /**< a unique graph number for each graph to make output readable. */ #endif @@ -621,8 +613,6 @@ struct ir_prog { ident **global_asms; /**< An array of global ASM insertions. */ /* -- states of and access to generated information -- */ - irg_phase_state phase_state; /**< The state of construction. */ - ir_node **ip_outedges; /**< A huge Array that contains all out edges in interprocedural view. */