X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Firnode.h;h=7b369dc7301bb6a91839d2ead019dfdcadce21b6;hb=9ec98298a0bf99ccb9533365dd7245e0a380f3df;hp=227952c7e812e37b80e2b96efe35e78b64162e20;hpb=5ae1785fc181c0155b50fcee26cadf7194cb72d6;p=libfirm diff --git a/include/libfirm/irnode.h b/include/libfirm/irnode.h index 227952c7e..7b369dc73 100644 --- a/include/libfirm/irnode.h +++ b/include/libfirm/irnode.h @@ -174,6 +174,8 @@ void set_irn_n(ir_node *node, int n, ir_node *in); * @returns the number of the new input */ int add_irn_n(ir_node *node, ir_node *in); +/* Remove predecessor i from Sync n */ +void del_Sync_n(ir_node *n, int i); /* Sets the mode struct of node. */ void set_irn_mode(ir_node *node, ir_mode *mode); /** Gets the mode struct of a node. */ @@ -308,9 +310,6 @@ typedef enum { pn_Start_X_initial_exec, /**< Projection on the initial control flow. */ pn_Start_M, /**< Projection on the initial memory. */ pn_Start_P_frame_base, /**< Projection on the frame base pointer. */ - pn_Start_P_globals, /**< Projection on the pointer to the data segment - containing _all_ global entities. Use for - position independent data/code access. */ pn_Start_P_tls, /**< Projection on the pointer to the thread local store segment containing _all_thread local variables. */ pn_Start_T_args, /**< Projection on all arguments. */ @@ -325,12 +324,6 @@ typedef enum { * from Start. If so returns frame type, else Null. */ ir_type *is_frame_pointer(const ir_node *n); -/** Test whether arbitrary node is globals pointer. - * - * Test whether arbitrary node is globals pointer, i.e. Proj(pn_Start_P_globals) - * from Start. If so returns global type, else Null. */ -ir_type *is_globals_pointer(const ir_node *n); - /** Test whether arbitrary node is the thread local storage (tls) pointer. * * Test whether arbitrary node is tls pointer, i.e. Proj(pn_Start_P_tls) @@ -403,6 +396,8 @@ ir_extblk *get_Block_extbb(const ir_node *block); void set_Block_extbb(ir_node *block, ir_extblk *extblk); /** Get the Macro Block header of a (sub-) block. */ ir_node *get_Block_MacroBlock(const ir_node *block); +/** Set the Macro Block header of a (sub-) block. */ +void set_Block_MacroBlock(ir_node *block, ir_node *mbh); /** Get the Macro Block header of a node. */ ir_node *get_irn_MacroBlock(const ir_node *n); /** Returns the ir_graph this Block belongs to. */ @@ -980,10 +975,10 @@ void set_Load_align(ir_node *node, ir_align align); * Projection numbers for Store: use for Proj nodes! */ typedef enum { - pn_Store_M = pn_Generic_M_regular, /**< Memory result. */ - pn_Store_X_regular = pn_Generic_X_regular, /**< Execution result if no exception occurred. */ - pn_Store_X_except = pn_Generic_X_except, /**< Execution result if exception occurred. */ - pn_Store_max = pn_Generic_other /**< number of projections from a Store */ + pn_Store_M = pn_Generic_M_regular, /**< Memory result. */ + pn_Store_X_regular = pn_Generic_X_regular, /**< Execution result if no exception occurred. */ + pn_Store_X_except = pn_Generic_X_except, /**< Execution result if exception occurred. */ + pn_Store_max = pn_Generic_other /**< number of projections from a Store */ } pn_Store; /* Projection numbers for Store. */ ir_node *get_Store_mem(const ir_node *node); @@ -1017,8 +1012,8 @@ void set_Alloc_type(ir_node *node, ir_type *tp); /** The allocation place. */ typedef enum { - stack_alloc, /**< Alloc allocates the object on the stack. */ - heap_alloc /**< Alloc allocates the object on the heap. */ + stack_alloc, /**< Alloc allocates the object on the stack. */ + heap_alloc /**< Alloc allocates the object on the heap. */ } ir_where_alloc; ir_where_alloc get_Alloc_where(const ir_node *node); @@ -1239,6 +1234,8 @@ int is_NoMem(const ir_node *node); int is_Start(const ir_node *node); /** Returns true if node is a Minus node. */ int is_Minus(const ir_node *node); +/** Returns true if node is a Abs node. */ +int is_Abs(const ir_node *node); /** Returns true if node is a Mod node. */ int is_Mod(const ir_node *node); /** Returns true if node is a Div node. */ @@ -1407,6 +1404,12 @@ cond_jmp_predicate get_Cond_jmp_pred(const ir_node *cond); /** Sets a new conditional jump prediction. */ void set_Cond_jmp_pred(ir_node *cond, cond_jmp_predicate pred); +/** Checks whether a node represents a global address. */ +int is_Global(const ir_node *node); + +/* Returns the entity of a global address. */ +ir_entity *get_Global_entity(const ir_node *node); + /** * Access custom node data. * The data must have been registered with