osprey/dipa/rta/wn.h File Reference

#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"

Include dependency graph for wn.h:

Go to the source code of this file.

Defines

#define WN_Delete(wn)   IPA_WN_Delete(Current_Map_Tab, (wn))
#define WN_CreateCondbr   WN_CreateTruebr
#define WN_StidPreg(desc, pregno, value)   WN_StidIntoPreg((desc),(pregno),MTYPE_To_PREG(desc),(value))
#define WN_Call(type, desc, n, s)   WN_generic_call(OPR_CALL,type,desc,n,s)
#define WN_Piccall(type, desc, n, s)   WN_generic_call(OPR_PICCALL,type,desc,n,s)
#define WN_Neg(type, l)   WN_Unary(OPR_NEG,type,l)
#define WN_Abs(type, l)   WN_Unary(OPR_ABS,type,l)
#define WN_Recip(type, l)   WN_Unary(OPR_RECIP,type,l)
#define WN_Sqrt(type, l)   WN_Unary(OPR_SQRT,type,l)
#define WN_Rsqrt(type, l)   WN_Unary(OPR_RSQRT,type,l)
#define WN_Paren(type, l)   WN_Unary(OPR_PAREN,type,l)
#define WN_Select(type, rel, t, f)   WN_Ternary(OPR_SELECT,type,rel,t,f)
#define WN_Cselect(type, rel, t, f)   WN_Ternary(OPR_CSELECT,type,rel,t,f)
#define WN_Add(type, l, r)   WN_Binary(OPR_ADD,type,l,r)
#define WN_Sub(type, l, r)   WN_Binary(OPR_SUB,type,l,r)
#define WN_Mpy(type, l, r)   WN_Binary(OPR_MPY,type,l,r)
#define WN_Div(type, l, r)   WN_Binary(OPR_DIV,type,l,r)
#define WN_Madd(type, l, r, a)   WN_Ternary(OPR_MADD,type,l,r,a)
#define WN_Msub(type, l, r, a)   WN_Ternary(OPR_MSUB,type,l,r,a)
#define WN_Nmadd(type, l, r, a)   WN_Ternary(OPR_NMADD,type,l,r,a)
#define WN_Nmsub(type, l, r, a)   WN_Ternary(OPR_NMSUB,type,l,r,a)
#define WN_EQ(type, l, r)   WN_Relational(OPR_EQ,type,l,r)
#define WN_NE(type, l, r)   WN_Relational(OPR_NE,type,l,r)
#define WN_LT(type, l, r)   WN_Relational(OPR_LT,type,l,r)
#define WN_LE(type, l, r)   WN_Relational(OPR_LE,type,l,r)
#define WN_GT(type, l, r)   WN_Relational(OPR_GT,type,l,r)
#define WN_GE(type, l, r)   WN_Relational(OPR_GE,type,l,r)
#define WN_LNOT(l)   WN_Unary(OPR_LNOT,Boolean_type,l)
#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_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_Lshr(type, l, r)   WN_Binary(OPR_LSHR,type,l,r)
#define WN_Ashr(type, l, r)   WN_Binary(OPR_ASHR,type,l,r)
#define WN_Shl(type, l, r)   WN_Binary(OPR_SHL,type,l,r)
#define WN_Bnot(type, l)   WN_Unary(OPR_BNOT,type,l)
#define WN_Band(type, l, r)   WN_Binary(OPR_BAND,type,l,r)
#define WN_Bior(type, l, r)   WN_Binary(OPR_BIOR,type,l,r)
#define WN_Bxor(type, l, r)   WN_Binary(OPR_BXOR,type,l,r)
#define WN_Realpart(t, l)   WN_Unary(OPR_REALPART,t,l)
#define WN_Imagpart(t, l)   WN_Unary(OPR_IMAGPART,t,l)
#define WN_Complex(type, l, r)   WN_Binary(OPR_COMPLEX,type,l,r)

Functions/Subroutines

BOOL Types_Are_Compatible (TYPE_ID ltype, WN *wn)
BOOL IPO_Types_Are_Compatible (TYPE_ID ltype, TYPE_ID rtype)
BOOL Is_Const_Parm (WN *, INT)
void Dont_Use_WN_Free_List (void)
WNWN_Create (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, mINT16 kid_count)
WNWN_Create (OPCODE opcode, mINT16 kid_count)
WNWN_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)
WNWN_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)
void IPA_WN_Delete (WN_MAP_TAB *maptab, WN *wn)
void IPA_WN_DELETE_Tree (WN_MAP_TAB *maptab, WN *tree)
void WN_Register_Delete_Cleanup_Function (void(*cleanup_fn)(WN *wn))
void WN_Remove_Delete_Cleanup_Function (void(*cleanup_fn)(WN *wn))
BOOL WN_Equiv (WN *wn1, WN *wn2)
WNWN_CreateBlock (void)
WNWN_CreateDO (WN *index, WN *start, WN *end, WN *step, WN *body, WN *loop_info)
WNWN_CreateDoWhile (WN *test, WN *body)
WNWN_CreateWhileDo (WN *test, WN *body)
WNWN_CreateIf (WN *test, WN *if_then, WN *if_else)
WNWN_CreateEntry (INT16 nkids, ST_IDX name, WN *body, WN *pragmas, WN *varrefs)
WNWN_CreateRegion (REGION_KIND kind, WN *body, WN *pragmas, WN *exits, INT region_id, INITO_IDX ereg_supp)
WNWN_CreateRegionExit (INT32 label_number)
void Set_Max_Region_Id (INT id)
WNWN_CreateGoto (INT32 label_number)
WNWN_CreateGotoOuterBlock (INT32 label_number, SYMTAB_IDX label_level)
WNWN_CreateAgoto (WN *addr)
WNWN_CreateAltentry (ST_IDX entry)
WNWN_CreateTruebr (INT32 label_number, WN *exp)
WNWN_CreateFalsebr (INT32 label_number, WN *exp)
WNWN_CreateReturn (void)
WNWN_CreateReturn_Val (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *val)
WNWN_CreateReturn_Val (OPCODE opc, WN *val)
WNWN_CreateLabel (INT32 label_number, UINT32 label_flag, WN *loop_info)
WNWN_CreateCompgoto (INT32 num_entries, WN *value, WN *block, WN *deflt, INT32 last_label)
WNWN_CreateSwitch (INT32 num_entries, WN *value, WN *block, WN *deflt, INT32 last_label)
WNWN_CreateCasegoto (INT64 case_value, INT32 case_label_number)
WNWN_CreateXgoto (INT32 num_entries, WN *value, WN *block, ST_IDX st)
WNWN_CreateIstore (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty, WN *value, WN *addr, UINT field_id=0)
WNWN_CreateIstore (OPCODE opc, WN_OFFSET offset, TY_IDX ty, WN *value, WN *addr, UINT field_id=0)
WNWN_CreateIstorex (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, TY_IDX ty, WN *value, WN *addr1, WN *addr2)
WNWN_CreateIstorex (OPCODE opc, TY_IDX ty, WN *value, WN *addr1, WN *addr2)
WNWN_CreateMstore (WN_OFFSET offset, TY_IDX ty, WN *value, WN *addr, WN *num_bytes)
WNWN_CreateStid (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, ST *st, TY_IDX ty, WN *value, UINT field_id=0)
WNWN_CreateStid (OPCODE opc, WN_OFFSET offset, ST *st, TY_IDX ty, WN *value, UINT field_id=0)
WNWN_CreatePrefetch (WN_OFFSET offset, UINT32 flag, WN *addr)
WNWN_CreatePrefetchx (UINT32 flag, WN *addr1, WN *addr2)
WNWN_CreateIo (IOSTATEMENT iostatement, mINT16 kid_count)
WNWN_CreateIoItem0 (IOITEM ioitem, TY_IDX ty)
WNWN_CreateIoItem1 (IOITEM ioitem, WN *kid0, TY_IDX ty)
WNWN_CreateIoItem2 (IOITEM ioitem, WN *kid0, WN *kid1, TY_IDX ty)
WNWN_CreateIoItem3 (IOITEM ioitem, WN *kid0, WN *kid1, WN *kid2, TY_IDX ty)
WNWN_CreateIoItemN (IOITEM ioitem, mINT16 kid_count, TY_IDX ty)
WNWN_CreateEval (WN *exp)
WNWN_CreatePragma (WN_PRAGMA_ID pragma_name, ST_IDX st, INT32 arg1, INT32 arg2)
WNWN_CreatePragma (WN_PRAGMA_ID pragma_name, ST_IDX st, INT32 arg1, PREG_NUM asm_copyout_preg, UINT32 asm_opnd_num)
WNWN_CreateXpragma (WN_PRAGMA_ID pragma_name, ST_IDX st, INT16 kid_count)
WNWN_CreateExp0 (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc)
WNWN_CreateExp0 (OPCODE opc)
WNWN_CreateExp1 (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *kid0)
WNWN_CreateExp1 (OPCODE opc, WN *kid0)
WNWN_CreateExp2 (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *kid0, WN *kid1)
WNWN_CreateExp2 (OPCODE opc, WN *kid0, WN *kid1)
WNWN_CreateExp3 (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *kid0, WN *kid1, WN *kid2)
WNWN_CreateExp3 (OPCODE opc, WN *kid0, WN *kid1, WN *kid2)
WNWN_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)
WNWN_CreateIload (OPCODE opc, WN_OFFSET offset, TY_IDX ty, TY_IDX load_addr_ty, WN *addr, UINT field_id=0)
WNWN_CreateIloadx (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, TY_IDX ty, TY_IDX load_addr_ty, WN *addr1, WN *addr2)
WNWN_CreateIloadx (OPCODE opc, TY_IDX ty, TY_IDX load_addr_ty, WN *addr1, WN *addr2)
WNWN_CreateMload (WN_OFFSET offset, TY_IDX ty, WN *addr, WN *num_bytes)
WNWN_CreateLdid (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, ST_IDX st, TY_IDX ty, UINT field_id=0)
WNWN_CreateLdid (OPCODE opc, WN_OFFSET offset, ST_IDX st, TY_IDX ty, UINT field_id=0)
WNWN_CreateLda (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty, ST_IDX st, UINT field_id=0)
WNWN_CreateLda (OPCODE opc, WN_OFFSET offset, TY_IDX ty, ST_IDX st, UINT field_id=0)
WNWN_CreateIlda (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX ty)
WNWN_CreateLdaLabel (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, mUINT32 label_number)
WNWN_CreateIdname (WN_OFFSET offset, ST_IDX st)
WNWN_CreateConst (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, ST_IDX st)
WNWN_CreateConst (OPCODE opc, ST_IDX st)
WNWN_CreateIntconst (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INT64 const_val)
WNWN_CreateIntconst (OPCODE opc, INT64 const_val)
WNWN_CreateCvtl (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INT16 cvtl_bits, WN *kid0)
WNWN_CreateCvtl (OPCODE opc, INT16 cvtl_bits, WN *kid0)
WNWN_Create_Intrinsic (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INTRINSIC intrinsic, INT32 n, WN *kids[])
WNWN_Create_Intrinsic (OPCODE opc, INTRINSIC intrinsic, INT32 n, WN *kids[])
WNWN_CreateParm (TYPE_ID rtype, WN *parm_node, TY_IDX ty, UINT32 flag)
WNWN_CreateComma (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *block, WN *value)
WNWN_CreateComma (OPCODE opc, WN *block, WN *value)
WNWN_CreateRcomma (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, WN *value, WN *block)
WNWN_CreateRcomma (OPCODE opc, WN *value, WN *block)
WNWN_CreateComment (const char *s)
STR_IDX WN_GetComment (const WN *wn)
WNWN_CreateAsm_Stmt (INT16 kid_count, char *asm_string)
WNWN_CreateAsm_Input (char *constraint, UINT32 opnd_num, WN *opnd_expr)
WNWN_CopyNode (const WN *src_wn)
void IPA_WN_Move_Maps_PU (WN_MAP_TAB *src, WN_MAP_TAB *dst, WN *wn)
void WN_Mem_Push (void)
void WN_Mem_Pop (void)
WNWN_Ldid (TYPE_ID desc, WN_OFFSET offset, ST_IDX sym, TY_IDX align, UINT field_id=0)
WNWN_RLdid (TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, ST_IDX sym, TY_IDX align)
WNWN_LdidPreg (TYPE_ID desc, WN_OFFSET pregno)
WNWN_Iload (TYPE_ID desc, WN_OFFSET offset, TY_IDX align, WN *addr, UINT field_id=0)
WNWN_RIload (TYPE_ID rtype, TYPE_ID desc, WN_OFFSET offset, TY_IDX align, WN *addr)
WNWN_IloadLdid (TYPE_ID desc, WN_OFFSET offset, TY_IDX align, ST *sym, WN_OFFSET symOffset)
WNWN_Istore (TYPE_ID desc, WN_OFFSET offset, TY_IDX align, WN *addr, WN *value, UINT field_id=0)
WNWN_Unary (OPERATOR opr, TYPE_ID rtype, WN *l)
WNWN_Binary (OPERATOR opr, TYPE_ID rtype, WN *l, WN *r)
WNWN_Ternary (OPERATOR opr, TYPE_ID rtype, WN *kid0, WN *kid1, WN *kid2)
WNWN_Stid (TYPE_ID desc, WN_OFFSET offset, ST *sym, TY_IDX align, WN *value, UINT field_id=0)
WNWN_StidIntoPreg (TYPE_ID desc, WN_OFFSET offset, ST *sym, WN *value)
WNWN_Intconst (TYPE_ID rtype, INT64 value)
WNWN_RotateIntconst (WN *tree, INT32 rotate)
WNWN_Inverse (TYPE_ID type, WN *tree)
WNWN_Floatconst (TYPE_ID type, double value)
WNWN_UVConst (TYPE_ID type)
WNWN_Zerocon (TYPE_ID ty)
WNWN_Cvt (TYPE_ID desc, TYPE_ID rtype, WN *kid0)
WNWN_Trunc (TYPE_ID desc, TYPE_ID rtype, WN *kid0)
WNWN_Rnd (TYPE_ID desc, TYPE_ID rtype, WN *kid0)
WNWN_Ceil (TYPE_ID desc, TYPE_ID rtype, WN *kid0)
WNWN_Floor (TYPE_ID desc, TYPE_ID rtype, WN *kid0)
WNWN_Relational (OPERATOR opr, TYPE_ID desc, WN *kid0, WN *kid1)
WNWN_ConstPowerOf2 (TYPE_ID rtype, INT32 n)
WNWN_Lda (TYPE_ID rtype, WN_OFFSET ldaOffset, ST *sym, UINT field_id=0)
WNWN_LdaString (const char *str, WN_OFFSET ldaOffset, INT32 len)
WNWN_LdaLabel (TYPE_ID rtype, INT32 label_number)
WNWN_Icall (TYPE_ID rtype, TYPE_ID desc, INT32 n, TY_IDX ty)
WNWN_generic_call (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INT32 n, ST_IDX sym)
WNWN_generic_intrinsic (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc, INT32 n, INTRINSIC intrinsic)
WNWN_CreateLoopInfo (WN *induction, WN *trip, UINT16 trip_est, UINT16 depth, INT32 flags)
WNWN_CreateExcScopeBegin (INT32 id, INT16 nkids, struct inito *ereg_supp)
WNWN_CreateExcScopeEnd (INT32 id)
WNWN_CreateBarrier (BOOL forward, INT16 nkids)
WNWN_CreateTrap (INT32 value)
WNWN_CreateAssert (INT32 value, WN *condition)
void WN_CopyMap (WN *dst, WN_MAP map, const WN *src)
WNWN_Tas (TYPE_ID rtype, TY_IDX ty, WN *l)
WNWN_Iloadx (TYPE_ID rtype, TY_IDX ty, TY_IDX addr_ty, WN *base, WN *index)
WNWN_Istorex (TYPE_ID desc, TY_IDX ty, WN *value, WN *base, WN *index)
WNWN_Int_Type_Conversion (WN *wn, TYPE_ID to_type)
WNWN_Float_Type_Conversion (WN *wn, TYPE_ID to_type)
WNWN_Type_Conversion (WN *wn, TYPE_ID to_type)
INT32 WN_Size_and_StartAddress (WN *wn, void **StartAddress)
BOOL WN_verifier (WN *)
BOOL WN_Tree_Has_Duplicate_Labels (WN *pu_wn, MEM_POOL *tmp_pool)
BOOL WN_Rename_Duplicate_Labels (WN *orig_wn, WN *copied_wn, WN *pu_wn, MEM_POOL *tmp_pool)
WNWN_CreateRegionExit (ST *st, INT32 label_number)
WNWN_CreateGoto (ST *st, INT32 label_number)
WNWN_CreateLabel (ST_IDX st, INT32 label_number, UINT32 label_flag, WN *loop_info)
WNWN_CreateLda (OPCODE opc, WN_OFFSET offset, TY_IDX ty, ST *st)
WNWN_CreateAffirm (WN *condition)
WNWN_CreateAlloca (WN *size)
WNWN_CreateDealloca (INT32 n)
WNWN_CreateLdma (TYPE_ID rtype, WN_OFFSET offset, TY_IDX ty, ST_IDX st)
void WN_set_st_addr_saved (WN *)
BOOL WN_has_side_effects (const WN *)
WNWN_Rrotate (TYPE_ID desc, WN *src, WN *cnt)

Variables

MEM_POOLWN_mem_pool_ptr


Define Documentation

#define WN_Abs ( type,
 )     WN_Unary(OPR_ABS,type,l)

Definition at line 1237 of file wn.h.

#define WN_Add ( type,
l,
 )     WN_Binary(OPR_ADD,type,l,r)

Definition at line 1245 of file wn.h.

#define WN_Ashr ( type,
l,
 )     WN_Binary(OPR_ASHR,type,l,r)

Definition at line 1270 of file wn.h.

#define WN_Band ( type,
l,
 )     WN_Binary(OPR_BAND,type,l,r)

Definition at line 1274 of file wn.h.

#define WN_Bior ( type,
l,
 )     WN_Binary(OPR_BIOR,type,l,r)

Definition at line 1275 of file wn.h.

#define WN_Bnot ( type,
 )     WN_Unary(OPR_BNOT,type,l)

Definition at line 1273 of file wn.h.

#define WN_Bxor ( type,
l,
 )     WN_Binary(OPR_BXOR,type,l,r)

Definition at line 1276 of file wn.h.

#define WN_Call ( type,
desc,
n,
 )     WN_generic_call(OPR_CALL,type,desc,n,s)

Definition at line 1201 of file wn.h.

#define WN_CAND ( l,
 )     WN_Binary(OPR_CAND,Boolean_type,l,r)

Definition at line 1266 of file wn.h.

#define WN_CIOR ( l,
 )     WN_Binary(OPR_CIOR,Boolean_type,l,r)

Definition at line 1267 of file wn.h.

#define WN_Complex ( type,
l,
 )     WN_Binary(OPR_COMPLEX,type,l,r)

Definition at line 1280 of file wn.h.

#define WN_CreateCondbr   WN_CreateTruebr

Definition at line 756 of file wn.h.

#define WN_Cselect ( type,
rel,
t,
f   )     WN_Ternary(OPR_CSELECT,type,rel,t,f)

Definition at line 1244 of file wn.h.

#define WN_Delete ( wn   )     IPA_WN_Delete(Current_Map_Tab, (wn))

Definition at line 699 of file wn.h.

#define WN_Div ( type,
l,
 )     WN_Binary(OPR_DIV,type,l,r)

Definition at line 1248 of file wn.h.

#define WN_EQ ( type,
l,
 )     WN_Relational(OPR_EQ,type,l,r)

Definition at line 1256 of file wn.h.

#define WN_GE ( type,
l,
 )     WN_Relational(OPR_GE,type,l,r)

Definition at line 1261 of file wn.h.

#define WN_GT ( type,
l,
 )     WN_Relational(OPR_GT,type,l,r)

Definition at line 1260 of file wn.h.

#define WN_Imagpart ( t,
 )     WN_Unary(OPR_IMAGPART,t,l)

Definition at line 1279 of file wn.h.

#define WN_LAND ( l,
 )     WN_Binary(OPR_LAND,Boolean_type,l,r)

Definition at line 1264 of file wn.h.

#define WN_LE ( type,
l,
 )     WN_Relational(OPR_LE,type,l,r)

Definition at line 1259 of file wn.h.

#define WN_LIOR ( l,
 )     WN_Binary(OPR_LIOR,Boolean_type,l,r)

Definition at line 1265 of file wn.h.

#define WN_LNOT (  )     WN_Unary(OPR_LNOT,Boolean_type,l)

Definition at line 1263 of file wn.h.

#define WN_Lshr ( type,
l,
 )     WN_Binary(OPR_LSHR,type,l,r)

Definition at line 1269 of file wn.h.

#define WN_LT ( type,
l,
 )     WN_Relational(OPR_LT,type,l,r)

Definition at line 1258 of file wn.h.

#define WN_Madd ( type,
l,
r,
a   )     WN_Ternary(OPR_MADD,type,l,r,a)

Definition at line 1249 of file wn.h.

#define WN_Mpy ( type,
l,
 )     WN_Binary(OPR_MPY,type,l,r)

Definition at line 1247 of file wn.h.

#define WN_Msub ( type,
l,
r,
a   )     WN_Ternary(OPR_MSUB,type,l,r,a)

Definition at line 1250 of file wn.h.

#define WN_NE ( type,
l,
 )     WN_Relational(OPR_NE,type,l,r)

Definition at line 1257 of file wn.h.

#define WN_Neg ( type,
 )     WN_Unary(OPR_NEG,type,l)

Definition at line 1236 of file wn.h.

#define WN_Nmadd ( type,
l,
r,
a   )     WN_Ternary(OPR_NMADD,type,l,r,a)

Definition at line 1251 of file wn.h.

#define WN_Nmsub ( type,
l,
r,
a   )     WN_Ternary(OPR_NMSUB,type,l,r,a)

Definition at line 1252 of file wn.h.

#define WN_Paren ( type,
 )     WN_Unary(OPR_PAREN,type,l)

Definition at line 1241 of file wn.h.

#define WN_Piccall ( type,
desc,
n,
 )     WN_generic_call(OPR_PICCALL,type,desc,n,s)

Definition at line 1202 of file wn.h.

#define WN_Realpart ( t,
 )     WN_Unary(OPR_REALPART,t,l)

Definition at line 1278 of file wn.h.

#define WN_Recip ( type,
 )     WN_Unary(OPR_RECIP,type,l)

Definition at line 1238 of file wn.h.

#define WN_Rsqrt ( type,
 )     WN_Unary(OPR_RSQRT,type,l)

Definition at line 1240 of file wn.h.

#define WN_Select ( type,
rel,
t,
f   )     WN_Ternary(OPR_SELECT,type,rel,t,f)

Definition at line 1243 of file wn.h.

#define WN_Shl ( type,
l,
 )     WN_Binary(OPR_SHL,type,l,r)

Definition at line 1271 of file wn.h.

#define WN_Sqrt ( type,
 )     WN_Unary(OPR_SQRT,type,l)

Definition at line 1239 of file wn.h.

#define WN_StidPreg ( desc,
pregno,
value   )     WN_StidIntoPreg((desc),(pregno),MTYPE_To_PREG(desc),(value))

Definition at line 1120 of file wn.h.

#define WN_Sub ( type,
l,
 )     WN_Binary(OPR_SUB,type,l,r)

Definition at line 1246 of file wn.h.


Function Documentation

void Dont_Use_WN_Free_List ( void   ) 

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 
)

void IPA_WN_DELETE_Tree ( WN_MAP_TAB maptab,
WN tree 
)

void IPA_WN_Move_Maps_PU ( WN_MAP_TAB src,
WN_MAP_TAB dst,
WN wn 
)

BOOL IPO_Types_Are_Compatible ( TYPE_ID  ltype,
TYPE_ID  rtype 
)

BOOL Is_Const_Parm ( WN ,
INT   
)

void Set_Max_Region_Id ( INT  id  ) 

BOOL Types_Are_Compatible ( TYPE_ID  ltype,
WN wn 
)

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().

WN* WN_Binary ( OPERATOR  opr,
TYPE_ID  rtype,
WN l,
WN r 
)

WN* WN_Ceil ( TYPE_ID  desc,
TYPE_ID  rtype,
WN kid0 
)

Definition at line 2444 of file wn.cxx.

References OPR_CEIL, and WN_CreateExp1.

WN* WN_ConstPowerOf2 ( TYPE_ID  rtype,
INT32  n 
)

void WN_CopyMap ( WN dst,
WN_MAP  map,
const WN src 
)

WN* WN_CopyNode ( const WN src_wn  ) 

WN* WN_Create ( OPCODE  opcode,
mINT16  kid_count 
) [inline]

Definition at line 672 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_Create().

WN* WN_Create ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
mINT16  kid_count 
)

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]

WN* WN_Create_Intrinsic ( OPCODE  opc,
INTRINSIC  intrinsic,
INT32  n,
WN kids[] 
) [inline]

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[] 
)

WN* WN_CreateAffirm ( WN condition  ) 

Definition at line 3015 of file wn.cxx.

References MTYPE_V, OPR_AFFIRM, WN_Create(), and WN_kid0().

WN* WN_CreateAgoto ( WN addr  ) 

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().

WN* WN_CreateAlloca ( WN size  ) 

WN* WN_CreateAltentry ( ST_IDX  entry  )  [inline]

Definition at line 964 of file wn.cxx.

References OPC_ALTENTRY, WN_Create(), and WN_st_idx().

WN* WN_CreateAsm_Input ( char *  constraint,
UINT32  opnd_num,
WN opnd_expr 
)

WN* WN_CreateAsm_Stmt ( INT16  kid_count,
char *  asm_string 
)

WN* WN_CreateAssert ( INT32  value,
WN condition 
)

Definition at line 2237 of file wn.cxx.

References OPC_ASSERT, WN_Create(), WN_kid(), and WN_offset().

WN* WN_CreateBarrier ( BOOL  forward,
INT16  nkids 
)

Definition at line 2219 of file wn.cxx.

References OPC_BACKWARD_BARRIER, OPC_FORWARD_BARRIER, and WN_Create().

WN* WN_CreateBlock ( void   ) 

Definition at line 717 of file wn.cxx.

References NULL, OPC_BLOCK, wn, WN_Create(), WN_first(), and WN_last().

WN* WN_CreateCasegoto ( INT64  case_value,
INT32  case_label_number 
)

Definition at line 1093 of file wn.cxx.

References OPC_CASEGOTO, WN_const_val(), WN_Create(), and WN_label_number().

WN* WN_CreateComma ( OPCODE  opc,
WN block,
WN value 
) [inline]

Definition at line 1013 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateComma.

WN* WN_CreateComma ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
WN block,
WN value 
)

WN* WN_CreateComment ( const char *  s  ) 

WN* WN_CreateCompgoto ( INT32  num_entries,
WN value,
WN block,
WN deflt,
INT32  last_label 
)

WN* WN_CreateConst ( OPCODE  opc,
ST_IDX  st 
) [inline]

Definition at line 968 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateConst.

WN* WN_CreateConst ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
ST_IDX  st 
) [inline]

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().

WN* WN_CreateCvtl ( OPCODE  opc,
INT16  cvtl_bits,
WN kid0 
) [inline]

Definition at line 989 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateCvtl.

WN* WN_CreateCvtl ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
INT16  cvtl_bits,
WN kid0 
)

WN* WN_CreateDealloca ( INT32  n  ) 

WN* WN_CreateDO ( WN index,
WN start,
WN end,
WN step,
WN body,
WN loop_info 
)

WN* WN_CreateDoWhile ( WN test,
WN body 
)

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.

WN* WN_CreateEntry ( INT16  nkids,
ST_IDX  name,
WN body,
WN pragmas,
WN varrefs 
) [inline]

WN* WN_CreateEval ( WN exp  ) 

Definition at line 1482 of file wn.cxx.

References Is_True, OPC_EVAL, OPCODE_is_expression(), WN_Create(), WN_kid0(), and WN_opcode().

WN* WN_CreateExcScopeBegin ( INT32  id,
INT16  nkids,
struct inito *  ereg_supp 
)

WN* WN_CreateExcScopeEnd ( INT32  id  ) 

Definition at line 2211 of file wn.cxx.

References OPC_EXC_SCOPE_END, WN_Create(), and WN_offset().

WN* WN_CreateExp0 ( OPCODE  opc  )  [inline]

Definition at line 852 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateExp0.

WN* WN_CreateExp0 ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc 
)

Definition at line 1552 of file wn.cxx.

References WN_Create().

WN* WN_CreateExp1 ( OPCODE  opc,
WN kid0 
) [inline]

Definition at line 862 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateExp1.

WN* WN_CreateExp1 ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
WN kid0 
)

WN* WN_CreateExp2 ( OPCODE  opc,
WN kid0,
WN kid1 
) [inline]

Definition at line 873 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateExp2.

WN* WN_CreateExp2 ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
WN kid0,
WN kid1 
)

WN* WN_CreateExp3 ( OPCODE  opc,
WN kid0,
WN kid1,
WN kid2 
) [inline]

Definition at line 885 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateExp3.

WN* WN_CreateExp3 ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
WN kid0,
WN kid1,
WN kid2 
)

WN* WN_CreateFalsebr ( INT32  label_number,
WN exp 
)

WN* WN_CreateGoto ( ST st,
INT32  label_number 
) [inline]

Definition at line 1372 of file wn.h.

References WN_CreateGoto.

WN* WN_CreateGoto ( INT32  label_number  ) 

Definition at line 932 of file wn.cxx.

References OPC_GOTO, WN_Create(), and WN_label_number().

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().

WN* WN_CreateIdname ( WN_OFFSET  offset,
ST_IDX  st 
) [inline]

Definition at line 1876 of file wn.cxx.

References OPC_IDNAME, WN_Create(), WN_idname_offset(), and WN_st_idx().

WN* WN_CreateIf ( WN test,
WN if_then,
WN if_else 
)

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.

WN* WN_CreateIlda ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
WN_OFFSET  offset,
TY_IDX  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 
)

WN* WN_CreateIloadx ( OPCODE  opc,
TY_IDX  ty,
TY_IDX  load_addr_ty,
WN addr1,
WN addr2 
) [inline]

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 
)

WN* WN_CreateIntconst ( OPCODE  opc,
INT64  const_val 
) [inline]

Definition at line 978 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateIntconst.

WN* WN_CreateIntconst ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
INT64  const_val 
)

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.

WN* WN_CreateIoItem0 ( IOITEM  ioitem,
TY_IDX  ty 
)

Definition at line 1421 of file wn.cxx.

References OPC_IO_ITEM, WN_Create(), WN_io_item(), and WN_set_ty().

WN* WN_CreateIoItem1 ( IOITEM  ioitem,
WN kid0,
TY_IDX  ty 
)

Definition at line 1432 of file wn.cxx.

References OPC_IO_ITEM, WN_Create(), WN_io_item(), WN_kid0(), and WN_set_ty().

WN* WN_CreateIoItem2 ( IOITEM  ioitem,
WN kid0,
WN kid1,
TY_IDX  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().

WN* WN_CreateIoItem3 ( IOITEM  ioitem,
WN kid0,
WN kid1,
WN kid2,
TY_IDX  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().

WN* WN_CreateIoItemN ( IOITEM  ioitem,
mINT16  kid_count,
TY_IDX  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 
)

WN* WN_CreateIstorex ( OPCODE  opc,
TY_IDX  ty,
WN value,
WN addr1,
WN addr2 
) [inline]

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 
)

WN* WN_CreateLabel ( ST_IDX  st,
INT32  label_number,
UINT32  label_flag,
WN loop_info 
) [inline]

Definition at line 1385 of file wn.h.

References WN_CreateLabel.

WN* WN_CreateLabel ( INT32  label_number,
UINT32  label_flag,
WN loop_info 
)

WN* WN_CreateLda ( OPCODE  opc,
WN_OFFSET  offset,
TY_IDX  ty,
ST st 
) [inline]

Definition at line 1463 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateLda.

WN* WN_CreateLda ( OPCODE  opc,
WN_OFFSET  offset,
TY_IDX  ty,
ST_IDX  st,
UINT  field_id = 0 
) [inline]

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]

WN* WN_CreateLdaLabel ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
mUINT32  label_number 
)

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]

WN* WN_CreateLdma ( TYPE_ID  rtype,
WN_OFFSET  offset,
TY_IDX  ty,
ST_IDX  st 
)

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().

WN* WN_CreateLoopInfo ( WN induction,
WN trip,
UINT16  trip_est,
UINT16  depth,
INT32  flags 
)

WN* WN_CreateMload ( WN_OFFSET  offset,
TY_IDX  ty,
WN addr,
WN num_bytes 
)

WN* WN_CreateMstore ( WN_OFFSET  offset,
TY_IDX  ty,
WN value,
WN addr,
WN num_bytes 
)

WN* WN_CreateParm ( TYPE_ID  rtype,
WN parm_node,
TY_IDX  ty,
UINT32  flag 
)

WN* WN_CreatePragma ( WN_PRAGMA_ID  pragma_name,
ST_IDX  st,
INT32  arg1,
PREG_NUM  asm_copyout_preg,
UINT32  asm_opnd_num 
) [inline]

WN* WN_CreatePragma ( WN_PRAGMA_ID  pragma_name,
ST_IDX  st,
INT32  arg1,
INT32  arg2 
) [inline]

WN* WN_CreatePrefetch ( WN_OFFSET  offset,
UINT32  flag,
WN addr 
)

WN* WN_CreatePrefetchx ( UINT32  flag,
WN addr1,
WN addr2 
)

WN* WN_CreateRcomma ( OPCODE  opc,
WN value,
WN block 
) [inline]

Definition at line 1020 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateRcomma.

WN* WN_CreateRcomma ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
WN value,
WN block 
)

WN* WN_CreateRegion ( REGION_KIND  kind,
WN body,
WN pragmas,
WN exits,
INT  region_id,
INITO_IDX  ereg_supp 
)

WN* WN_CreateRegionExit ( ST st,
INT32  label_number 
) [inline]

Definition at line 1359 of file wn.h.

References WN_CreateRegionExit.

WN* WN_CreateRegionExit ( INT32  label_number  ) 

Definition at line 893 of file wn.cxx.

References OPC_REGION_EXIT, wn, WN_Create(), and WN_label_number().

WN* WN_CreateReturn ( void   ) 

Definition at line 1001 of file wn.cxx.

References OPC_RETURN, and WN_Create().

WN* WN_CreateReturn_Val ( OPCODE  opc,
WN val 
) [inline]

Definition at line 763 of file wn.h.

References OPCODE_desc(), OPCODE_operator(), OPCODE_rtype(), and WN_CreateReturn_Val.

WN* WN_CreateReturn_Val ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
WN val 
)

Definition at line 1010 of file wn.cxx.

References WN_Create(), and WN_kid0().

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]

WN* WN_CreateSwitch ( INT32  num_entries,
WN value,
WN block,
WN deflt,
INT32  last_label 
)

WN* WN_CreateTrap ( INT32  value  ) 

Definition at line 2229 of file wn.cxx.

References OPC_TRAP, WN_Create(), and WN_offset().

WN* WN_CreateTruebr ( INT32  label_number,
WN exp 
)

WN* WN_CreateWhileDo ( WN test,
WN body 
)

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.

WN* WN_CreateXgoto ( INT32  num_entries,
WN value,
WN block,
ST_IDX  st 
) [inline]

WN* WN_CreateXpragma ( WN_PRAGMA_ID  pragma_name,
ST_IDX  st,
INT16  kid_count 
) [inline]

WN* WN_Cvt ( TYPE_ID  desc,
TYPE_ID  rtype,
WN kid0 
)

BOOL WN_Equiv ( WN wn1,
WN wn2 
)

WN* WN_Float_Type_Conversion ( WN wn,
TYPE_ID  to_type 
)

Definition at line 2870 of file wn.cxx.

References Is_True, MTYPE_F10, MTYPE_F4, MTYPE_F8, MTYPE_FQ, TYPE_ID, WN_Cvt(), and WN_rtype().

WN* WN_Floatconst ( TYPE_ID  type,
double  value 
)

WN* WN_Floor ( TYPE_ID  desc,
TYPE_ID  rtype,
WN kid0 
)

Definition at line 2449 of file wn.cxx.

References OPR_FLOOR, and WN_CreateExp1.

Referenced by lower_float_to_unsigned().

WN* WN_generic_call ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
INT32  n,
ST_IDX  sym 
) [inline]

WN* WN_generic_intrinsic ( OPERATOR  opr,
TYPE_ID  rtype,
TYPE_ID  desc,
INT32  n,
INTRINSIC  intrinsic 
)

STR_IDX WN_GetComment ( const WN wn  ) 

BOOL WN_has_side_effects ( const WN  ) 

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().

WN* WN_Icall ( TYPE_ID  rtype,
TYPE_ID  desc,
INT32  n,
TY_IDX  ty 
)

Definition at line 2655 of file wn.cxx.

References call(), OPR_ICALL, WN_Create(), and WN_set_ty().

Referenced by lower_bit_field_id().

WN* WN_Iload ( TYPE_ID  desc,
WN_OFFSET  offset,
TY_IDX  align,
WN addr,
UINT  field_id = 0 
)

WN* WN_IloadLdid ( TYPE_ID  desc,
WN_OFFSET  offset,
TY_IDX  align,
ST sym,
WN_OFFSET  symOffset 
)

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().

WN* WN_Iloadx ( TYPE_ID  rtype,
TY_IDX  ty,
TY_IDX  addr_ty,
WN base,
WN index 
)

Definition at line 2992 of file wn.cxx.

References MTYPE_V, OPR_ILOADX, and WN_CreateIloadx.

WN* WN_Int_Type_Conversion ( WN wn,
TYPE_ID  to_type 
)

WN* WN_Intconst ( TYPE_ID  rtype,
INT64  value 
)

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().

WN* WN_Inverse ( TYPE_ID  type,
WN tree 
)

WN* WN_Istore ( TYPE_ID  desc,
WN_OFFSET  offset,
TY_IDX  align,
WN addr,
WN value,
UINT  field_id = 0 
)

WN* WN_Istorex ( TYPE_ID  desc,
TY_IDX  ty,
WN value,
WN base,
WN index 
)

Definition at line 2998 of file wn.cxx.

References MTYPE_V, OPR_ISTOREX, and WN_CreateIstorex.

WN* WN_Lda ( TYPE_ID  rtype,
WN_OFFSET  ldaOffset,
ST sym,
UINT  field_id = 0 
)

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().

WN* WN_LdaLabel ( TYPE_ID  rtype,
INT32  label_number 
)

WN* WN_LdaString ( const char *  str,
WN_OFFSET  ldaOffset,
INT32  len 
)

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().

WN* WN_LdidPreg ( TYPE_ID  desc,
WN_OFFSET  pregno 
)

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().

void WN_Mem_Pop ( void   ) 

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().

void WN_Mem_Push ( void   ) 

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().

void WN_Register_Delete_Cleanup_Function ( void(*)(WN *wn cleanup_fn  ) 

WN* WN_Relational ( OPERATOR  opr,
TYPE_ID  desc,
WN kid0,
WN kid1 
)

void WN_Remove_Delete_Cleanup_Function ( void(*)(WN *wn cleanup_fn  ) 

Definition at line 501 of file wn.cxx.

References delete_cleanup_fns, and UINT16.

Referenced by Lnoptimizer().

BOOL WN_Rename_Duplicate_Labels ( WN orig_wn,
WN copied_wn,
WN pu_wn,
MEM_POOL tmp_pool 
)

WN* WN_RIload ( TYPE_ID  rtype,
TYPE_ID  desc,
WN_OFFSET  offset,
TY_IDX  align,
WN addr 
)

WN* WN_RLdid ( TYPE_ID  rtype,
TYPE_ID  desc,
WN_OFFSET  offset,
ST_IDX  sym,
TY_IDX  align 
) [inline]

WN* WN_Rnd ( TYPE_ID  desc,
TYPE_ID  rtype,
WN kid0 
)

Definition at line 2439 of file wn.cxx.

References OPR_RND, and WN_CreateExp1.

Referenced by aux_CvtRnd(), and em_nearest_int().

WN* WN_RotateIntconst ( WN tree,
INT32  rotate 
)

WN* WN_Rrotate ( TYPE_ID  desc,
WN src,
WN cnt 
)

void WN_set_st_addr_saved ( WN  ) 

INT32 WN_Size_and_StartAddress ( WN wn,
void **  StartAddress 
)

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().

WN* WN_StidIntoPreg ( TYPE_ID  desc,
WN_OFFSET  offset,
ST sym,
WN value 
)

WN* WN_Tas ( TYPE_ID  rtype,
TY_IDX  ty,
WN l 
)

WN* WN_Ternary ( OPERATOR  opr,
TYPE_ID  rtype,
WN kid0,
WN kid1,
WN kid2 
)

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().

BOOL WN_Tree_Has_Duplicate_Labels ( WN pu_wn,
MEM_POOL tmp_pool 
)

WN* WN_Trunc ( TYPE_ID  desc,
TYPE_ID  rtype,
WN kid0 
)

WN* WN_Type_Conversion ( WN wn,
TYPE_ID  to_type 
)

WN* WN_Unary ( OPERATOR  opr,
TYPE_ID  rtype,
WN l 
)

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().

WN* WN_UVConst ( TYPE_ID  type  ) 

BOOL WN_verifier ( WN  ) 

WN* WN_Zerocon ( TYPE_ID  ty  ) 


Variable Documentation


Generated on Wed Apr 8 14:40:19 2009 for Open64 by  doxygen 1.5.6