X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firtypes.h;h=cd3bfcff61741b60a7b47a629f2fc3767e9a0429;hb=e1d0a7c980faef658ffd4fd63a43e74b764a7dfe;hp=6d3e736bb01f04e264d9e0e9b430cb6559283b58;hpb=066e8d77df9e9019463c09935124e44b0716b3e1;p=libfirm diff --git a/ir/ir/irtypes.h b/ir/ir/irtypes.h index 6d3e736bb..cd3bfcff6 100644 --- a/ir/ir/irtypes.h +++ b/ir/ir/irtypes.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -243,7 +243,7 @@ typedef struct cast_attr { typedef struct load_attr { except_attr exc; /**< The exception attribute. MUST be the first one. */ unsigned volatility:1; /**< The volatility of this Load operation. */ - unsigned aligned:1; /**< The align attribute of this Load operation. */ + unsigned unaligned:1; /**< The align attribute of this Load operation. */ ir_mode *mode; /**< The mode of this Load operation. */ } load_attr; @@ -251,7 +251,7 @@ typedef struct load_attr { typedef struct store_attr { except_attr exc; /**< the exception attribute. MUST be the first one. */ unsigned volatility:1; /**< The volatility of this Store operation. */ - unsigned aligned:1; /**< The align attribute of this Store operation. */ + unsigned unaligned:1; /**< The align attribute of this Store operation. */ } store_attr; typedef struct phi_attr { @@ -267,10 +267,14 @@ typedef struct phi_attr { } u; } phi_attr; +/**< Cmp attribute. */ +typedef struct cmp_attr { + ir_relation relation; /**< comparison condition. */ +} cmp_attr; /**< Confirm attribute. */ typedef struct confirm_attr { - pn_Cmp cmp; /**< The compare operation. */ + ir_relation relation; /**< relation between value and bound */ } confirm_attr; /** CopyB attribute. */ @@ -289,12 +293,18 @@ typedef struct conv_attr { char strict; /**< If set, this is a strict Conv that cannot be removed. */ } conv_attr; -/** Div/Mod/DivMod/Quot attribute. */ -typedef struct divmod_attr { +/** Div attribute. */ +typedef struct div_attr { except_attr exc; /**< The exception attribute. MUST be the first one. */ ir_mode *resmode; /**< Result mode for the division. */ char no_remainder; /**< Set, if known that a division can be done without a remainder. */ -} divmod_attr; +} div_attr; + +/** Mod attribute. */ +typedef struct mod_attr { + except_attr exc; /**< The exception attribute. MUST be the first one. */ + ir_mode *resmode; /**< Result mode for the division. */ +} mod_attr; /** Inline Assembler support attribute. */ typedef struct asm_attr { @@ -317,6 +327,7 @@ typedef union ir_attr { bad_attr bad; /**< for Bads: irg reference */ anchor_attr anchor; /**< for Anchor: irg reference */ block_attr block; /**< For Block: Fields needed to construct it */ + cmp_attr cmp; /**< For Cmp. */ cond_attr cond; /**< For Cond. */ const_attr con; /**< For Const: contains the value of the constant and a type */ symconst_attr symc; /**< For SymConst. */ @@ -336,7 +347,8 @@ typedef union ir_attr { copyb_attr copyb; /**< For CopyB operation */ bound_attr bound; /**< For Bound operation */ conv_attr conv; /**< For Conv operation */ - divmod_attr divmod; /**< For Div/Mod/DivMod operation */ + div_attr div; /**< For Div operation */ + mod_attr mod; /**< For Mod operation */ asm_attr assem; /**< For ASM operation. */ } ir_attr; @@ -419,8 +431,6 @@ enum irg_anchors { anchor_start, /**< start node of this ir_graph */ anchor_initial_exec, /**< methods initial control flow */ anchor_frame, /**< methods frame */ - anchor_tls, /**< pointer to the thread local storage containing all - thread local data. */ anchor_initial_mem, /**< initial memory of this graph */ anchor_args, /**< methods arguments */ anchor_bad, /**< bad node of this ir_graph, the one and @@ -433,7 +443,7 @@ enum irg_anchors { typedef struct cg_callee_entry { ir_graph *irg; /**< The called irg. */ ir_node **call_list; /**< The list of all calls to the irg. */ - int max_depth; /**< Maximum depth of all Call nodes to irg. */ + size_t max_depth; /**< Maximum depth of all Call nodes to irg. */ } cg_callee_entry; /** @@ -493,8 +503,8 @@ struct ir_graph { 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 */ + size_t callgraph_loop_depth; /**< For callgraph analysis */ + size_t callgraph_recursion_depth; /**< For callgraph analysis */ double method_execution_frequency; /**< For callgraph analysis */ @@ -512,7 +522,7 @@ struct ir_graph { irg_edges_info_t edge_info; /**< edge info for automatic outs */ ir_node **idx_irn_map; /**< Array mapping node indexes to nodes. */ - int index; /**< a unique number for each graph */ + size_t index; /**< a unique number for each graph */ ir_phase *phases[PHASE_LAST+1]; /**< Phase information. */ void *be_data; /**< backend can put in private data here */ @@ -576,8 +586,8 @@ struct ir_prog { irp_callgraph_state callgraph_state; /**< The state of the callgraph. */ ir_loop *outermost_cg_loop; /**< For callgraph analysis: entry point to looptree over callgraph. */ - int max_callgraph_loop_depth; /**< needed in callgraph. */ - int max_callgraph_recursion_depth; /**< needed in callgraph. */ + size_t max_callgraph_loop_depth; /**< needed in callgraph. */ + size_t max_callgraph_recursion_depth; /**< needed in callgraph. */ double max_method_execution_frequency; /**< needed in callgraph. */ irp_temperature_state temperature_state; /**< accumulated temperatures computed? */ exec_freq_state execfreq_state; /**< The state of execution frequency information */ @@ -587,7 +597,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 */ + size_t max_irg_idx; /**< highest unused irg index */ long max_node_nr; /**< to generate unique numbers for nodes. */ unsigned dump_nr; /**< number of program info dumps */ #ifndef NDEBUG