#include "defs.h"#include "opcode.h"#include "mempool.h"#include "srcpos.h"#include "wn_core.h"#include "wn_map.h"#include "wio.h"#include "wn_pragmas.h"#include "stab.h"

Go to the source code of this file.
| #define WN_CAND | ( | l, | |||
| r | ) | WN_Binary(OPR_CAND,Boolean_type,l,r) |
| #define WN_CIOR | ( | l, | |||
| r | ) | WN_Binary(OPR_CIOR,Boolean_type,l,r) |
| #define WN_Delete | ( | wn | ) | IPA_WN_Delete(Current_Map_Tab, (wn)) |
| #define WN_LAND | ( | l, | |||
| r | ) | WN_Binary(OPR_LAND,Boolean_type,l,r) |
| #define WN_LIOR | ( | l, | |||
| r | ) | WN_Binary(OPR_LIOR,Boolean_type,l,r) |
| #define WN_LNOT | ( | l | ) | WN_Unary(OPR_LNOT,Boolean_type,l) |
Definition at line 300 of file wn.cxx.
References FALSE.
Referenced by ipa_dot_so_init(), and main().
| void IPA_WN_Delete | ( | WN_MAP_TAB * | maptab, | |
| WN * | wn | |||
| ) |
Definition at line 410 of file wn.cxx.
References delete_cleanup_fns, free_list(), Is_True, MTYPE_UNKNOWN, OPERATOR_UNKNOWN, UINT16, Which_WN_FREE_LIST(), WN_FREE_LIST_Push(), WN_MAP_Add_Free_List(), WN_opcode(), WN_set_desc(), WN_set_operator(), WN_set_rtype(), and WN_Size().
Referenced by IPA_WN_DELETE_Tree(), and IPO_Process_edge().
| void IPA_WN_DELETE_Tree | ( | WN_MAP_TAB * | maptab, | |
| WN * | tree | |||
| ) |
Definition at line 453 of file wn.cxx.
References INT, IPA_WN_Delete(), IPA_WN_DELETE_Tree(), next, node, NULL, OPC_BLOCK, WN_first(), WN_kid(), WN_kid_count(), WN_next(), and WN_opcode().
Referenced by IPA_WN_DELETE_Tree(), and WFE_Finish_Function().
| void IPA_WN_Move_Maps_PU | ( | WN_MAP_TAB * | src, | |
| WN_MAP_TAB * | dst, | |||
| WN * | wn | |||
| ) |
Definition at line 2107 of file wn.cxx.
References wn_map_tab::_is_used, wn_map_tab::_kind, wn_map_tab::_map_size, wn_map_tab::_mapping, wn_map_tab::_pool, c, category, FALSE, INT32, INT64, IPA_WN_MAP32_Set(), IPA_WN_MAP64_Set(), IPA_WN_MAP_Set(), Is_True, NULL, OPCODE_mapcat(), TRUE, UINT, WN_MAP_Add_Free_List(), WN_MAP_CATEGORIES, WN_MAP_Get_dont_copy, WN_map_id(), WN_MAP_KIND_INT32, WN_MAP_KIND_INT64, WN_MAP_KIND_VOIDP, WN_MAP_Set_ID(), WN_MAP_UNDEFINED, WN_opcode(), and WN_set_map_id().
Referenced by Transfer_Maps_R().
Definition at line 214 of file wn.cxx.
References BOOL, compatible(), FALSE, INT_TYPE, MTYPE_I4, MTYPE_U4, TRUE, UINT_TYPE, WTYPE_base_type, WTYPE_comp_type, and WTYPE_size.
Referenced by types_are_compatible().
Definition at line 842 of file wn.cxx.
References MAX.
Referenced by fix_tree(), IP_READ_fix_tree(), IP_READ_get_tree(), IPO_INLINE::Process_OPR_REGION(), WFE_Finish_Function(), WN_get_tree(), and WN_write_tree().
Intermediate Language Tree Nodes --------------------------------
Description:
This module provides the routines to create and manipulate wns.
Exported functions:
WN *WN_Create( OPERATOR operator, TYPE_ID rtype, TYPE_ID desc, mINT16 kid_count )
Creates and returns a WN with the given 'opcode'. 'Kid_count' give the number of kids when this is not determined by the 'opcode' and is ignored otherwise. The 'opcode', 'kid_count', and 'map_id' fields are initialized. The initial values of all other fields are undefined.
WN *WN_Create_Generic( OPERATOR operator, TYPE_ID rtype, TYPE_ID desc, mINT16 kid_count, WN *next, WN *prev, ST *st, INT32 label_number, INT32 num_entries, TY *ty, TY *load_addr_ty, WN_OFFSET offset, INT16 cvtl_bits, INT32 num_dim WN_ESIZE element_size INT64 const_value, UINT32 flag, INTRINSIC intrinsic)
Call WN_Create and then fill in all the fields relevant for opcode
Higher level Create routines.
These are routines built on top of WN_Create to allow one to create different types of nodes. They include a fair amount of error checking for conformance to WHIRL rules. Every control flow and statment has its own create function. This is necessary as most have distinct internal fields. For expressions with additional internal fields, we also supply operator specific create functions, but for most expressions, we provide generic (based on number of kids) create routines.
WN *WN_CreateBlock(void) WN *WN_CreateDO( WN *index, WN *start, WN *end, WN *step, WN *body) WN *WN_CreateDoWhile( WN *test, WN *body) WN *WN_CreateWhileDo( WN *test, WN *body) WN *WN_CreateIf( WN *test, WN *then, WN *else) WN *WN_CreateRegion( REGION_KIND kind, WN *body, WN *pragmas, WN *exits, INT region_id, struct inito * ereg_sup) WN *WN_CreateRegionExit( ST *st, INT32 label_number) WN *WN_CreateGoto( ST *st, INT32 label_number) WN *WN_CreateAgoto( WN *addr) WN *WN_CreateAltentry( ST *entry) WN *WN_CreateTruebr( INT32 label_number, WN *exp) WN *WN_CreateFalsebr( INT32 label_number, WN *exp) WN *WN_CreateReturn(void) WN *WN_CreateLabel( ST *label, INT32 label_number, UINT32 label_flag, WN *loop_info) WN *WN_CreateCompgoto( INT32 num_entries, WN *value, WN *block, WN *deflt, INT32 last_label) WN *WN_CreateSwitch( INT32 num_entries, WN *value, WN *block, WN *deflt, INT32 last_label) if last_label for Compgoto and Switch is 0, then don't know last_label (and regions can ignore switch heirarchy). WN *WN_CreateCasegoto( INT64 case_value, INT32 case_label_number) WN *WN_CreateXgoto( INT32 num_entries, WN *value, WN *block, ST *st) WN *WN_CreateIstore( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty,WN *value, WN *addr, UINT field_id) WN *WN_CreateIstorex( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, TY_IDX ty,WN *value, WN *addr1, WN *addr2) WN *WN_CreateMstore( WN_OFFSET offset, TY_IDX ty, WN *value, WN *addr,WN *num_bytes) WN *WN_CreateStid( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, ST *st, TY_IDX ty,WN *value, UINT field_id) WN *WN_CreatePrefetch(WN_OFFSET offset, UINT32 flag, WN *addr) WN *WN_CreatePrefetchx(UINT32 flag, WN *addr1, WN *addr2) WN *WN_CreateIo(IOSTATEMENT iostatement, mINT16 kid_count) WN *WN_CreateIoItem0(IOITEM ioitem, TY_IDX ty) WN *WN_CreateIoItem1(IOITEM ioitem, WN *kid0, TY_IDX ty) WN *WN_CreateIoItem2(IOITEM ioitem, WN *kid0, WN *kid1, TY_IDX ty) WN *WN_CreateIoItem3(IOITEM ioitem, WN *kid0, WN *kid1, WN *kid2, TY_IDX ty) WN *WN_CreateIoItemN(IOITEM ioitem, mINT16 kid_count, TY_IDX ty) WN *WN_CreateEval( WN *exp) WN *WN_CreatePragma(WN_PRAGMA_ID pragma_name, ST *st, INT64 const_val) WN *WN_CreateExp0( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc) WN *WN_CreateExp1( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *kid0) WN *WN_CreateExp2( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *kid0, WN *kid1) WN *WN_CreateExp3( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *kid0, WN *kid1, WN *kid2) WN *WN_CreateCvtl( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INT16 bits, WN *kid0) WN *WN_CreateIload( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty, TY_IDX load_addr_ty,WN *addr, UINT field_id) WN *WN_CreateIloadx( OPCODE opr, TYPE_ID rtype, TYPE_ID desc, TY_IDX ty,TY_IDX load_addr_ty,WN *addr1, WN *addr2) WN *WN_CreateMload( WN_OFFSET offset, TY_IDX ty,WN *addr, WN *num_bytes) WN *WN_CreateLdid( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, ST *st, TY_IDX ty, UINT field_id) WN *WN_CreateLda( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty, ST *st, UINT field_id) WN *WN_CreateIlda( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty) WN *WN_CreateIdname( WN_OFFSET offset,ST *st) WN *WN_CreateConst( OPERATOR opr, TYPE_ID rtype, TYPED_ID desc, ST *st ) WN *WN_CreateIntconst( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INT64 const_val)
void IPA_WN_Delete( WN_MAP_TAB *maptab, WN *wn ) void WN_Delete( WN *wn )
Delete the given 'wn' and make the node storage available for reallocation. Also add the map_id to the free list in the map table.
void IPA_WN_DELETE_Tree( WN_MAP_TAB *maptab, WN *tree )
Recursively delete the given whirl 'tree' and make the node storage available for reallocation. Also adds each node's map_id to the free list in the appropriate map table. Note that this is the PU context-specific version of WN_DELETE_Tree in wn_util. However; wn_util has no knowledge of WN_MAP_TAB's so the routine is placed here.
void WN_Register_Delete_Cleanup_Function(void (*cleanup_fn)(WN *wn)) Register <cleanup_fn> so that it is called just before a node is deleted. The node being deleted is passed to the cleanup function. If <cleanup_fn> was already registered, this call has no effect. Registered cleanup functions are invoked in an arbitrary order.
void WN_Remove_Delete_Cleanup_Function(void (*cleanup_fn)(WN *wn)) Stop calling the given <cleanup_fn> each time a node is deleted.
void WN_Mem_Push(void) Saves the WN memory state for later restoration by WN_Mem_Pop.
void WN_Mem_Pop(void) Deallocates all WN nodes created since the last call to WN_Mem_Push.
WN *WN_CopyNode ( const WN* src_wn )
Return a copy of a given src_wn. It does a shallow copy, i.e. only the current node, no children. Pointers to next/prev or to kids are NOT copied. Furthermore, no annotations are copied.
BOOL WN_Equiv(WN *wn1, WN *wn2)
Ignoring children and next-previous pointers, are wn1 and wn2 equivalent
void IPA_WN_Move_Maps ( WN_MAP_TAB *maptab, WN *dst, WN *src ) void WN_Move_Maps ( WN *dst, WN *src )
Move the information stored in the map table for one WN to another WN.
void IPA_WN_Move_Maps_PU( WN_MAP_TAB *src, WN_MAP_TAB *dst, WN *wn)
Move wn's mapping information from the source to the destination table. This is used when a WN is moved from one PU to another This assumes the destination table will contain the same WN_MAPs as the source.
These are much needed higher level routines built on the WN_Create to build WN. Most of them determine the opcode based on type information supplied.
WN *WN_Intconst ( TYPE_ID rtype, INT64 value ) Return an integer constant node of value
WN *WN_RotateIntconst( WN *tree INT32 rotate ) Rotate intconst bits right (rotate>0) or left (rotate<0)
WN *WN_Inverse ( TYPE_ID type, WN *tree ) Return a recip or divide base on type and flags
WN *WN_Floatconst ( TYPE_ID rtype, double value ) Return an floating point constant node of value
WN *WN_UVConst( TYPE_ID rtype, ) Return the correct bit pattern for an uninitialized variable
WN * WN_Zerocon ( TYPE_ID ty ) Return a zero of type ty
WN *WN_Ldid ( TYPE_ID desc, WN_OFFSET offset, ST *sym, TY_IDX align, UINT field_id ) Return a LDID (with offset) of type desc. The rtype is computed from ST. Alignment must be specified
WN *WN_RLdid ( TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, ST *sym, TY_IDX align ) Return a LDID (with offset) of type rtype, desc. Alignment must be specified
WN *WN_LdidPreg ( TYPE_ID desc, WN_OFFSET pregno ) Return a LDID of a given preg.
WN *WN_Stid ( TYPE_ID desc, WN_OFFSET offset, ST *sym, TY_IDX align, WN *value, UINT field_id ) STID (with offset) value into sym of type desc. Alignment must be specified
WN *WN_StidIntoPreg( TYPE_ID desc, WN_OFFSET offset, ST *sym, WN *value ) STID (with offset) value into sym of type desc. Alignment is inferred from sym
WN *WN_StidPreg( TYPE_ID desc, WN_OFFSET offset, WN *value ) STID (with offset) value into sym of type desc. Alignment is inferred from sym This is a simplified interface to StidIntoPreg, where the preg sym Is inferred from the type.
WN *WN_Iload ( TYPE_ID desc, WN_OFFSET offset, TY_IDX align, WN *addr, UINT field_id ) Return a ILOAD (with offset) of type desc. The rtype is computed from desc Alignment must be specified
WN *WN_RIload ( TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX align, WN *addr ) Return a ILOAD (with offset) of type rtype, desc. Alignment must be specified
WN *WN_Istore ( TYPE_ID desc, WN_OFFSET offset, TY_IDX align, WN *addr, WN *value, UINT field_id ) Return a ISTORE (with offset) of type desc. Alignment must be specified
WN *WN_Unary( OPERATOR opr, TYPE_ID rtype, WN *l ) Return a unary operator opr with opcode of type rtype. The following macros use this as a common base WN_LNOT(WN *l) WN_Bnot(TYPE_ID type, WN *l) WN_Realpart(TYPE_ID rtype, WN *l) WN_Imagpart(TYPE_ID rtype, WN *l) WN_Paren(TYPE_ID rtype, WN *l)
WN *WN_Binary ( OPERATOR opr, TYPE_ID rtype, WN *l, WN *r ) Return a binary operator opr with opcode of type rtype. The following macros use this as a common base WN_Add(TYPE_ID rtype, WN *l, WN *r) WN_Sub(TYPE_ID rtype, WN *l, WN *r) WN_Mpy(TYPE_ID rtype, WN *l, WN *r) WN_Div(TYPE_ID rtype, WN *l, WN *r)
WN_LAND(WN *l, WN *r) WN_LIOR(WN *l, WN *r)
WN_Band(TYPE_ID rtype, WN *l, WN *r) WN_Bior(TYPE_ID rtype, WN *l, WN *r) WN_Bxor(TYPE_ID rtype, WN *l, WN *r)
WN_Lshr(TYPE_ID rtype, WN *l, WN *r) WN_Ashr(TYPE_ID rtype, WN *l, WN *r) WN_Shl(TYPE_ID rtype, WN *l, WN *r)
WN_Complex(TYPE_ID rtype, WN *l, WN *r)
WN *WN_Ternary( OPERATOR opr, TYPE_ID rtype, WN *kid0, WN *kid1, WN *kid2 ) Return a ternary operator opr with opcode of type rtype. The following macros use this as a common base WN_Select(TYPE_ID rtype, WN *rel, WN *true, WN *false)
WN *WN_IloadLdid ( TYPE_ID desc, WN_OFFSET offset, TY_IDX align, ST *sym, WN_OFFSET symOffset ) Return a ILOAD (with offset) of type desc with and address of LDID (with symOffset) of Pointer_type. Alignment must be specified
WN *WN_Cvt( TYPE_ID desc, TYPE_ID rtype, WN *l, WN *r ) Return a cvt operator with opcode of type desc -> rtype,
WN *WN_Trunc( TYPE_ID desc, TYPE_ID rtype, WN *l, WN *r ) round to zero Return a trunc operator with opcode of type desc -> rtype,
WN *WN_Rnd( TYPE_ID desc, TYPE_ID rtype, WN *l, WN *r ) round to nearest int Return a rnd operator with opcode of type desc -> rtype
WN *WN_Ceil( TYPE_ID desc, TYPE_ID rtype, WN *l, WN *r ) round to +infinity Return a ceil operator with opcode of type desc -> rtype,
WN *WN_Floor( TYPE_ID desc, TYPE_ID rtype, WN *l, WN *r ) round to -infinity Return a floor operator with opcode of type desc -> rtype,
WN * WN_Int_Type_Conversion( WN *wn, TYPE_ID to_type )
Return the integer-typed wn converted to the given integer to_type. (handles only int->int conversions)
WN * WN_Float_Type_Conversion( WN *wn, TYPE_ID to_type )
Return the float-typed wn converted to the given float to_type. (handles only float->float conversions)
WN * WN_Type_Conversion( WN *wn, TYPE_ID to_type )
Return the int/float-typed wn converted to the given int/float to_type. (handles int->float, float->int, int->int, and float->float conversions)
WN *WN_Relational( OPERATOR opr, TYPE_ID rtype, WN *l, WN *r ) Return a relational operator opr with opcode of type rtype. The following macros use this as a common base WN_EQ(TYPE_ID rtype, WN *l, WN *r) WN_NE(TYPE_ID rtype, WN *l, WN *r) WN_LT(TYPE_ID rtype, WN *l, WN *r) WN_LE(TYPE_ID rtype, WN *l, WN *r) WN_GT(TYPE_ID rtype, WN *l, WN *r) WN_GE(TYPE_ID rtype, WN *l, WN *r)
WN *WN_ConstPowerOf2( TYPE_ID rtype, INT32 n ) Return a constant of type rtype that is 2**n (1<<(n-1))
WN *WN_Lda( TYPE_ID rtype, WN_OFFSET ldaOffset, ST *sym, UINT field_id ) Return lda of type rtype of sym
WN *WN_LdaString(const char *str, WN_OFFSET ldaOffset, INT32 len ) Create an LDA of type string
WN *WN_Icall( TYPE_ID rtype, TYPE_ID desc, INT32 n, TY_IDX ty ) Return an icall node with n children and a TY
WN *WN_Call( TYPE_ID rtype, TYPE_ID desc, INT32 n, ST *sym ) Return an call node with n children and ST sym Uses generic WN_generic_call()
WN *WN_Piccall( TYPE_ID rtype, TYPE_ID desc, INT32 n, ST *sym ) Return an piccall node with n children and ST sym Uses generic WN_generic_call()
WN *WN_Create_Intrinsic( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INTRINSIC intrinsic, INT32 n, WN *kids[] ) Return an intrinsic node with n children
WN *WN_CreateParm(TYPE_ID rtype, WN *kid0, TY_IDX ty, UINT32 flag) Return a parameter node
void WN_CopyMap( WN *dst, WN_MAP map, WN *src ) Copy the contents of map for src to dst. Uses Current_Map_Tab. Does nothing if map is WN_MAP_UNDEFINED.
WN *WN_Tas( TYPE_ID rtype, TY_IDX ty, WN *l ) Return an tas node with TY
Intermediate Language Tree Nodes --------------------------------
Description:
This module provides the routines to create and manipulate wns.
Exported functions:
WN *WN_Create( OPERATOR operator, TYPE_ID rtype, TYPE_ID desc, mINT16 kid_count )
Creates and returns a WN with the given 'opcode'. 'Kid_count' give the number of kids when this is not determined by the 'opcode' and is ignored otherwise. The 'opcode', 'kid_count', and 'map_id' fields are initialized. The initial values of all other fields are undefined.
WN *WN_Create_Generic( OPERATOR operator, TYPE_ID rtype, TYPE_ID desc, mINT16 kid_count, WN *next, WN *prev, ST *st, INT32 label_number, INT32 num_entries, TY *ty, TY *load_addr_ty, WN_OFFSET offset, INT16 cvtl_bits, INT32 num_dim WN_ESIZE element_size INT64 const_value, UINT32 flag, INTRINSIC intrinsic)
Call WN_Create and then fill in all the fields relevant for opcode
Higher level Create routines.
These are routines built on top of WN_Create to allow one to create different types of nodes. They include a fair amount of error checking for conformance to WHIRL rules. Every control flow and statment has its own create function. This is necessary as most have distinct internal fields. For expressions with additional internal fields, we also supply operator specific create functions, but for most expressions, we provide generic (based on number of kids) create routines.
WN *WN_CreateBlock(void) WN *WN_CreateDO( WN *index, WN *start, WN *end, WN *step, WN *body) WN *WN_CreateDoWhile( WN *test, WN *body) WN *WN_CreateWhileDo( WN *test, WN *body) WN *WN_CreateIf( WN *test, WN *then, WN *else) WN *WN_CreateRegion( REGION_KIND kind, WN *body, WN *pragmas, WN *exits, INT region_id, struct inito * ereg_sup) WN *WN_CreateRegionExit( ST *st, INT32 label_number) WN *WN_CreateGoto( ST *st, INT32 label_number) WN *WN_CreateAgoto( WN *addr) WN *WN_CreateAltentry( ST *entry) WN *WN_CreateTruebr( INT32 label_number, WN *exp) WN *WN_CreateFalsebr( INT32 label_number, WN *exp) WN *WN_CreateReturn(void) WN *WN_CreateLabel( ST *label, INT32 label_number, UINT32 label_flag, WN *loop_info) WN *WN_CreateCompgoto( INT32 num_entries, WN *value, WN *block, WN *deflt, INT32 last_label) WN *WN_CreateSwitch( INT32 num_entries, WN *value, WN *block, WN *deflt, INT32 last_label) if last_label for Compgoto and Switch is 0, then don't know last_label (and regions can ignore switch heirarchy). WN *WN_CreateCasegoto( INT64 case_value, INT32 case_label_number) WN *WN_CreateXgoto( INT32 num_entries, WN *value, WN *block, ST *st) WN *WN_CreateIstore( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty,WN *value, WN *addr, UINT field_id) WN *WN_CreateIstorex( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, TY_IDX ty,WN *value, WN *addr1, WN *addr2) WN *WN_CreateMstore( WN_OFFSET offset, TY_IDX ty, WN *value, WN *addr,WN *num_bytes) WN *WN_CreateStid( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, ST *st, TY_IDX ty,WN *value, UINT field_id) WN *WN_CreatePrefetch(WN_OFFSET offset, UINT32 flag, WN *addr) WN *WN_CreatePrefetchx(UINT32 flag, WN *addr1, WN *addr2) WN *WN_CreateIo(IOSTATEMENT iostatement, mINT16 kid_count) WN *WN_CreateIoItem0(IOITEM ioitem, TY_IDX ty) WN *WN_CreateIoItem1(IOITEM ioitem, WN *kid0, TY_IDX ty) WN *WN_CreateIoItem2(IOITEM ioitem, WN *kid0, WN *kid1, TY_IDX ty) WN *WN_CreateIoItem3(IOITEM ioitem, WN *kid0, WN *kid1, WN *kid2, TY_IDX ty) WN *WN_CreateIoItemN(IOITEM ioitem, mINT16 kid_count, TY_IDX ty) WN *WN_CreateEval( WN *exp) WN *WN_CreatePragma(WN_PRAGMA_ID pragma_name, ST *st, INT64 const_val) WN *WN_CreateExp0( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc) WN *WN_CreateExp1( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *kid0) WN *WN_CreateExp2( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *kid0, WN *kid1) WN *WN_CreateExp3( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *kid0, WN *kid1, WN *kid2) WN *WN_CreateCvtl( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INT16 bits, WN *kid0) WN *WN_CreateIload( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty, TY_IDX load_addr_ty,WN *addr, UINT field_id) WN *WN_CreateIloadx( OPCODE opr, TYPE_ID rtype, TYPE_ID desc, TY_IDX ty,TY_IDX load_addr_ty,WN *addr1, WN *addr2) WN *WN_CreateMload( WN_OFFSET offset, TY_IDX ty,WN *addr, WN *num_bytes) WN *WN_CreateLdid( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, ST *st, TY_IDX ty, UINT field_id) WN *WN_CreateLda( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty, ST *st, UINT field_id) WN *WN_CreateIlda( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty) WN *WN_CreateIdname( WN_OFFSET offset,ST *st) WN *WN_CreateConst( OPERATOR opr, TYPE_ID rtype, TYPED_ID desc, ST *st ) WN *WN_CreateIntconst( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INT64 const_val)
void IPA_WN_Delete( WN_MAP_TAB *maptab, WN *wn ) void WN_Delete( WN *wn )
Delete the given 'wn' and make the node storage available for reallocation. Also add the map_id to the free list in the map table.
void IPA_WN_DELETE_Tree( WN_MAP_TAB *maptab, WN *tree )
Recursively delete the given whirl 'tree' and make the node storage available for reallocation. Also adds each node's map_id to the free list in the appropriate map table. Note that this is the PU context-specific version of WN_DELETE_Tree in wn_util. However; wn_util has no knowledge of WN_MAP_TAB's so the routine is placed here.
void WN_Register_Delete_Cleanup_Function(void (*cleanup_fn)(WN *wn)) Register <cleanup_fn> so that it is called just before a node is deleted. The node being deleted is passed to the cleanup function. If <cleanup_fn> was already registered, this call has no effect. Registered cleanup functions are invoked in an arbitrary order.
void WN_Remove_Delete_Cleanup_Function(void (*cleanup_fn)(WN *wn)) Stop calling the given <cleanup_fn> each time a node is deleted.
void WN_Mem_Push(void) Saves the WN memory state for later restoration by WN_Mem_Pop.
void WN_Mem_Pop(void) Deallocates all WN nodes created since the last call to WN_Mem_Push.
WN *WN_CopyNode ( const WN* src_wn )
Return a copy of a given src_wn. It does a shallow copy, i.e. only the current node, no children. Pointers to next/prev or to kids are NOT copied. Furthermore, no annotations are copied.
BOOL WN_Equiv(WN *wn1, WN *wn2)
Ignoring children and next-previous pointers, are wn1 and wn2 equivalent
void IPA_WN_Move_Maps ( WN_MAP_TAB *maptab, WN *dst, WN *src ) void WN_Move_Maps ( WN *dst, WN *src )
Move the information stored in the map table for one WN to another WN.
void IPA_WN_Move_Maps_PU( WN_MAP_TAB *src, WN_MAP_TAB *dst, WN *wn)
Move wn's mapping information from the source to the destination table. This is used when a WN is moved from one PU to another This assumes the destination table will contain the same WN_MAPs as the source.
These are much needed higher level routines built on the WN_Create to build WN. Most of them determine the opcode based on type information supplied.
WN *WN_Intconst ( TYPE_ID rtype, INT64 value ) Return an integer constant node of value
WN *WN_RotateIntconst( WN *tree INT32 rotate ) Rotate intconst bits right (rotate>0) or left (rotate<0)
WN *WN_Inverse ( TYPE_ID type, WN *tree ) Return a recip or divide base on type and flags
WN *WN_Floatconst ( TYPE_ID rtype, double value ) Return an floating point constant node of value
WN *WN_UVConst( TYPE_ID rtype, ) Return the correct bit pattern for an uninitialized variable
WN * WN_Zerocon ( TYPE_ID ty ) Return a zero of type ty
WN *WN_Ldid ( TYPE_ID desc, WN_OFFSET offset, ST *sym, TY_IDX align, UINT field_id ) Return a LDID (with offset) of type desc. The rtype is computed from ST. Alignment must be specified
WN *WN_RLdid ( TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, ST *sym, TY_IDX align ) Return a LDID (with offset) of type rtype, desc. Alignment must be specified
WN *WN_LdidPreg ( TYPE_ID desc, WN_OFFSET pregno ) Return a LDID of a given preg.
WN *WN_Stid ( TYPE_ID desc, WN_OFFSET offset, ST *sym, TY_IDX align, WN *value, UINT field_id ) STID (with offset) value into sym of type desc. Alignment must be specified
WN *WN_StidIntoPreg( TYPE_ID desc, WN_OFFSET offset, ST *sym, WN *value ) STID (with offset) value into sym of type desc. Alignment is inferred from sym
WN *WN_StidPreg( TYPE_ID desc, WN_OFFSET offset, WN *value ) STID (with offset) value into sym of type desc. Alignment is inferred from sym This is a simplified interface to StidIntoPreg, where the preg sym Is inferred from the type.
WN *WN_Iload ( TYPE_ID desc, WN_OFFSET offset, TY_IDX align, WN *addr, UINT field_id ) Return a ILOAD (with offset) of type desc. The rtype is computed from desc Alignment must be specified
WN *WN_RIload ( TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX align, WN *addr ) Return a ILOAD (with offset) of type rtype, desc. Alignment must be specified
WN *WN_Istore ( TYPE_ID desc, WN_OFFSET offset, TY_IDX align, WN *addr, WN *value, UINT field_id ) Return a ISTORE (with offset) of type desc. Alignment must be specified
WN *WN_Unary( OPERATOR opr, TYPE_ID rtype, WN *l ) Return a unary operator opr with opcode of type rtype. The following macros use this as a common base WN_LNOT(WN *l) WN_Bnot(TYPE_ID type, WN *l) WN_Realpart(TYPE_ID rtype, WN *l) WN_Imagpart(TYPE_ID rtype, WN *l) WN_Paren(TYPE_ID rtype, WN *l)
WN *WN_Binary ( OPERATOR opr, TYPE_ID rtype, WN *l, WN *r ) Return a binary operator opr with opcode of type rtype. The following macros use this as a common base WN_Add(TYPE_ID rtype, WN *l, WN *r) WN_Sub(TYPE_ID rtype, WN *l, WN *r) WN_Mpy(TYPE_ID rtype, WN *l, WN *r) WN_Div(TYPE_ID rtype, WN *l, WN *r)
WN_LAND(WN *l, WN *r) WN_LIOR(WN *l, WN *r)
WN_Band(TYPE_ID rtype, WN *l, WN *r) WN_Bior(TYPE_ID rtype, WN *l, WN *r) WN_Bxor(TYPE_ID rtype, WN *l, WN *r)
WN_Lshr(TYPE_ID rtype, WN *l, WN *r) WN_Ashr(TYPE_ID rtype, WN *l, WN *r) WN_Shl(TYPE_ID rtype, WN *l, WN *r)
WN_Complex(TYPE_ID rtype, WN *l, WN *r)
WN *WN_Ternary( OPERATOR opr, TYPE_ID rtype, WN *kid0, WN *kid1, WN *kid2 ) Return a ternary operator opr with opcode of type rtype. The following macros use this as a common base WN_Select(TYPE_ID rtype, WN *rel, WN *true, WN *false)
WN *WN_IloadLdid ( TYPE_ID desc, WN_OFFSET offset, TY_IDX align, ST *sym, WN_OFFSET symOffset ) Return a ILOAD (with offset) of type desc with and address of LDID (with symOffset) of Pointer_type. Alignment must be specified
WN *WN_Cvt( TYPE_ID desc, TYPE_ID rtype, WN *l, WN *r ) Return a cvt operator with opcode of type desc -> rtype,
WN *WN_Trunc( TYPE_ID desc, TYPE_ID rtype, WN *l, WN *r ) round to zero Return a trunc operator with opcode of type desc -> rtype,
WN *WN_Rnd( TYPE_ID desc, TYPE_ID rtype, WN *l, WN *r ) round to nearest int Return a rnd operator with opcode of type desc -> rtype
WN *WN_Ceil( TYPE_ID desc, TYPE_ID rtype, WN *l, WN *r ) round to +infinity Return a ceil operator with opcode of type desc -> rtype,
WN *WN_Floor( TYPE_ID desc, TYPE_ID rtype, WN *l, WN *r ) round to -infinity Return a floor operator with opcode of type desc -> rtype,
WN * WN_Int_Type_Conversion( WN *wn, TYPE_ID to_type )
Return the integer-typed wn converted to the given integer to_type. (handles only int->int conversions)
WN * WN_Float_Type_Conversion( WN *wn, TYPE_ID to_type )
Return the float-typed wn converted to the given float to_type. (handles only float->float conversions)
WN * WN_Type_Conversion( WN *wn, TYPE_ID to_type )
Return the int/float-typed wn converted to the given int/float to_type. (handles int->float, float->int, int->int, and float->float conversions)
WN *WN_Relational( OPERATOR opr, TYPE_ID rtype, WN *l, WN *r ) Return a relational operator opr with opcode of type rtype. The following macros use this as a common base WN_EQ(TYPE_ID rtype, WN *l, WN *r) WN_NE(TYPE_ID rtype, WN *l, WN *r) WN_LT(TYPE_ID rtype, WN *l, WN *r) WN_LE(TYPE_ID rtype, WN *l, WN *r) WN_GT(TYPE_ID rtype, WN *l, WN *r) WN_GE(TYPE_ID rtype, WN *l, WN *r)
WN *WN_ConstPowerOf2( TYPE_ID rtype, INT32 n ) Return a constant of type rtype that is 2**n (1<<(n-1))
WN *WN_Lda( TYPE_ID rtype, WN_OFFSET ldaOffset, ST *sym, UINT field_id ) Return lda of type rtype of sym
WN *WN_LdaString(const char *str, WN_OFFSET ldaOffset, INT32 len ) Create an LDA of type string
WN *WN_Icall( TYPE_ID rtype, TYPE_ID desc, INT32 n, TY_IDX ty ) Return an icall node with n children and a TY
WN *WN_Call( TYPE_ID rtype, TYPE_ID desc, INT32 n, ST *sym ) Return an call node with n children and ST sym Uses generic WN_generic_call()
WN *WN_Piccall( TYPE_ID rtype, TYPE_ID desc, INT32 n, ST *sym ) Return an piccall node with n children and ST sym Uses generic WN_generic_call()
WN *WN_Create_Intrinsic( OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INTRINSIC intrinsic, INT32 n, WN *kids[] ) Return an intrinsic node with n children
WN *WN_CreateParm(TYPE_ID rtype, WN *kid0, TY_IDX ty, UINT32 flag) Return a parameter node
void WN_CopyMap( WN *dst, WN_MAP map, WN *src ) Copy the contents of map for src to dst. Uses Current_Map_Tab. Does nothing if map is WN_MAP_UNDEFINED.
WN *WN_Tas( TYPE_ID rtype, TY_IDX ty, WN *l ) Return an tas node with TY
Definition at line 204 of file wn.cxx.
References TYPE_ID, WN_rtype(), WTYPE_base_type, and WTYPE_comp_type.
Referenced by WN_CreateIstore(), WN_CreateParm(), and WN_CreateStid().
Definition at line 2410 of file wn.cxx.
References MTYPE_V, and WN_CreateExp2.
Referenced by add_offset(), em_alloca(), Gen_Assign_Of_Init_Val(), lower_bit_field_id(), lower_load_bits(), WN_UNROLL::Unroll(), vho_lower_cselect(), vho_lower_expr(), WFE_Address_Of(), WFE_Array_Expr(), WFE_Expand_Expr(), WFE_Generate_Thunk(), WFE_Lhs_Of_Modify_Expr(), WGEN_Address_Of(), WGEN_Adjust_Thunk(), WGEN_Array_Expr(), WGEN_Expand_Expr(), WGEN_Lhs_Of_Modify_Expr(), and WN_UNROLL::WN_UNROLL().
Definition at line 2459 of file wn.cxx.
References Host_To_Targ_Float(), INT64, Is_True, Make_Const(), MTYPE_C10, MTYPE_C4, MTYPE_C8, MTYPE_CQ, MTYPE_F10, MTYPE_F16, MTYPE_F4, MTYPE_F8, MTYPE_FQ, one, pow(), UINT64, val, and WN_Intconst().
Referenced by lower_float_to_unsigned(), and lower_unsigned_to_float().
Definition at line 2693 of file wn.cxx.
References wn_map_tab::_kind, Current_Map_Tab, FALSE, Is_True, WN_MAP32_Get, WN_MAP32_Set, WN_MAP64_Get, WN_MAP64_Set, WN_MAP_Get, WN_MAP_KIND_INT32, WN_MAP_KIND_INT64, WN_MAP_KIND_VOIDP, WN_MAP_Set, and WN_MAP_UNDEFINED.
Referenced by Atomic_Direct(), Atomic_Using_Critical(), Atomic_Using_Swap(), Convert_Branch(), Convert_Section_To_Pdo(), lower_copy_maps(), Lower_Master(), NORMALIZE_LOOP::Normalize_do_loop(), Pre_Optimizer(), Raise_dowhile_stmt(), Raise_whiledo_stmt(), and REGION_remove_and_mark().
Definition at line 2027 of file wn.cxx.
References Copy_ST(), INITO_st(), Inito_Table, New_INITO(), NULL, OPC_REGION, opcode, OPCODE_has_next_prev(), INITO::val, WN_Copy_u1u2(), WN_Copy_u3(), WN_Create(), WN_ereg_supp(), WN_field_id(), WN_kid(), WN_kid_count(), WN_linenum(), WN_opcode(), and WN_set_field_id().
Referenced by RINIT::Add_head_label(), RINIT::Add_label(), Atomic_Using_Swap(), CFG::Conv_to_select(), Copy_addr_expr(), Copy_Non_MP_Tree_Rec(), STMTREP::Enter_lhs(), expand_flush(), Gen_Assign_Of_Init_Val(), RINIT::Handle_split_label(), Insert_Alloca(), lower_bit_field_id(), CFG::Lower_if_stmt(), GOTO::Modify_exits(), CFG::Process_entry(), REGION_remove_and_mark(), WN_UNROLL::Replicate_expr(), WN_UNROLL::Replicate_stmt(), GOTO::Set_region_exit(), WN_UNROLL::Unroll(), WFE_Expand_Expr(), WGEN_Expand_Expr(), and WN_COPY_Tree().
Definition at line 672 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_Create().
Definition at line 539 of file wn.cxx.
References BZERO, free_list(), INT16, Is_True, MAX, MEM_POOL_Alloc, MEM_POOL_Initialize, MEM_POOL_Push, mUINT64, New_Map_Id, opcode, OPCODE_has_next_prev(), OPCODE_make_op(), OPCODE_nkids(), size, TRUE, Which_WN_FREE_LIST(), wn, WN_FREE_LIST_Empty, WN_FREE_LIST_Pop(), WN_mem_pool_initialized, WN_real_fields(), WN_set_desc(), WN_set_kid_count(), WN_set_map_id(), WN_set_operator(), and WN_set_rtype().
Referenced by CFG::Add_one_stmt(), Call_Named_Function(), Convert_Alloca_To_Intrinsic(), Convert_Dealloca_To_Intrinsic(), DISTR_ARRAY::Convert_Expr_To_Symbol(), Convert_Icall(), Copy_Array(), Copy_Array_Section(), Create_array(), Create_Array_Load(), Create_Array_Store(), WN_INSTRUMENT_WALKER::Create_Comma_Kid(), OPT_STAB::Create_entry_chi_stmt(), Create_Initialize_Loop(), Create_Io_Entry(), cwh_addr_array(), cwh_addr_nonc_recast(), cwh_addr_triplet(), cwh_inline_allocate(), cwh_io_conv_array_to_dope(), cwh_io_conv_arrsection_to_dope(), cwh_stmt_call_helper(), ARRAY_DESCRIPTOR::Distribute_Array(), DRA_EC_Array_Portion_Parms(), Exp_Ldst(), Expand_64Bit_Branch(), Expand_Cmov(), Expand_Fast_Power_Of_2_Rem(), Expand_Int_Cmp_With_Branch(), Expand_Int_To_Long_Double(), Expand_Long_Double_To_Int(), Expand_non_SSE2_Float_Select(), Expand_Ordered_Branch(), Expand_Split_Abs(), Expand_Split_Branch(), Expand_Split_Int_Cmp(), Expand_Split_Select(), Expand_Split_Shift(), Expand_Unsigned_Int_To_Float_m32(), Expand_Unsigned_Long_To_Float(), F90_Do_Copies(), F90_Lower_Copy_To_ATemp(), F90_Walk_All_Statements(), F90_Walk_Statements(), F90_Wrap_ARREXP(), fei_allocate(), fei_entry_pt(), fei_stop(), fei_where(), Freeze_Cur_Numthreads_Func(), Gather_Scatter_Scalar_Expand(), Gen_Alloc_DART(), Gen_Alloc_Reshape(), Gen_Auto_Alloca(), Gen_Barrier(), Gen_Call_Array(), Gen_Call_Array_Arg(), Gen_Call_Array_Cart(), Gen_Call_Array_Dart_Args(), Gen_Can_Fork(), Gen_Compare_DARTS(), Gen_Critical(), Gen_Dealloc_DART(), Gen_End_Critical(), Gen_End_Master(), Gen_End_Ordered(), Gen_End_Serialized_Parallel(), Gen_End_Single(), Gen_exp_wn(), Gen_Fini_RTL(), Gen_Flush(), Gen_Fork(), Gen_Free_Cart(), Gen_Get_Num_Threads(), Gen_Get_Thread_Num(), Gen_Impld_Io_Calls(), Gen_In_Parallel(), Gen_Init_DART(), Gen_Init_RTL(), Gen_Io_Calls(), Gen_Lookup_DART(), Gen_Malloc_Cart(), Gen_Master(), Gen_MP_Copyin(), Gen_MP_Reduction(), Gen_Ordered(), Gen_Restore_Stack_Pointer(), Gen_Save_Stack_Pointer(), Gen_Serialized_Parallel(), Gen_Set_Num_Threads(), Gen_Single(), Gen_stmt_wn(), Generate_Dynamic_Bounds(), Generate_Runtime_Cyclic_Bounds(), Generate_Simple_Bounds(), Get_Expansion_Space(), OPT_REVISE_SSA::Get_new_occ(), Get_Runtime_Numthreads_Ldid_From_Func(), Handle_INTRINSIC_CALL(), Hoist_Expression(), Initialize_Pdo_Last_Local_Index(), Insert_Alloca(), Instrument_Address(), intrinsic_runtime(), IPA_Rename_Builtins(), IPO_Process_edge(), Localize_Variable(), ARRAY_LOWER_REF::Lower_Array_Expr(), lower_bit_field_id(), Lower_Distr_Pragmas(), Lower_Master(), lower_maxminloc(), Lower_Single_Array_Dim(), Make_Runtime_Call(), Mp_Coordinate_Call(), Mp_Layout_Call(), New_DACT(), Numprocs(), Parallelize_Doacross_Loop(), REGION_STRIDE_PREFETCH::Phased_Multi_Stride_Ins(), IPO_INLINE::Process_Alloca_Postamble(), IPO_INLINE::Process_Alloca_Preamble(), Promote_Pointer(), Read_Pragma_Page_Place(), Read_Pragma_Thread_Affinity(), SE_Array(), SE_Wrap_Array(), Simd_Mark_Code(), REGION_STRIDE_PREFETCH::Strong_Single_Stride_Ins(), Substitute_Array(), Transform_Do(), U64_LOWER_create_cvtl(), U64_LOWER_create_ne_0(), vho_lower_icall(), vho_simplify_cand(), vho_simplify_cior(), WFE_Array_Expr(), WFE_Expand_Expr(), WFE_Generate_Thunk(), WGEN_Array_Expr(), WGEN_Expand_Expr(), WGEN_Expand_Math_Errno_Sqrt(), WGEN_Generate_Thunk(), WN_CopyNode(), WN_Create(), WN_Create_Generic(), WN_Create_Intrinsic(), WN_CreateAffirm(), WN_CreateAgoto(), WN_CreateAlloca(), WN_CreateAltentry(), WN_CreateAsm_Input(), WN_CreateAsm_Stmt(), WN_CreateAssert(), WN_CreateBarrier(), WN_CreateBlock(), WN_CreateCasegoto(), WN_CreateComma(), WN_CreateComment(), WN_CreateCompgoto(), WN_CreateConst(), WN_CreateDealloca(), WN_CreateDO(), WN_CreateDoWhile(), WN_CreateEntry(), WN_CreateEval(), WN_CreateExcScopeBegin(), WN_CreateExcScopeEnd(), WN_CreateExp0(), WN_CreateExp1(), WN_CreateExp2(), WN_CreateExp3(), WN_CreateFalsebr(), WN_CreateGoto(), WN_CreateGotoOuterBlock(), WN_CreateIdname(), WN_CreateIf(), WN_CreateIlda(), WN_CreateIntconst(), WN_CreateIo(), WN_CreateIoItem0(), WN_CreateIoItem1(), WN_CreateIoItem2(), WN_CreateIoItem3(), WN_CreateIoItemN(), WN_CreateIstore(), WN_CreateIstorex(), WN_CreateLabel(), WN_CreateLda(), WN_CreateLdid(), WN_CreateLdma(), WN_CreateLoopInfo(), WN_CreateMstore(), WN_CreatePragma(), WN_CreatePrefetch(), WN_CreatePrefetchx(), WN_CreateRcomma(), WN_CreateRegion(), WN_CreateRegionExit(), WN_CreateReturn(), WN_CreateReturn_Val(), WN_CreateStid(), WN_CreateSwitch(), WN_CreateTrap(), WN_CreateTruebr(), WN_CreateWhileDo(), WN_CreateXgoto(), WN_CreateXpragma(), WN_generic_call(), WN_Icall(), WN_LdaLabel(), WN_SimpCreateCvtl(), WN_SimpCreateDeposit(), WN_SimpCreateExp1(), WN_SimpCreateExp2(), WN_SimpCreateExp3(), and WN_SimpCreateExtract().
| WN* WN_Create_Generic | ( | OPCODE | opcode, | |
| mINT16 | kid_count, | |||
| WN * | next, | |||
| WN * | prev, | |||
| ST_IDX | st, | |||
| INT32 | label_number, | |||
| INT32 | num_entries, | |||
| TY_IDX | ty, | |||
| TY_IDX | load_addr_ty, | |||
| WN_OFFSET | offset, | |||
| INT16 | cvtl_bits, | |||
| INT32 | num_dim, | |||
| WN_ESIZE | element_size, | |||
| INT64 | const_value, | |||
| UINT32 | flag, | |||
| INTRINSIC | intrinsic | |||
| ) | [inline] |
Definition at line 685 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_Create_Generic().
| WN* WN_Create_Generic | ( | OPERATOR | opr, | |
| TYPE_ID | rtype, | |||
| TYPE_ID | desc, | |||
| mINT16 | kid_count, | |||
| WN * | next, | |||
| WN * | prev, | |||
| ST_IDX | st, | |||
| INT32 | label_number, | |||
| INT32 | num_entries, | |||
| TY_IDX | ty, | |||
| TY_IDX | load_addr_ty, | |||
| WN_OFFSET | offset, | |||
| INT16 | cvtl_bits, | |||
| INT32 | num_dim, | |||
| WN_ESIZE | element_size, | |||
| INT64 | const_value, | |||
| UINT32 | flag, | |||
| INTRINSIC | intrinsic | |||
| ) | [inline] |
Definition at line 598 of file wn.cxx.
References opcode, OPCODE_has_1ty(), OPCODE_has_2ty(), OPCODE_has_bits(), OPCODE_has_esize(), OPCODE_has_flags(), OPCODE_has_inumber(), OPCODE_has_label(), OPCODE_has_ndim(), OPCODE_has_next_prev(), OPCODE_has_num_entries(), OPCODE_has_offset(), OPCODE_has_sym(), OPCODE_has_value(), OPCODE_make_op(), wn, WN_const_val(), WN_Create(), WN_cvtl_bits(), WN_element_size(), WN_intrinsic(), WN_label_number(), WN_next(), WN_num_dim, WN_num_entries(), WN_offset(), WN_prev(), WN_set_flag(), WN_set_load_addr_ty(), WN_set_ty(), and WN_st_idx().
Referenced by WN_Create_Generic().
Definition at line 1001 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_Create_Intrinsic.
| WN* WN_Create_Intrinsic | ( | OPERATOR | opr, | |
| TYPE_ID | rtype, | |||
| TYPE_ID | desc, | |||
| INTRINSIC | intrinsic, | |||
| INT32 | n, | |||
| WN * | kids[] | |||
| ) |
Definition at line 2276 of file wn.cxx.
References call(), INT32, NULL, opc, OPCODE_make_op(), WN_Create(), WN_intrinsic(), WN_kid(), WN_MAP_Set, WN_MAP_UNDEFINED, WN_SimplifyIntrinsic(), and WN_SimpParentMap.
Definition at line 952 of file wn.cxx.
References Is_True, MTYPE_byte_size, OPC_AGOTO, Pointer_type, WN_Create(), WN_kid0(), and WN_rtype().
Definition at line 3024 of file wn.cxx.
References MTYPE_V, OPR_ALLOCA, Pointer_Mtype, WN_Create(), and WN_kid0().
Referenced by Convert_Intrinsic_To_Alloca_Dealloca(), Create_ST_For_Tree(), F90_Lower_Alloc_Dealloc(), Gen_Auto_Alloca(), Gen_Save_Stack_Pointer(), Save_And_Restore_Stack(), WFE_Alloca_0(), WFE_Alloca_ST(), WFE_Expand_Expr(), WGEN_Alloca_0(), WGEN_Alloca_ST(), and WGEN_Expand_Expr().
Definition at line 1984 of file wn.cxx.
References CLASS_NAME, CURRENT_SYMTAB, EXPORT_LOCAL, New_ST(), OPC_ASM_INPUT, Save_Str(), SCLASS_UNKNOWN, ST_Init(), ST_st_idx, Str_To_Index, WN_asm_opnd_num(), WN_Create(), WN_kid0(), and WN_st_idx().
| WN* WN_CreateAsm_Stmt | ( | INT16 | kid_count, | |
| char * | asm_string | |||
| ) |
Definition at line 1968 of file wn.cxx.
References CLASS_NAME, CURRENT_SYMTAB, EXPORT_LOCAL, New_ST(), OPC_ASM_STMT, Save_Str(), SCLASS_UNKNOWN, ST_Init(), ST_st_idx, Str_To_Index, WN_Create(), and WN_st_idx().
Definition at line 2237 of file wn.cxx.
References OPC_ASSERT, WN_Create(), WN_kid(), and WN_offset().
Definition at line 2219 of file wn.cxx.
References OPC_BACKWARD_BARRIER, OPC_FORWARD_BARRIER, and WN_Create().
Definition at line 717 of file wn.cxx.
References NULL, OPC_BLOCK, wn, WN_Create(), WN_first(), and WN_last().
Definition at line 1093 of file wn.cxx.
References OPC_CASEGOTO, WN_const_val(), WN_Create(), and WN_label_number().
Definition at line 1013 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateComma.
Definition at line 1926 of file wn.cxx.
References Get_Current_PU, Is_True, opc, OPC_BLOCK, OPCODE_is_expression(), OPCODE_make_op(), Set_PU_has_very_high_whirl(), WN_Create(), WN_kid0(), WN_kid1(), and WN_opcode().
| WN* WN_CreateComment | ( | const char * | s | ) |
Definition at line 2004 of file wn.cxx.
References CLASS_NAME, CURRENT_SYMTAB, EXPORT_LOCAL, New_ST(), OPC_COMMENT, Save_Str(), SCLASS_UNKNOWN, ST_Init(), ST_st_idx, Str_To_Index, WN_Create(), and WN_st_idx().
Definition at line 1039 of file wn.cxx.
References Is_True, OPC_BLOCK, OPC_COMPGOTO, OPC_GOTO, OPCODE_is_expression(), WN_Create(), WN_kid(), WN_kid0(), WN_last_label(), WN_num_entries(), and WN_opcode().
Definition at line 968 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateConst.
Definition at line 1888 of file wn.cxx.
References Is_True, opc, OPCODE_make_op(), OPCODE_operator(), OPR_CONST, WN_Create(), and WN_st_idx().
Definition at line 989 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateCvtl.
Definition at line 1660 of file wn.cxx.
References Is_True, NULL, opc, OPCODE_make_op(), OPCODE_operator(), OPR_CVTL, WN_CreateExp1, WN_cvtl_bits(), WN_MAP_Set, WN_MAP_UNDEFINED, WN_SimplifyCvtl(), and WN_SimpParentMap.
Definition at line 3033 of file wn.cxx.
References MTYPE_V, OPR_DEALLOCA, and WN_Create().
Referenced by Convert_Intrinsic_To_Alloca_Dealloca(), F90_Lower_Alloc_Dealloc(), Gen_Restore_Stack_Pointer(), Save_And_Restore_Stack(), WFE_Dealloca(), WFE_Expand_Expr(), WGEN_Dealloca(), and WGEN_Expand_Expr().
Definition at line 726 of file wn.cxx.
References INT, Is_True, NULL, OPC_BLOCK, OPC_DO_LOOP, OPC_LOOP_INFO, OPCODE_is_stmt(), wn, WN_Create(), WN_do_body, WN_end, WN_index, WN_opcode(), WN_set_do_loop_info, WN_start, and WN_step.
Definition at line 753 of file wn.cxx.
References Is_True, OPC_BLOCK, OPC_DO_WHILE, wn, WN_Create(), WN_opcode(), WN_while_body, and WN_while_test.
Definition at line 905 of file wn.cxx.
References OPC_FUNC_ENTRY, wn, WN_block_element(), WN_Create(), WN_entry_name, WN_func_body, WN_func_pragmas, and WN_func_varrefs.
Definition at line 1482 of file wn.cxx.
References Is_True, OPC_EVAL, OPCODE_is_expression(), WN_Create(), WN_kid0(), and WN_opcode().
Definition at line 852 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateExp0.
Definition at line 862 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateExp1.
Definition at line 1561 of file wn.cxx.
References Is_True, NULL, opc, OPCODE_is_expression(), OPCODE_make_op(), WN_Create(), WN_kid0(), WN_MAP_Set, WN_MAP_UNDEFINED, WN_opcode(), WN_SimplifyExp1(), and WN_SimpParentMap.
Definition at line 873 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateExp2.
Definition at line 1584 of file wn.cxx.
References Disable_Simplification_For_FE, Is_True, MTYPE_byte_size, NULL, opc, OPCODE_is_expression(), OPCODE_make_op(), OPR_INTCONST, OPR_MPY, WN_Create(), WN_has_side_effects(), WN_kid0(), WN_kid1(), WN_MAP_Set, WN_MAP_UNDEFINED, WN_opcode(), WN_operator(), WN_rtype(), WN_SimplifyExp2(), and WN_SimpParentMap.
Definition at line 885 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateExp3.
Definition at line 1625 of file wn.cxx.
References Is_True, NULL, opc, OPCODE_is_expression(), OPCODE_make_op(), WN_Create(), WN_has_side_effects(), WN_kid(), WN_kid0(), WN_kid1(), WN_MAP_Set, WN_MAP_UNDEFINED, WN_opcode(), WN_SimplifyExp3(), and WN_SimpParentMap.
Definition at line 987 of file wn.cxx.
References Is_True, OPC_FALSEBR, OPCODE_is_expression(), WN_Create(), WN_kid0(), WN_label_number(), and WN_opcode().
| WN* WN_CreateGotoOuterBlock | ( | INT32 | label_number, | |
| SYMTAB_IDX | label_level | |||
| ) |
Definition at line 942 of file wn.cxx.
References OPC_GOTO_OUTER_BLOCK, WN_Create(), WN_label_level(), and WN_label_number().
Definition at line 1876 of file wn.cxx.
References OPC_IDNAME, WN_Create(), WN_idname_offset(), and WN_st_idx().
Definition at line 785 of file wn.cxx.
References Is_True, OPC_BLOCK, OPC_IF, wn, WN_Create(), WN_else, WN_if_test, WN_opcode(), WN_Reset_If_Guard, and WN_then.
Definition at line 1858 of file wn.cxx.
References Is_True, MTYPE_is_pointer, opc, OPCODE_make_op(), OPCODE_operator(), OPCODE_rtype(), OPR_ILDA, WN_Create(), WN_load_offset(), and WN_set_ty().
| WN* WN_CreateIload | ( | OPCODE | opc, | |
| WN_OFFSET | offset, | |||
| TY_IDX | ty, | |||
| TY_IDX | load_addr_ty, | |||
| WN * | addr, | |||
| UINT | field_id = 0 | |||
| ) | [inline] |
Definition at line 899 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateIload.
| WN* WN_CreateIload | ( | OPERATOR | opr, | |
| TYPE_ID | rtype, | |||
| TYPE_ID | desc, | |||
| WN_OFFSET | offset, | |||
| TY_IDX | ty, | |||
| TY_IDX | load_addr_ty, | |||
| WN * | addr, | |||
| UINT | field_id = 0 | |||
| ) |
Definition at line 1684 of file wn.cxx.
References DevWarn, Is_True, MTYPE_byte_size, MTYPE_I4, MTYPE_I8, MTYPE_is_pointer, MTYPE_U4, MTYPE_U8, NULL, opc, OPCODE_make_op(), OPR_ILDBITS, OPR_ILOAD, WN_CreateExp1, WN_Cvt(), WN_load_offset(), WN_MAP_Set, WN_MAP_UNDEFINED, WN_rtype(), WN_set_field_id(), WN_set_load_addr_ty(), WN_set_ty(), WN_SimplifyIload(), and WN_SimpParentMap.
Definition at line 914 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateIloadx.
| WN* WN_CreateIloadx | ( | OPERATOR | opr, | |
| TYPE_ID | rtype, | |||
| TYPE_ID | desc, | |||
| TY_IDX | ty, | |||
| TY_IDX | load_addr_ty, | |||
| WN * | addr1, | |||
| WN * | addr2 | |||
| ) |
Definition at line 1746 of file wn.cxx.
References Is_True, opc, OPCODE_make_op(), OPCODE_operator(), OPR_ILOADX, OPR_LDID, WN_CreateExp2, WN_load_offset(), WN_operator(), WN_set_load_addr_ty(), and WN_set_ty().
Definition at line 978 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateIntconst.
Definition at line 1901 of file wn.cxx.
References INT32, INT64, Is_True, opc, OPC_U4INTCONST, OPCODE_make_op(), OPCODE_operator(), OPR_INTCONST, UINT32, WN_const_val(), and WN_Create().
| WN* WN_CreateIo | ( | IOSTATEMENT | iostatement, | |
| mINT16 | kid_count | |||
| ) |
Definition at line 1409 of file wn.cxx.
References Is_True, OPC_IO, target_io_library, WN_Create(), WN_io_statement(), and WN_Set_IO_Library.
Definition at line 1421 of file wn.cxx.
References OPC_IO_ITEM, WN_Create(), WN_io_item(), and WN_set_ty().
Definition at line 1432 of file wn.cxx.
References OPC_IO_ITEM, WN_Create(), WN_io_item(), WN_kid0(), and WN_set_ty().
Definition at line 1444 of file wn.cxx.
References OPC_IO_ITEM, WN_Create(), WN_io_item(), WN_kid0(), WN_kid1(), and WN_set_ty().
Definition at line 1457 of file wn.cxx.
References OPC_IO_ITEM, WN_Create(), WN_io_item(), WN_kid(), WN_kid0(), WN_kid1(), and WN_set_ty().
Definition at line 1471 of file wn.cxx.
References OPC_IO_ITEM, WN_Create(), WN_io_item(), and WN_set_ty().
| WN* WN_CreateIstore | ( | OPCODE | opc, | |
| WN_OFFSET | offset, | |||
| TY_IDX | ty, | |||
| WN * | value, | |||
| WN * | addr, | |||
| UINT | field_id = 0 | |||
| ) | [inline] |
Definition at line 791 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateIstore.
| WN* WN_CreateIstore | ( | OPERATOR | opr, | |
| TYPE_ID | rtype, | |||
| TYPE_ID | desc, | |||
| WN_OFFSET | offset, | |||
| TY_IDX | ty, | |||
| WN * | value, | |||
| WN * | addr, | |||
| UINT | field_id = 0 | |||
| ) |
Definition at line 1120 of file wn.cxx.
References FLD_get_to_field(), FLD_type, Get_Current_PU, Is_True, MTYPE_I4, MTYPE_I8, MTYPE_is_pointer, MTYPE_M, MTYPE_U4, MTYPE_U8, NULL, opc, OPC_I4I8CVT, OPC_I4U8CVT, OPC_U4I8CVT, OPC_U4U8CVT, OPCODE_desc(), OPCODE_is_expression(), OPCODE_make_op(), OPR_BAND, OPR_CVT, OPR_CVTL, OPR_INTCONST, OPR_ISTBITS, OPR_ISTORE, Set_PU_has_very_high_whirl(), tmp, TY_pointed, TY_size, Types_Are_Compatible(), UINT, UINT64, WN_const_val(), WN_Create(), WN_cvtl_bits(), WN_kid0(), WN_kid1(), WN_MAP_Set, WN_MAP_UNDEFINED, WN_opcode(), WN_operator(), WN_rtype(), WN_set_field_id(), WN_set_ty(), WN_SimplifyIstore(), WN_SimpParentMap, and WN_store_offset().
Definition at line 805 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateIstorex.
| WN* WN_CreateIstorex | ( | OPERATOR | opr, | |
| TYPE_ID | rtype, | |||
| TYPE_ID | desc, | |||
| TY_IDX | ty, | |||
| WN * | value, | |||
| WN * | addr1, | |||
| WN * | addr2 | |||
| ) |
Definition at line 1218 of file wn.cxx.
References Is_True, opc, OPCODE_is_expression(), OPCODE_make_op(), OPCODE_operator(), OPR_ISTOREX, OPR_LDID, WN_Create(), WN_kid(), WN_kid0(), WN_kid1(), WN_opcode(), WN_operator_is, WN_set_ty(), and WN_store_offset().
Definition at line 1021 of file wn.cxx.
References INT, Is_True, NULL, OPC_LABEL, OPC_LOOP_INFO, WN_Create(), WN_label_flag(), WN_label_number(), WN_opcode(), and WN_set_label_loop_info.
Definition at line 1463 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateLda.
Definition at line 946 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateLda.
| WN* WN_CreateLda | ( | OPERATOR | opr, | |
| TYPE_ID | rtype, | |||
| TYPE_ID | desc, | |||
| WN_OFFSET | offset, | |||
| TY_IDX | ty, | |||
| ST_IDX | st, | |||
| UINT | field_id = 0 | |||
| ) | [inline] |
Definition at line 1838 of file wn.cxx.
References Is_True, MTYPE_is_pointer, opc, OPCODE_make_op(), OPCODE_operator(), OPCODE_rtype(), OPR_LDA, WN_Create(), WN_load_offset(), WN_set_field_id(), WN_set_ty(), and WN_st_idx().
| WN* WN_CreateLdid | ( | OPCODE | opc, | |
| WN_OFFSET | offset, | |||
| ST_IDX | st, | |||
| TY_IDX | ty, | |||
| UINT | field_id = 0 | |||
| ) | [inline] |
Definition at line 933 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateLdid.
| WN* WN_CreateLdid | ( | OPERATOR | opr, | |
| TYPE_ID | rtype, | |||
| TYPE_ID | desc, | |||
| WN_OFFSET | offset, | |||
| ST_IDX | st, | |||
| TY_IDX | ty, | |||
| UINT | field_id = 0 | |||
| ) | [inline] |
Definition at line 1793 of file wn.cxx.
References DevWarn, Float32_Preg, Float64_Preg, Int32_Preg, Int64_Preg, Is_True, MTYPE_byte_size, opc, OPCODE_make_op(), OPR_LDBITS, OPR_LDID, St_Table, WN_Create(), WN_Cvt(), WN_load_offset(), WN_set_field_id(), WN_set_ty(), and WN_st_idx().
Definition at line 3041 of file wn.cxx.
References MTYPE_V, OPR_LDMA, WN_Create(), WN_load_offset(), WN_set_ty(), and WN_st_idx().
Definition at line 2184 of file wn.cxx.
References INT16, Is_True, NULL, OPC_LOOP_INFO, WN_Create(), WN_loop_depth(), WN_loop_flag(), WN_loop_trip_est(), WN_set_loop_induction, and WN_set_loop_trip.
Definition at line 1767 of file wn.cxx.
References Is_True, MTYPE_I4, MTYPE_I8, MTYPE_is_pointer, MTYPE_U4, MTYPE_U8, OPC_MLOAD, WN_CreateExp2, WN_load_offset(), WN_rtype(), and WN_set_ty().
Definition at line 1256 of file wn.cxx.
References Get_Current_PU, Is_True, MTYPE_I4, MTYPE_I8, MTYPE_is_pointer, MTYPE_U4, MTYPE_U8, OPC_MSTORE, OPCODE_is_expression(), Set_PU_has_very_high_whirl(), WN_Create(), WN_kid(), WN_kid0(), WN_kid1(), WN_opcode(), WN_rtype(), WN_set_ty(), and WN_store_offset().
Definition at line 2301 of file wn.cxx.
References Is_True, MTYPE_V, NULL, OPC_VPARM, OPCODE_is_expression(), OPCODE_make_op(), OPR_PARM, Types_Are_Compatible(), WN_CreateExp0, WN_CreateExp1, WN_opcode(), WN_set_flag(), and WN_set_ty().
| WN* WN_CreatePragma | ( | WN_PRAGMA_ID | pragma_name, | |
| ST_IDX | st, | |||
| INT32 | arg1, | |||
| PREG_NUM | asm_copyout_preg, | |||
| UINT32 | asm_opnd_num | |||
| ) | [inline] |
Definition at line 1510 of file wn.cxx.
References Is_True, OPC_PRAGMA, WN_Create(), WN_pragma(), WN_pragma_arg1(), WN_PRAGMA_ASM_CONSTRAINT, WN_pragma_flags(), WN_set_pragma_asm_copyout_preg(), WN_set_pragma_asm_opnd_num(), and WN_st_idx().
| WN* WN_CreatePragma | ( | WN_PRAGMA_ID | pragma_name, | |
| ST_IDX | st, | |||
| INT32 | arg1, | |||
| INT32 | arg2 | |||
| ) | [inline] |
Definition at line 1495 of file wn.cxx.
References OPC_PRAGMA, WN_Create(), WN_pragma(), WN_pragma_arg1(), WN_pragma_arg2(), WN_pragma_flags(), and WN_st_idx().
Definition at line 1397 of file wn.cxx.
References Is_True, MTYPE_is_pointer, OPC_PREFETCH, WN_Create(), WN_kid0(), WN_offset(), WN_rtype(), and WN_set_flag().
Definition at line 1241 of file wn.cxx.
References Is_True, OPC_PREFETCHX, OPR_LDID, WN_Create(), WN_kid0(), WN_kid1(), WN_operator_is, and WN_set_flag().
Definition at line 1020 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateRcomma.
Definition at line 1947 of file wn.cxx.
References Get_Current_PU, Is_True, opc, OPC_BLOCK, OPCODE_is_expression(), OPCODE_make_op(), Set_PU_has_very_high_whirl(), WN_Create(), WN_kid0(), WN_kid1(), and WN_opcode().
| WN* WN_CreateRegion | ( | REGION_KIND | kind, | |
| WN * | body, | |||
| WN * | pragmas, | |||
| WN * | exits, | |||
| INT | region_id, | |||
| INITO_IDX | ereg_supp | |||
| ) |
Definition at line 872 of file wn.cxx.
References Get_Current_PU, Is_True, New_Region_Id(), OPC_REGION, OPCODE_is_scf(), Set_PU_has_region, wn, WN_block_element(), WN_Create(), WN_ereg_supp(), WN_Get_Linenum(), WN_opcode(), WN_region_body, WN_region_exits, WN_region_pragmas, WN_Set_Linenum(), WN_set_region_id(), and WN_set_region_kind().
Definition at line 893 of file wn.cxx.
References OPC_REGION_EXIT, wn, WN_Create(), and WN_label_number().
Definition at line 763 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateReturn_Val.
| WN* WN_CreateStid | ( | OPCODE | opc, | |
| WN_OFFSET | offset, | |||
| ST * | st, | |||
| TY_IDX | ty, | |||
| WN * | value, | |||
| UINT | field_id = 0 | |||
| ) | [inline] |
Definition at line 825 of file wn.h.
References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateStid.
| WN* WN_CreateStid | ( | OPERATOR | opr, | |
| TYPE_ID | rtype, | |||
| TYPE_ID | desc, | |||
| WN_OFFSET | offset, | |||
| ST * | st, | |||
| TY_IDX | ty, | |||
| WN * | value, | |||
| UINT | field_id = 0 | |||
| ) | [inline] |
Definition at line 1294 of file wn.cxx.
References CLASS_PREG, CURRENT_SYMTAB, DevWarn, FLD_get_to_field(), FLD_type, Float32_Preg, Float64_Preg, Get_Current_PU, GLOBAL_SYMTAB, Int32_Preg, Int64_Preg, Is_True, MTYPE_byte_size, MTYPE_M, opc, OPC_I4I8CVT, OPC_I4U8CVT, OPC_U4I8CVT, OPC_U4U8CVT, OPCODE_desc(), OPCODE_is_expression(), OPCODE_make_op(), OPR_BAND, OPR_CVT, OPR_CVTL, OPR_INTCONST, OPR_STBITS, OPR_STID, Set_PU_has_very_high_whirl(), ST_class, ST_st_idx, tmp, TY_size, Types_Are_Compatible(), UINT, UINT64, WN_const_val(), WN_Create(), WN_Cvt(), WN_cvtl_bits(), WN_kid0(), WN_kid1(), WN_opcode(), WN_operator(), WN_rtype(), WN_set_field_id(), WN_set_ty(), WN_st_idx(), and WN_store_offset().
Definition at line 1064 of file wn.cxx.
References Get_Current_PU, Is_True, OPC_BLOCK, OPC_GOTO, OPC_SWITCH, OPCODE_is_expression(), Set_PU_has_very_high_whirl(), WN_Create(), WN_last_label(), WN_num_entries(), WN_opcode(), WN_switch_default, WN_switch_table, and WN_switch_test.
Definition at line 974 of file wn.cxx.
References Is_True, OPC_TRUEBR, OPCODE_is_expression(), WN_Create(), WN_kid0(), WN_label_number(), and WN_opcode().
Definition at line 769 of file wn.cxx.
References Is_True, OPC_BLOCK, OPC_WHILE_DO, wn, WN_Create(), WN_opcode(), WN_while_body, and WN_while_test.
Definition at line 1102 of file wn.cxx.
References Is_True, OPC_BLOCK, OPC_XGOTO, OPCODE_is_expression(), WN_Create(), WN_kid(), WN_kid0(), WN_num_entries(), WN_opcode(), and WN_st_idx().
| WN* WN_CreateXpragma | ( | WN_PRAGMA_ID | pragma_name, | |
| ST_IDX | st, | |||
| INT16 | kid_count | |||
| ) | [inline] |
Definition at line 1532 of file wn.cxx.
References OPC_XPRAGMA, WN_Create(), WN_pragma(), WN_pragma_arg64(), WN_pragma_flags(), and WN_st_idx().
Definition at line 2429 of file wn.cxx.
References OPR_CVT, and WN_CreateExp1.
Referenced by aux_CvtRnd(), aux_CvtTrunc(), create_doloop(), em_prod(), F90_Lower_Create_Temp(), F90_Lower_Walk(), Gen_exp_wn(), Gen_MP_Reduction(), intrinsic_runtime(), lower_bit_field_id(), lower_complex_expr(), lower_float_to_unsigned(), lower_unsigned_to_float(), RETYPE_EXPR_expr(), Shrink_to_32bit(), vho_lower_cselect(), WFE_Expand_Expr(), WGEN_Expand_Expr(), WN_Coerce(), WN_CreateIload(), WN_CreateLdid(), WN_CreateStid(), WN_Float_Type_Conversion(), WN_Int_Type_Conversion(), and WN_Type_Conversion().
Definition at line 661 of file wn.cxx.
References FALSE, OPC_BLOCK, opcode, OPCODE_has_1ty(), OPCODE_has_2ty(), OPCODE_has_bits(), OPCODE_has_esize(), OPCODE_has_flags(), OPCODE_has_inumber(), OPCODE_has_label(), OPCODE_has_ndim(), OPCODE_has_num_entries(), OPCODE_has_offset(), OPCODE_has_sym(), OPCODE_has_value(), TRUE, WN_const_val(), WN_cvtl_bits(), WN_element_size(), WN_flag(), WN_intrinsic(), WN_kid_count(), WN_label_number(), WN_load_addr_ty(), WN_num_dim, WN_num_entries(), WN_offset(), WN_opcode(), WN_st_idx(), and WN_ty().
Referenced by Compare_Bounds(), REDUCTION_MANAGER::Equiv(), Equiv(), Equiv_Expression(), Equivalent(), lower_bit_field_id(), DSE::Mem_WN_equiv(), Same_Invariant_Expression(), and Tree_Equiv().
Definition at line 2489 of file wn.cxx.
References Create_Simd_Const(), FALSE, Host_To_Targ_Float(), Is_True, Make_Const(), MTYPE_C10, MTYPE_C4, MTYPE_C8, MTYPE_CQ, MTYPE_F10, MTYPE_F16, MTYPE_F4, MTYPE_F8, MTYPE_FQ, and NULL.
Referenced by aux_nearest(), em_aint(), em_alog10(), em_complex_sqrt_preg(), em_exp_int(), em_nearest_aint(), em_nearest_int(), em_preg_hypot(), expand_start_parallel(), expand_start_parallel_for(), expand_start_parallel_sections(), lower_bit_field_id(), lower_complex_expr(), lower_recip(), lower_rsqrt(), WFE_Lhs_Of_Modify_Expr(), WGEN_Lhs_Of_Modify_Expr(), and WN_Inverse().
Definition at line 2449 of file wn.cxx.
References OPR_FLOOR, and WN_CreateExp1.
Referenced by lower_float_to_unsigned().
Definition at line 2676 of file wn.cxx.
References call(), Mtype_complex_to_real(), MTYPE_is_complex, WN_Create(), and WN_st_idx().
Referenced by Convert_virtual_call(), lower_bit_field_id(), and Replace_Icall().
| WN* WN_generic_intrinsic | ( | OPERATOR | opr, | |
| TYPE_ID | rtype, | |||
| TYPE_ID | desc, | |||
| INT32 | n, | |||
| INTRINSIC | intrinsic | |||
| ) |
Definition at line 2021 of file wn.cxx.
References Is_True, OPC_COMMENT, ST_name_idx(), WN_opcode(), and WN_st().
Referenced by Expand_Statement(), ANL_LOOP_CONSTRUCT::Is_End_Of_Loop_Comment(), WN2C_comment(), WN2C_Skip_Stmt(), and WN2F_comment().
Definition at line 3208 of file wn.cxx.
References Fail_FmtAssertion(), FALSE, INT32, n, OPERATOR_name(), OPR_ABS, OPR_ADD, OPR_ALLOCA, OPR_ARRAY, OPR_ARRAYEXP, OPR_ARRSECTION, OPR_ASHR, OPR_ASM_INPUT, OPR_BAND, OPR_BIOR, OPR_BNOR, OPR_BNOT, OPR_BXOR, OPR_CAND, OPR_CEIL, OPR_CIOR, OPR_COMMA, OPR_COMPOSE_BITS, OPR_CONST, OPR_CSELECT, OPR_CVT, OPR_CVTL, OPR_DIV, OPR_DIVREM, OPR_EQ, OPR_EXTRACT_BITS, OPR_FIRSTPART, OPR_FLOOR, OPR_GE, OPR_GT, OPR_HIGHMPY, OPR_HIGHPART, OPR_IDNAME, OPR_ILDA, OPR_ILDBITS, OPR_ILOAD, OPR_ILOADX, OPR_INTCONST, OPR_INTRINSIC_OP, OPR_IO, OPR_IO_ITEM, OPR_ISTBITS, OPR_ISTORE, OPR_ISTOREX, OPR_LAND, OPR_LDA, OPR_LDA_LABEL, OPR_LDBITS, OPR_LDID, OPR_LDMA, OPR_LE, OPR_LIOR, OPR_LNOT, OPR_LOWPART, OPR_LSHR, OPR_LT, OPR_MADD, OPR_MAX, OPR_MAXPART, OPR_MIN, OPR_MINMAX, OPR_MINPART, OPR_MLOAD, OPR_MOD, OPR_MPY, OPR_MSTORE, OPR_MSUB, OPR_NE, OPR_NEG, OPR_NMADD, OPR_NMSUB, OPR_OPTPARM, OPR_PAIR, OPR_PAREN, OPR_PARM, OPR_RCOMMA, OPR_RECIP, OPR_REM, OPR_RND, OPR_RROTATE, OPR_RSQRT, OPR_SECONDPART, OPR_SELECT, OPR_SHL, OPR_SQRT, OPR_STBITS, OPR_STID, OPR_SUB, OPR_TAS, OPR_TRIPLET, OPR_TRUNC, OPR_WHERE, OPR_XMPY, TRUE, TY_is_volatile, WN_has_side_effects(), WN_kid(), WN_kid0(), WN_kid1(), WN_kid2(), WN_kid_count(), WN_load_addr_ty(), WN_operator(), and WN_ty().
Referenced by expand_start_do_loop(), Expand_Statement(), simp_cand(), WFE_Address_Of(), WFE_Expand_Expr(), WFE_Expand_Return(), WFE_Lhs_Of_Modify_Expr(), WFE_One_Stmt(), WGEN_Address_Of(), WGEN_Array_Expr(), WGEN_Expand_Expr(), WGEN_Expand_Return(), WGEN_Lhs_Of_Modify_Expr(), WGEN_One_Stmt(), WGEN_process_omp_clause(), WN_CreateExp2(), WN_CreateExp3(), and WN_has_side_effects().
Definition at line 2655 of file wn.cxx.
References call(), OPR_ICALL, WN_Create(), and WN_set_ty().
Referenced by lower_bit_field_id().
Definition at line 2375 of file wn.cxx.
References Make_Pointer_Type(), Mtype_comparison(), OPR_ILOAD, TYPE_ID, and WN_CreateIload.
Referenced by analyze_addressof_ty_being_split(), by_value(), Create_Io_Entry(), cwh_io_split_io_items(), Gen_MP_Reduction(), handle_kid_of_istore(), lower_bit_field_id(), lower_complex_expr(), lower_io_items(), lower_maxminloc(), lower_quad_expr(), lower_store_bits(), WFE_Expand_Expr(), WFE_Expand_Return(), WGEN_Expand_Expr(), WGEN_Expand_Return(), and WN_IloadLdid().
Definition at line 2421 of file wn.cxx.
References Pointer_type, ST_type, WN_Iload(), and WN_Ldid().
Referenced by Gen_MP_Copyin(), and lower_bit_field_id().
Definition at line 2723 of file wn.cxx.
References FALSE, FmtAssert, Is_True, MTYPE_I1, MTYPE_I2, MTYPE_I4, MTYPE_I8, MTYPE_U1, MTYPE_U2, MTYPE_U4, MTYPE_U8, OPC_I4CVTL, OPC_I8CVTL, OPC_U4CVTL, OPC_U8CVTL, TYPE_ID, WN_CreateCvtl, WN_Cvt(), and WN_rtype().
Referenced by cwh_inline_allocate(), Gen_exp_wn(), LWN_Int_Type_Conversion(), IPO_INLINE::Process_Formal_ST(), WGEN_Expand_Expr(), WN_mask(), and WN_Type_Conversion().
Definition at line 2325 of file wn.cxx.
References MTYPE_V, OPR_INTCONST, and WN_CreateIntconst.
Referenced by add_offset(), Convert_Section_To_Pdo(), Copy_Struct(), Create_DopeVector_WN(), create_pointer_to_node(), Create_TY_For_Tree(), cwh_addr_address_ST(), cwh_addr_iload(), cwh_addr_insert_bounds_check(), cwh_addr_istore(), cwh_addr_lda(), cwh_addr_mload(), cwh_addr_mstore(), cwh_addr_nonc_recast(), cwh_addr_substr_util(), cwh_addr_temp_section(), cwh_addr_ubound_from_triplet(), cwh_dope_from_expression(), cwh_dope_initialize(), cwh_expr_address(), cwh_expr_binop_shift(), cwh_generate_bitmask(), cwh_inline_allocate(), cwh_io_conv_array_to_dope(), cwh_io_conv_arrsection_to_dope(), cwh_stmt_add_parallel_pragmas(), cwh_stmt_insert_conformance_check(), cwh_types_array_temp_TY(), cwh_types_bound_WN(), cwh_types_mk_namelist_item_TY(), cwh_types_mk_namelist_TY(), cwh_types_size_WN(), DRA_EC_Array_Portion_Parms(), DRA_Insert_Pragmas(), em_alloca(), em_bclr(), em_bits(), em_bset(), em_btest(), em_divfloor(), em_exp_float(), em_exp_int(), em_lshr(), em_parity(), em_popcount(), em_shft(), em_shftc(), em_shl(), expand_start_parallel(), expand_start_parallel_for(), expand_start_parallel_sections(), Extract_Do_Info(), F90_Lower_Alloc_Dealloc(), F90_Size_Walk(), fei_allocate(), fei_as_ref(), fei_cot(), fei_count(), fei_cvtop(), fei_descriptor(), fei_doloop(), fei_fcd(), fei_get_dv_hdr_fld(), fei_ieee_sign_xfer(), fei_logb(), fei_mask(), fei_new_binop_cshift(), fei_pos_diff(), fei_present(), fei_redistribute(), fei_set_dv_hdr_fld(), fei_store(), format_rhs_atomic_stmt(), Gen_Assign_Of_Init_Val(), EDGE_PROFILE::Gen_Call_BB(), Gen_Critical(), Gen_Fork(), Gen_Malloc_Cart(), Gen_MP_Copyin(), Gen_MP_Load_Store(), Gen_WN_Const(), Get_ARB_WN(), Get_Array_Dim_Size(), Get_Frozen_Numthreads_Ldid(), handle_compare(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Branch(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Call(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Circuit(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Compgoto(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Icall(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Invoke(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Loop(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Switch(), Insert_Alloca(), WN_INSTRUMENT_WALKER::Instrument_Branch(), WN_INSTRUMENT_WALKER::Instrument_Call(), WN_INSTRUMENT_WALKER::Instrument_Circuit(), WN_INSTRUMENT_WALKER::Instrument_Compgoto(), WN_INSTRUMENT_WALKER::Instrument_Cselect(), WN_INSTRUMENT_WALKER::Instrument_Icall(), WN_INSTRUMENT_WALKER::Instrument_Invoke(), WN_INSTRUMENT_WALKER::Instrument_Loop(), WN_INSTRUMENT_WALKER::Instrument_Switch(), intrinsic_runtime(), Localize_Variable(), lower_base_reference(), lower_bit_field_id(), lower_cshift(), lower_dereference(), lower_eoshift(), lower_linearize_array_addr(), lower_load_bits(), lower_maxminloc(), lower_mp(), lower_pack(), lower_store_bits(), lower_unpack(), process_concatexpr(), IPO_INLINE::Process_Formal_ST(), Process_Parallel_Do(), Process_PDO(), Rename_Privatized_COMMON(), WN_UNROLL::Replicate_expr(), Save_And_Restore_Stack(), Summary_value_to_intconst(), Traverse_Aggregate_Pad(), AGGINIT::Traverse_Aggregate_Pad(), AGGINIT::Traverse_Aggregate_Struct(), WN_INSTRUMENT_WALKER::Tree_Walk(), U64_LOWER_create_ne_0(), WN_UNROLL::Unroll(), vho_lower_expr(), WFE_Address_Of(), WFE_Alloca_ST(), WFE_Array_Expr(), WFE_Expand_End_Loop(), WFE_Expand_Exit_Loop_If_False(), WFE_Expand_Expr(), WFE_Expand_Expr_With_Sequence_Point(), WFE_Expand_Loop(), WFE_Generate_Thunk(), WGEN_add_guard_var(), WGEN_Address_Of(), WGEN_Adjust_Thunk(), WGEN_Array_Expr(), WGEN_Expand_Expr(), WGEN_Expand_Expr_With_Sequence_Point(), WGEN_Expand_Loop(), WGEN_generate_non_pod_lastlocal_finalization(), WGEN_Generate_Thunk(), WN2C_array(), WN_ConstPowerOf2(), WN_I1const(), WN_Inverse(), WN_mask(), WN_UNROLL::WN_UNROLL(), WN_UVConst(), and WN_Zerocon().
Definition at line 2607 of file wn.cxx.
References FALSE, MTYPE_float, MTYPE_is_quad, Recip_Allowed, TRUE, WN_Div, WN_Floatconst(), WN_Intconst(), and WN_Recip.
Referenced by em_exp_int(), and lower_complex_expr().
| WN* WN_Istore | ( | TYPE_ID | desc, | |
| WN_OFFSET | offset, | |||
| TY_IDX | align, | |||
| WN * | addr, | |||
| WN * | value, | |||
| UINT | field_id = 0 | |||
| ) |
Definition at line 2398 of file wn.cxx.
References MTYPE_V, OPR_ISTORE, and WN_CreateIstore.
Referenced by Create_Io_Entry(), cwh_io_split_io_items(), F90_Lower_Copy_To_ATemp(), Gen_Assign_Of_Init_Val(), Gen_MP_Reduction(), lower_base_reference(), lower_bit_field_id(), lower_dereference(), lower_io_items(), lower_maxminloc(), IPO_INLINE::Process_Copy_In_Copy_Out(), IPO_INLINE::Process_Formal_ST(), AGGINIT::Traverse_Aggregate_Struct(), WFE_Expand_Expr(), and WGEN_Expand_Expr().
Definition at line 2625 of file wn.cxx.
References CLASS_BLOCK, CLASS_FUNC, Is_True, Make_Align_Type(), Make_Pointer_Type(), MTYPE_To_TY, MTYPE_V, OPR_LDA, ST_class, ST_pu_type, ST_type, STB_align, and WN_CreateLda.
Referenced by AGGINIT::Add_Inito_For_Tree(), Add_Inito_For_Tree(), address_of(), Copy_Struct(), create_lda_of_temp(), create_pointer_to_node(), emit_barrier(), extract_calls(), F90_Lower_Copy_To_STemp(), Gen_Assign_Of_Init_Val(), Gen_Critical(), Gen_End_Critical(), Gen_Flush(), Gen_Fork(), Gen_Io_Calls(), Gen_MP_Copyin(), Gen_MP_Load_Store(), Gen_MP_Reduction(), Generate_Barriers(), Generate_cyg_profile_func(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Compgoto(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Switch(), intrinsic_runtime(), IPA_Rename_Builtins(), lower_base_reference(), lower_bit_field_id(), lower_maxminloc(), lower_merge(), lower_unpack(), make_pointer_to_node(), process_concatexpr(), Transform_Do(), Traverse_Aggregate_Pad(), AGGINIT::Traverse_Aggregate_Pad(), WN_INSTRUMENT_WALKER::Tree_Walk(), Walk_and_Localize(), WFE_Address_Of(), WFE_Array_Expr(), Wfe_Expand_Asm_Operands(), WFE_Expand_Expr(), WFE_Generate_Temp_For_Initialized_Aggregate(), WFE_Initialize_Decl(), WFE_maybe_call_copy_ctor(), WFE_maybe_call_default_ctor(), WGEN_Address_Of(), WGEN_Array_Expr(), Wgen_Expand_Asm_Operands(), WGEN_Expand_Expr(), WGEN_Expand_Ptr_To_Member_Func_Call_Expr(), WGEN_Generate_Temp_For_Initialized_Aggregate(), WGEN_Initialize_Decl(), WGEN_maybe_call_assignment_opr(), WGEN_maybe_call_copy_ctor(), WGEN_maybe_call_default_ctor(), WGEN_Process_Initialization(), and WN_LdaString().
Definition at line 2644 of file wn.cxx.
References Be_Type_Tbl, Make_Pointer_Type(), MTYPE_V, OPR_LDA_LABEL, WN_Create(), WN_label_number(), and WN_set_ty().
Referenced by Gen_exp_wn(), Generate_cyg_profile_func(), WFE_Address_Of(), WFE_Expand_Expr(), WGEN_Address_Of(), and WGEN_Expand_Expr().
Definition at line 3003 of file wn.cxx.
References FALSE, Gen_String_Sym(), Host_To_Targ_String(), MTYPE_STRING, MTYPE_To_TY, Pointer_type, and WN_Lda().
Referenced by cwh_addr_insert_bounds_check(), cwh_stmt_insert_conformance_check(), EDGE_PROFILE::Gen_Call_BB(), WN_INSTRUMENT_WALKER::Instrument_Call(), lower_bit_field_id(), and WN_INSTRUMENT_WALKER::Tree_Walk().
| WN* WN_Ldid | ( | TYPE_ID | desc, | |
| WN_OFFSET | offset, | |||
| ST_IDX | sym, | |||
| TY_IDX | align, | |||
| UINT | field_id = 0 | |||
| ) | [inline] |
Definition at line 2330 of file wn.cxx.
References Mtype_comparison(), OPR_LDID, TYPE_ID, and WN_CreateLdid.
Referenced by analyze_addressof_ty_being_split(), Atomic_Using_Swap(), by_value(), CFG::Conv_to_select(), Copy_Non_Constant_Parm(), Create_Io_Entry(), Create_MicroTask(), Create_TY_For_Tree(), cwh_io_split_io_items(), DRA_EC_Array_Portion_Parms(), emit_builtin_compare_and_swap(), emit_builtin_lock_test_and_set(), emit_builtin_sync_fetch_op(), expand_start_do_loop(), extract_calls(), F90_Lower_Copy_To_ATemp(), F90_Lower_Create_Temp(), fei_doloop(), Gen_Assign_Of_Init_Val(), Gen_Free_Cart(), Gen_Io_Calls(), Gen_quad_preg(), Gen_Serialized_Parallel(), Generate_Barriers(), Generate_cyg_profile_func(), ARA_LOOP_INFO::Generate_Parallel_Pragma(), get_first_dimension_ubound(), Get_Gtid(), Get_ST_Ldid(), handle_assignment(), handle_compare(), handle_function_return(), handle_istore_assignment(), handle_kid_of_istore(), lower_bit_field_id(), lower_complex_expr(), lower_dereference(), CFG::Lower_if_stmt(), lower_io_items(), lower_mp(), lower_quad_expr(), lower_reduction(), lower_store_bits(), Process_Actual(), IPO_INLINE::Process_Copy_In(), IPO_INLINE::Process_Copy_In_Copy_Out(), WN_INSTRUMENT_WALKER::PU_Handle(), REGION_Exit_PREG_Whirl(), Replace_Formal_By_LDA(), Rewrite_Do(), Transform_Do(), WN_INSTRUMENT_WALKER::Tree_Walk_Node(), vho_lower_comma(), vho_lower_cselect(), vho_lower_xpragma(), WFE_Address_Of(), WFE_Array_Expr(), WFE_Dealloca(), WFE_Expand_Expr(), WFE_Expand_Return(), WFE_Expand_Start_Case(), WFE_Generate_Thunk(), WFE_Lhs_Of_Modify_Expr(), WFE_Save_Expr(), WGEN_Address_Of(), WGEN_Array_Expr(), WGEN_Dealloca(), WGEN_Expand_Expr(), WGEN_Expand_Math_Errno_Sqrt(), WGEN_Expand_Return(), WGEN_Expand_Start_Case(), WGEN_generate_non_pod_lastlocal_finalization(), WGEN_Generate_Thunk(), WGEN_Lhs_Of_Modify_Expr(), WGEN_process_omp_clause(), WGEN_Save_Expr(), WN_IloadLdid(), and WN_LdidPreg().
Definition at line 2345 of file wn.cxx.
References MTYPE_To_PREG, ST_type, and WN_Ldid().
Referenced by Atomic_Using_Swap(), aux_nearest(), build_mult_tree(), checkForZero(), Convert_Section_To_Pdo(), create_doloop(), Create_Io_Entry(), cwh_addr_do_bounds_check(), cwh_inline_allocate(), cwh_intrin_get_return_value(), cwh_io_split_io_items(), cwh_preg_temp_save(), cwh_stmt_insert_conformance_check(), em_aint(), em_alloca(), em_bclr(), em_bits(), em_bset(), em_btest(), em_complex_abs(), em_complex_cos(), em_complex_exp(), em_complex_log(), em_complex_sin(), em_complex_sqrt_preg(), em_conjg(), em_dim(), em_divfloor(), em_exp_float(), em_exp_int(), em_lshr(), em_mod_float(), em_nearest_aint(), em_nearest_int(), em_parity(), em_popcount(), em_preg_hypot(), em_quad_abs(), em_quad_neg(), em_readstackpointer(), em_setstackpointer(), em_shft(), em_shftc(), em_shl(), em_sign(), em_split_select(), extract_calls(), F90_Lower_Alloc_Dealloc(), F90_Lower_Copy_To_STemp(), F90_Lower_Walk(), fei_doloop(), Gen_Auto_Alloca(), Gen_Critical(), Gen_Fork(), Gen_MP_Reduction(), Gen_MP_SingleProcess_Block(), Gen_quad_preg(), Gen_Save_Stack_Pointer(), Gen_Store_Gtid(), WN_INSTRUMENT_WALKER::Instrument_Branch(), WN_INSTRUMENT_WALKER::Instrument_Circuit(), WN_INSTRUMENT_WALKER::Instrument_Compgoto(), WN_INSTRUMENT_WALKER::Instrument_Cselect(), WN_INSTRUMENT_WALKER::Instrument_Switch(), intrinsic_runtime(), Load_Leaf(), lower_bit_field_id(), lower_complex_expr(), lower_cshift(), lower_eoshift(), lower_io_items(), lower_io_statement(), Lower_Master(), lower_maxminloc(), lower_mm_matmul(), lower_mp(), lower_mv_matmul(), lower_pack(), lower_random_number(), lower_record_items(), lower_reduction(), lower_rsqrt(), lower_unpack(), Process_Preg_Temps(), REGION_Entry_PREG_Whirl(), REGION_Exit_PREG_Whirl(), Replace_store_of_ded_reg(), Save_And_Restore_Stack(), Transform_Do(), WN_INSTRUMENT_WALKER::Tree_Walk(), WN_INSTRUMENT_WALKER::Tree_Walk_Node(), WFE_Expand_Expr(), WGEN_Expand_Expr(), and WN_mask().
Definition at line 388 of file wn.cxx.
References MEM_POOL_Initialize, MEM_POOL_Pop, NULL, TRUE, and WN_mem_pool_initialized.
Referenced by PDGCS_do_proc(), and Postprocess_PU().
Definition at line 369 of file wn.cxx.
References MEM_POOL_Initialize, MEM_POOL_Push, TRUE, and WN_mem_pool_initialized.
Referenced by cwh_pdgcs_pu_mem(), and Preprocess_PU().
Definition at line 482 of file wn.cxx.
References delete_cleanup_fns, FmtAssert, MAX_CLEANUP_FNS, and UINT16.
Referenced by Build_Array_Dependence_Graph(), Build_CG_Dependence_Graph(), and Lnoptimizer().
Definition at line 2454 of file wn.cxx.
References Boolean_type, and WN_CreateExp2.
Referenced by WN_INSTRUMENT_WALKER::Instrument_Branch(), WN_INSTRUMENT_WALKER::Instrument_Circuit(), WN_INSTRUMENT_WALKER::Instrument_Cselect(), WN_UNROLL::Unroll(), WFE_Address_Of(), WFE_Expand_Expr(), WFE_Expand_Expr_With_Sequence_Point(), WFE_Lhs_Of_Modify_Expr(), WGEN_Address_Of(), WGEN_Expand_Expr(), WGEN_Expand_Expr_With_Sequence_Point(), WGEN_Expand_Math_Errno_Sqrt(), and WGEN_Lhs_Of_Modify_Expr().
Definition at line 501 of file wn.cxx.
References delete_cleanup_fns, and UINT16.
Referenced by Lnoptimizer().
Definition at line 1143 of file wn_verifier.cxx.
References calloc(), Cur_PU_Name, Current_PU_Info, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Enter(), Fail_FmtAssertion(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), INT, Is_True, LABEL_IDX_index(), LABEL_IDX_level(), LABEL_Init(), LABEL_kind(), New_LABEL(), OPR_LABEL, OPR_REGION, PU_Info_proc_sym, References_Some_Label(), Rename_INITV_Labels(), Save_Str(), Scope_tab, sprintf(), ST_name, strlen(), strsize, TRUE, User_Label_Number_Format, wn, wn_iter::wn, WN_ereg_supp(), WN_Has_Label(), WN_HAS_LABEL, WN_HAS_LAST_LABEL, WN_HAS_NO_LABELS, WN_label_number(), WN_last_label(), WN_operator(), WN_WALK_TreeIter(), and WN_WALK_TreeNext().
Referenced by HMB_Hoist_Messy_Bounds(), WN_INSTRUMENT_WALKER::Instrument_Icall(), Mp_Version_Loop(), Mp_Version_Parallel_Region(), Post_loop_peeling(), Pre_loop_peeling(), Version_Loop(), and Version_Region().
Definition at line 2339 of file wn.cxx.
References OPR_LDID, and WN_CreateLdid.
Referenced by Add_Ordered_XPragmas(), AWN_LdidSym(), Fill_Align_Symbol(), Gen_MP_Load(), Gen_MP_Load_Store(), Localize_Variable(), Process_Preg_Temps(), Rewrite_Do(), Rewrite_Do_New(), and Walk_and_Localize().
Definition at line 2439 of file wn.cxx.
References OPR_RND, and WN_CreateExp1.
Referenced by aux_CvtRnd(), and em_nearest_int().
Definition at line 2573 of file wn.cxx.
References INT32, Is_True, MTYPE_size_reg, n, NBITMASK, OPR_INTCONST, size, TYPE_ID, UINT64, WN_const_val(), WN_operator_is, and WN_rtype().
Referenced by lower_bit_field_id().
Definition at line 3430 of file wn.cxx.
References Get_Current_PU, Mtype_comparison(), OPR_RROTATE, Set_PU_has_very_high_whirl(), and WN_CreateExp2.
Referenced by WFE_Expand_Expr(), and WGEN_Expand_Expr().
Definition at line 3057 of file wn.cxx.
References CLASS_FUNC, CLASS_VAR, Fail_FmtAssertion(), OPERATOR_name(), OPR_ABS, OPR_ADD, OPR_ALLOCA, OPR_ARRAY, OPR_ASHR, OPR_BAND, OPR_BIOR, OPR_BNOR, OPR_BNOT, OPR_BXOR, OPR_CALL, OPR_CAND, OPR_CEIL, OPR_CIOR, OPR_COMMA, OPR_COMPLEX, OPR_COMPOSE_BITS, OPR_CONST, OPR_CSELECT, OPR_CVT, OPR_CVTL, OPR_DIV, OPR_DIVREM, OPR_EQ, OPR_EVAL, OPR_EXTRACT_BITS, OPR_FLOOR, OPR_GE, OPR_GT, OPR_HIGHMPY, OPR_HIGHPART, OPR_ILOAD, OPR_IMAGPART, OPR_INTCONST, OPR_INTRINSIC_OP, OPR_LAND, OPR_LDA, OPR_LDID, OPR_LDMA, OPR_LE, OPR_LIOR, OPR_LNOT, OPR_LOWPART, OPR_LSHR, OPR_LT, OPR_MAX, OPR_MAXPART, OPR_MIN, OPR_MINMAX, OPR_MINPART, OPR_MLOAD, OPR_MOD, OPR_MPY, OPR_NE, OPR_NEG, OPR_OPTPARM, OPR_PAREN, OPR_PARM, OPR_RCOMMA, OPR_REALPART, OPR_RECIP, OPR_REM, OPR_RND, OPR_RSQRT, OPR_SELECT, OPR_SHL, OPR_SQRT, OPR_SUB, OPR_TAS, OPR_TRUNC, Set_ST_addr_saved(), ST_class, WN_kid0(), WN_kid1(), WN_kid2(), WN_operator(), WN_set_st_addr_saved(), and WN_st().
Referenced by WN_set_st_addr_saved().
Definition at line 2170 of file wn.cxx.
References MAX, mUINT64, OPCODE_has_next_prev(), WN_kid_count(), WN_opcode(), and WN_prev().
Referenced by ir_b_write_tree().
| WN* WN_Stid | ( | TYPE_ID | desc, | |
| WN_OFFSET | offset, | |||
| ST * | sym, | |||
| TY_IDX | align, | |||
| WN * | value, | |||
| UINT | field_id = 0 | |||
| ) |
Definition at line 2353 of file wn.cxx.
References MTYPE_V, OPR_STID, and WN_CreateStid.
Referenced by AssignPregExprPos(), Atomic_Using_Swap(), convert_to_reference(), Copy_Scalar(), Copy_Struct(), Create_Copy_Expr(), Create_Copy_Expr_For_Ptr(), Create_Io_Entry(), create_lda_of_temp(), Create_ST_For_Tree(), Create_TY_For_Tree(), cwh_io_split_io_items(), emit_builtin_compare_and_swap(), emit_builtin_lock_test_and_set(), emit_builtin_sync_fetch_op(), expand_start_do_loop(), extract_calls(), F90_Lower_Create_Temp(), fei_doloop(), Gen_Assign_Of_Init_Val(), Gen_Auto_Alloca(), Gen_Critical(), Gen_MP_SingleProcess_Block(), Gen_MP_Store(), Gen_quad_preg(), Gen_Serialized_Parallel(), Gen_Store_Gtid(), Generate_Assignment_Stmt(), ARA_LOOP_INFO::Generate_Parallel_Pragma(), GenLocalTable(), handle_assignment(), handle_function_return(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Compgoto(), WN_INSTRUMENT_WALKER::Initialize_Instrumenter_Switch(), lower_bit_field_id(), lower_io_items(), lower_io_statement(), Lower_Master(), lower_mp(), lower_reduction(), make_pointer_to_node(), IPO_INLINE::Process_Copy_In_Copy_Out(), IPO_INLINE::Process_Op_Code(), Process_Preg_Temps(), REGION_Entry_PREG_Whirl(), Replace_Formal_By_LDA(), Rewrite_Do(), Transform_Do(), AGGINIT::Traverse_Aggregate_Struct(), WN_INSTRUMENT_WALKER::Tree_Walk(), WN_INSTRUMENT_WALKER::Tree_Walk_Node(), vho_lower_comma(), vho_lower_cselect(), vho_lower_xpragma(), Walk_and_Localize(), WFE_Alloca_0(), WFE_Alloca_ST(), Wfe_Expand_Asm_Operands(), WFE_Expand_End_Case(), WFE_Expand_Expr(), WFE_Expand_Return(), WFE_Expand_Start_Case(), WFE_Generate_Thunk(), WFE_Lhs_Of_Modify_Expr(), WFE_Save_Expr(), WGEN_add_guard_var(), WGEN_Adjust_Thunk(), WGEN_Alloca_0(), WGEN_Alloca_ST(), Wgen_Expand_Asm_Operands(), WGEN_Expand_Expr(), WGEN_Expand_Math_Errno_Sqrt(), WGEN_Expand_Return(), WGEN_Expand_Start_Case(), WGEN_Generate_Thunk(), WGEN_Lhs_Of_Modify_Expr(), WGEN_process_omp_clause(), and WGEN_Save_Expr().
Definition at line 2360 of file wn.cxx.
References MTYPE_V, OPR_STID, ST_type, and WN_CreateStid.
Referenced by Atomic_Using_Swap(), checkForZero(), Convert_Section_To_Pdo(), Create_Io_Entry(), cwh_io_split_io_items(), em_alloca(), em_quad_abs(), em_quad_neg(), em_setstackpointer(), em_split_select(), F90_Lower_Alloc_Dealloc(), Gen_quad_preg(), Gen_Save_Stack_Pointer(), WN_INSTRUMENT_WALKER::Instrument_Branch(), WN_INSTRUMENT_WALKER::Instrument_Circuit(), WN_INSTRUMENT_WALKER::Instrument_Compgoto(), WN_INSTRUMENT_WALKER::Instrument_Cselect(), WN_INSTRUMENT_WALKER::Instrument_Switch(), lower_bit_field_id(), lower_complex_expr(), lower_io_items(), Lower_Master(), lower_record_items(), IPO_INLINE::Process_Op_Code(), Process_Preg_Temps(), REGION_Entry_PREG_Whirl(), REGION_Exit_PREG_Whirl(), Replace_store_of_ded_reg(), Save_And_Restore_Stack(), and WN_INSTRUMENT_WALKER::Tree_Walk_Node().
Definition at line 2255 of file wn.cxx.
References MTYPE_V, OPR_TAS, WN_CreateExp1, WN_operator_is, and WN_set_ty().
Referenced by Atomic_Using_Swap(), cwh_expr_binop_shift(), cwh_expr_compare_bitwise(), cwh_intrin_popcnt_leadz_helper(), fei_bneg(), fei_cvtop(), fei_ieee_sign_xfer(), fei_new_binop_cshift(), fei_select(), Gen_exp_wn(), lower_bit_field_id(), WFE_Expand_Expr(), WFE_Generate_Thunk(), and WGEN_Adjust_Thunk().
Definition at line 2415 of file wn.cxx.
References MTYPE_V, and WN_CreateExp3.
Referenced by WFE_Array_Expr(), WGEN_Array_Expr(), and WN2C_array().
Definition at line 1071 of file wn_verifier.cxx.
References HASH_TABLE< SIG_TYPE, DATA_TYPE >::Enter(), FALSE, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), INT, Is_True, lab, LABEL_IDX_index(), LABEL_IDX_level(), LABEL_Table_Size(), OPR_LABEL, TRUE, wn_iter::wn, wn, WN_label_number(), WN_operator(), WN_WALK_Abort(), WN_WALK_TreeIter(), and WN_WALK_TreeNext().
Referenced by Perform_Loop_Nest_Optimization(), and WN_Verifier::WN_traverse_tree().
Definition at line 2434 of file wn.cxx.
References OPR_TRUNC, and WN_CreateExp1.
Referenced by aux_CvtTrunc(), em_nearest_int(), lower_float_to_unsigned(), WFE_Expand_Expr(), and WGEN_Expand_Expr().
Definition at line 2901 of file wn.cxx.
References BOOL, Is_True, MTYPE_F10, MTYPE_F4, MTYPE_F8, MTYPE_FQ, MTYPE_I1, MTYPE_I2, MTYPE_I4, MTYPE_I8, MTYPE_is_float, MTYPE_is_vector, MTYPE_size_min, Mtype_TransferSign(), MTYPE_U1, MTYPE_U2, MTYPE_U4, MTYPE_U8, TYPE_ID, WN_Cvt(), WN_Int_Type_Conversion(), and WN_rtype().
Referenced by Array_reshape_eq(), Array_reshape_gt(), Array_reshape_lt(), Copy_Scalar(), Generate_Assignment_Stmt(), RVI::Load_from_preg_cvtl(), lower_bit_field_id(), lower_cshift(), lower_eoshift(), lower_load_bits(), IPO_INLINE::Process_Copy_In_Copy_Out(), IPO_INLINE::Process_Formal_ST(), IPO_INLINE::Reshape_Array(), and return_conversion().
Definition at line 2405 of file wn.cxx.
References MTYPE_V, and WN_CreateExp1.
Referenced by WFE_Expand_Expr(), WFE_Lhs_Of_Modify_Expr(), WGEN_Expand_Expr(), and WGEN_Lhs_Of_Modify_Expr().
Definition at line 2519 of file wn.cxx.
References FALSE, Host_To_Targ_UV(), Is_True, Make_Const(), MTYPE_B, MTYPE_C10, MTYPE_C4, MTYPE_C8, MTYPE_CQ, MTYPE_F10, MTYPE_F16, MTYPE_F4, MTYPE_F8, MTYPE_FQ, MTYPE_I1, MTYPE_I2, MTYPE_I4, MTYPE_I8, MTYPE_M, MTYPE_STR, Mtype_TransferSign(), MTYPE_U1, MTYPE_U2, MTYPE_U4, MTYPE_U8, MTYPE_V, NULL, and WN_Intconst().
Referenced by em_alloca(), and lower_bit_field_id().
Definition at line 1383 of file wn_verifier.cxx.
References DevWarn, getenv(), NULL, p, strcasecmp(), TRUE, Verifier_DEBUG, and WN_Verifier::WN_traverse_tree().
Referenced by IPA_Preoptimize(), IPO_Modify_WN_for_field_reorder(), IPO_Pad_Whirl(), IPO_propagate_globals(), lower_bit_field_id(), Pre_Optimizer(), Preorder_Process_PUs(), Propagate_Constants(), REGION_remove_and_mark(), U64_lower_wn(), WN_retype_expr(), WN_unroll(), Write_inline_pu(), and IPA_NODE::Write_PU().
Definition at line 2246 of file wn.cxx.
References Host_To_Targ(), INT64, Make_Const(), MTYPE_CLASS_INTEGER, MTYPE_I4, MTYPE_type_class, Targ_Conv(), and WN_Intconst().
Referenced by Analyze_index(), aux_nearest(), checkForZero(), Create_Io_Entry(), cwh_dope_from_expression(), cwh_inline_allocate(), cwh_intrin_null_parm(), cwh_io_split_io_items(), cwh_stmt_insert_conformance_check(), em_bclr(), em_bits(), em_bset(), em_btest(), em_bzero(), em_complex_sqrt_preg(), em_dim(), em_exp_int(), em_lshr(), em_shft(), em_shftc(), em_shl(), em_sign(), F90_Lower_Alloc_Dealloc(), F90_Lower_Copy_To_ATemp(), fei_concat(), fei_count(), fei_ieee_sign_xfer(), fei_logb(), fei_sign_xfer(), WN_INSTRUMENT_WALKER::Instrument_Call(), lower_bit_field_id(), lower_io_items(), lower_mm_matmul(), lower_mv_matmul(), lower_pack(), lower_to_base_index(), lower_unpack(), lower_unsigned_to_float(), WN_INSTRUMENT_WALKER::Tree_Walk(), and WN_mask().
Definition at line 102 of file wn.cxx.
Referenced by IPO_CLONE::Copy_Node(), DRA_Add_Clone(), Intra_PU_Formal_Cprop(), IPA_Create_Builtins(), IPA_NODE_CONTEXT::IPA_NODE_CONTEXT(), IPO_Clone(), IPO_INLINE::IPO_INLINE(), Perform_Interprocedural_Analysis(), and IPA_NODE_CONTEXT::~IPA_NODE_CONTEXT().
1.5.6