Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
upc_symtab_utils.h
Go to the documentation of this file.
00001 /* -*-Mode: c++;-*- (Tell emacs to use c++ mode) */
00002 
00003 #ifndef upc_symtab_utils_INCLUDED
00004 #define upc_symtab_utils_INCLUDED
00005 
00006 
00007 // #include <opcode.h>
00008 #include <wintrinsic.h>
00009 // #include <wn_core.h>
00010 // #include <symtab_defs.h>
00011 
00012 class WN;
00013 
00014 typedef enum {
00015   STRICT_CONSISTENCY,
00016   RELAXED_CONSISTENCY,
00017   NO_CONSISTENCY
00018 } CONSISTENCY_class;
00019 
00020 
00021 /* UPC specific */
00022 extern TY_IDX shared_ptr_idx;
00023 extern TY_IDX pshared_ptr_idx;
00024 extern int compiling_upc;
00025 
00026 
00027 /* synchronization */
00028 
00029 #define  UPCR_BARRIERFLAG_ANONYMOUS 1 /* keep this consistent with upcr.h */
00030 #define UPCR_BARRIERVAL_ANONYMOUS 0xdeadbeef
00031 
00032 #define MAX_LINE_LEN_UPC 100
00033 
00034 // extern const char *upc_ptradd_name;
00035 extern char *shared_ptr_name;
00036 extern ST* upc_ptradd_st;
00037 extern ST* upc_ptrdiff_st;
00038 extern ST* upc_ptrget_st;
00039 extern ST* upc_ptrput_st;
00040 extern ST* upc_putblock_st;
00041 extern ST* upc_getblock_st;
00042 extern ST* upc_threadof_st;
00043 extern ST* upc_mythread_st;
00044 extern ST* upc_memget_st;
00045 extern ST* upc_memput_st;
00046 extern ST* upc_memcpy_st;
00047 extern ST* upc_adddisp_st;
00048 extern ST* upc_getshared_st;
00049 extern ST* upc_phreset_st;
00050 extern ST* upc_nulleq_st;
00051 extern ST* upc_nullneq_st;
00052 extern ST* upc_ptreqtest_st;
00053 extern ST* upc_ptrneqtest_st;
00054 extern TY_IDX upc_hsync_reg_ty;
00055 extern TY_IDX upc_hsync_mem_ty;
00056 extern ST* upc_forall_control_st;
00057 
00058 extern void Save_Upc_Rts_Calls(char *name,ST *st);
00059 extern void Upc_Translate_Name(char *from, char **to);
00060 extern void Initialize_Upc_Metadata ();
00061 extern void Initialize_Upc_Vars();
00062 extern void Find_Upc_Vars();
00063 extern void Verify_Upc_Metadata ();
00064 extern void Initialize_Upc_Types(char *, UINT, char *, UINT, char*, UINT, char*, UINT);
00065 extern void Upc_Lower_SymbolTable();
00066 extern void Create_Special_Shared_Global_Symbols();
00067 extern UINT64 Get_Type_Inner_Size (TY_IDX idx);
00068 extern TY_IDX Get_Inner_Array_Type( TY_IDX idx);
00069 extern TY_IDX TY_To_Sptr_Idx (TY_IDX);
00070 extern UINT Get_Type_Block_Size (TY_IDX idx);
00071 extern BOOL WN_Type_Is_Shared_Ptr (const WN* wn, BOOL real_ptr = FALSE);
00072 extern BOOL Type_Is_Shared_Ptr (TY_IDX idx, BOOL real_ptr = FALSE);
00073 extern TY_IDX Fix_Intrinsic_Return_Type(INTRINSIC i);
00074 extern BOOL Types_Are_Equiv(TY_IDX idx1, TY_IDX idx2);
00075 extern BOOL Need_StoP_Cvt(TY_IDX src_idx, TY_IDX dest_idx, INTRINSIC *iop);
00076 
00077 extern BOOL TY_is_pshared(TY_IDX idx);
00078 extern BOOL Use_32_Bit(const char* filename);
00079 extern UINT Adjust_Field_Offset(TY_IDX struct_idx, UINT field_id);
00080 extern UINT Adjust_Field_Offset(TY&  struct_idx, UINT field_id);
00081 extern TY_IDX MTYPE_TO_Shared_TY_array[MTYPE_LAST+1];
00082 extern TY_IDX Get_Field_Type (TY_IDX struct_type, UINT field_id);
00083 extern UINT Adjusted_Type_Size(TY_IDX idx, unsigned int pshared = 0, unsigned int shared = 0);
00084 extern bool is_upcr_ptr(TY_IDX ty);
00085 
00086 #define MTYPE_To_Shared_TY(t)  MTYPE_TO_Shared_TY_array[t]
00087 
00088 #endif /* upc_symtab_utils_INCLUDED */ 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines