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