X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firtypes.h;h=24f1c468ab159ac5d678ff7e9cdaee6bb9a94d9f;hb=31ef53136fdb86d4a98919c2148c95cadea4ea81;hp=823b4039755ac47f2714ede4f7bb6469add14e7e;hpb=6aac59aee3a4d2c1ec050af2b9a2ac12ded488f7;p=libfirm diff --git a/ir/ir/irtypes.h b/ir/ir/irtypes.h index 823b40397..24f1c468a 100644 --- a/ir/ir/irtypes.h +++ b/ir/ir/irtypes.h @@ -37,6 +37,7 @@ #include "execution_frequency.h" #include "irmemory.h" #include "callgraph.h" +#include "irprog.h" #include "field_temperature.h" #include "irphases_t.h" @@ -121,7 +122,7 @@ struct ir_mode { typedef struct { /* General attributes */ ir_graph *irg; /**< The graph this block belongs to. */ - unsigned long block_visited; /**< For the walker that walks over all blocks. */ + ir_visited_t block_visited; /**< For the walker that walks over all blocks. */ /* Attributes private to construction: */ 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. */ @@ -352,7 +353,7 @@ struct ir_node { ir_op *op; /**< The Opcode of this node. */ ir_mode *mode; /**< The Mode of this node. */ struct ir_node **in; /**< The array of predecessors / operands. */ - unsigned long visited; /**< The visited counter for walks of the graph. */ + ir_visited_t visited; /**< The visited counter for walks of the graph. */ void *link; /**< To attach additional information to the node, e.g. used while construction to link Phi0 nodes and during optimization to link to nodes that @@ -457,7 +458,7 @@ struct ir_graph { ir_class_cast_state class_cast_state; /**< Kind of cast operations in code. */ irg_extblk_info_state extblk_state; /**< State of extended basic block info. */ exec_freq_state execfreq_state; /**< Execution frequency state. */ - ir_address_taken_computed_state adr_taken_state; /**< Address taken state. */ + ir_entity_usage_computed_state entity_usage_state; unsigned mem_disambig_opt; /**< Options for the memory disambiguator. */ unsigned fp_model; /**< floating point model of the graph. */ @@ -489,11 +490,13 @@ struct ir_graph { ir_loop *l; /**< For callgraph analysis. */ /* -- Fields for Walking the graph -- */ - unsigned long visited; /**< this flag is an identifier for + ir_visited_t visited; /**< this flag is an identifier for ir walk. it will be incremented every time someone walks through the graph */ - unsigned long block_visited; /**< same as visited, for a complete block */ + ir_visited_t block_visited; /**< same as visited, for a complete block */ + + 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 */ @@ -509,10 +512,7 @@ struct ir_graph { #endif #ifndef NDEBUG - unsigned using_irn_visited : 1; /**< set to 1 if we are currently using the visited flag */ - unsigned using_block_visited : 1; /**< set to 1 if we are currently using the block_visited flag */ - unsigned using_irn_link : 1; /**< set to 1 if we are currently using the irn_link fields */ - unsigned using_block_mark : 1; /**< set to 1 if we are currently using the block mark flags */ + ir_resources_t reserved_resources; #endif }; @@ -528,15 +528,11 @@ struct ir_prog { to allocate nodes the represent values of constant entities. It is not meant as a procedure. */ - ir_type *glob_type; /**< The global type. Must be a class as it can - have fields and procedures. */ - ir_type *tls_type; /**< The thread local storage type. Must be a struct as it can - only have fields. */ - ir_type *constructors_type; /**< contains links to module constructor - functions. Must be a struct */ + ir_type *segment_types[IR_SEGMENT_COUNT]; ir_type **types; /**< A list of all types in the ir. */ ir_mode **modes; /**< A list of all modes in the ir. */ ir_op **opcodes; /**< A list of all opcodes in the ir. */ + 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. */ @@ -564,7 +560,7 @@ struct ir_prog { exec_freq_state execfreq_state; /**< The state of execution frequency information */ loop_nesting_depth_state lnd_state; /**< The state of loop nesting depth information. */ ir_class_cast_state class_cast_state; /**< The state of cast operations in code. */ - ir_address_taken_computed_state globals_adr_taken_state; /**< Address taken state of the globals. */ + ir_entity_usage_computed_state globals_entity_usage_state; 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. */