Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
upc_wn_util.h
Go to the documentation of this file.
00001 #ifndef upc_wn_util_INCLUDED
00002 #define upc_wn_util_INCLUDED
00003 
00004 #include "wn.h"
00005 #include <stack>
00006 #include "mempool.h"
00007 #include "wn_map.h"
00008 #include "upc_symtab_utils.h"
00009 
00010 
00011 typedef std::stack<WN*> SPTR_OFFSET_TERM_STACK;
00012 typedef std::stack<SPTR_OFFSET_TERM_STACK*> SPTR_OFFSET_ACCUMULATION_STACK;
00013 extern  SPTR_OFFSET_ACCUMULATION_STACK sptr_off_accumulation_stack;
00014 
00015 typedef enum {
00016   ACCUMULATION,
00017   ARRAY_ACCUMULATION,
00018   NO_ARRAY_ACCUMULATION,
00019   NO_ACCUMULATION
00020 } SPTR_ACCUMULATION_STATE;
00021 extern SPTR_ACCUMULATION_STATE sptr_accumulation_state;
00022   
00023 
00024 
00025  
00026 extern std::stack<CONSISTENCY_class> consistency_stack;
00027 extern MEM_POOL consistency_pool;
00028 extern WN_MAP consistency_map;
00029 
00030 extern BOOL Fold_Keep_Shared_Tas;
00031 extern WN* WN_Create_Shared_Load (WN *ld, 
00032                                   WN *dest = 0, 
00033                                   BOOL is_struct = FALSE,  
00034                                   WN_OFFSET xtra_offst = 0,
00035                                   TY_IDX  access_ty = 0,
00036                                   BOOL has_off = FALSE,  WN *off_wn = 0);
00037 extern WN* WN_Create_Shared_Store (WN *st, 
00038                                    BOOL src_is_shared = FALSE,
00039                                    WN_OFFSET xtra_offst = 0,
00040                                    BOOL has_offt = FALSE, WN *offt = 0);
00041 extern WN* WN_Create_Shared_Ptr_Arithmetic( WN *base, WN *disp, OPERATOR opr, 
00042                                             int esize = 0, int bsize = 0, int phaseless = 0);
00043 extern WN* WN_Convert_Shared_To_Local ( WN *ptr, TY_IDX ty = 0, ST* st = 0);
00044 extern WN* WN_Create_PtrEq_Test(OPERATOR op, WN *awn0, WN *awn1, TY_IDX idx0, TY_IDX idx1);
00045 extern WN* WN_Create_StoP_Cvt(WN *init_wn, INTRINSIC iop); 
00046 
00047 //extern WN* WN_Create_Shared_Ptr_Diff( WN *op0, WN *op1, UINT esize, UINT bsize);
00048 extern WN* WN_Create_Shared_Ptr_Diff( WN *op0, WN *op1, TY_IDX t1, TY_IDX t2);
00049 extern WN* WN_SetNull_Sptr(WN *st);
00050 extern WN* Strip_TAS(WN *);
00051 extern WN* Spill_Shared_Load( WN *ld);
00052 extern void LowerUPC_Init_Consistency();
00053 extern WN *Combine_Offset_Terms(SPTR_OFFSET_TERM_STACK &stack);
00054 extern TY_IDX Get_Type_From_ArrayOp(WN *array_wn);
00055 
00056 #endif
00057                                                               
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines