Open64 (mfef90, whirl2f, and IR tools)
TAG: version-openad; SVN changeset: 916
|
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 */