Open64 (mfef90, whirl2f, and IR tools)
TAG: version-openad; SVN changeset: 916
|
#include "whirl2c_common.h"
#include "PUinfo.h"
#include "ty2c.h"
#include "tcon2c.h"
#include "unparse_target.h"
#include <set>
Go to the source code of this file.
#define GET_SPECIAL_TYPENAME | ( | mtype | ) |
((mtype) == MTYPE_V? Special_Void_TypeName : \ ((mtype) == MTYPE_STR? Special_String_TypeName : \ ((mtype) == MTYPE_FQ? Special_Quad_TypeName : \ ((mtype) == MTYPE_C4? Special_Complex32_TypeName : \ ((mtype) == MTYPE_C8? Special_Complex64_TypeName : \ ((mtype) == MTYPE_CQ? Special_ComplexQD_TypeName : \ (const char *)NULL))))))
Definition at line 129 of file ty2c.cxx.
Referenced by TY2C_builtin(), and TY2C_translate().
#define MTYPE_PREDEF MTYPE_F16 |
Definition at line 94 of file ty2c.cxx.
Referenced by TY2C_builtin(), and TY2C_scalar().
#define PTR_OR_ALIGNED_WITH_STRUCT | ( | fld_ty, | |
struct_align | |||
) | (TY_Is_Pointer(fld_ty) || TY_align(fld_ty) <= struct_align) |
Definition at line 138 of file ty2c.cxx.
Referenced by skip_till_next_field(), TY2C_get_field_info(), and TY2C_prepend_FLD_list().
typedef struct SCALAR_C_NAME SCALAR_C_NAME |
typedef void(* TY2C_HANDLER_FUNC)(TOKEN_BUFFER, TY_IDX, CONTEXT) |
static INT64 get_field_gap | ( | FLD_HANDLE | this_fld, |
FLD_HANDLE | next_fld, | ||
INT64 | max_size, | ||
BOOL | is_union | ||
) | [static] |
Definition at line 238 of file ty2c.cxx.
References FLD_ofst(), FLD_type(), FLD_HANDLE::Is_Null(), and TY_size().
Referenced by TY2C_prepend_FLD_list().
static FLD_HANDLE skip_till_next_field | ( | FLD_HANDLE | this_fld, |
const INT64 | struct_align, | ||
const INT64 | struct_size, | ||
BOOL | is_union | ||
) | [static] |
Definition at line 264 of file ty2c.cxx.
References FLD_Is_Bitfield(), FLD_next(), FLD_ofst(), FLD_type(), FLD_HANDLE::Is_Null(), PTR_OR_ALIGNED_WITH_STRUCT, TY_align(), and TY_Is_Pointer().
Referenced by TY2C_get_field_info(), and TY2C_prepend_FLD_list().
static void TY2C_array | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 504 of file ty2c.cxx.
References Append_Token_Special(), CONTEXT_incomplete_ty2c, CONTEXT_reset_incomplete_ty2c, CONTEXT_set_incomplete_ty2c, Host_To_Targ(), KIND_STRUCT, MTYPE_I8, Prepend_Token_Special(), Stab_Array_Has_Dynamic_Bounds(), TCON2C_translate(), TY2C_prepend_qualifiers(), TY2C_translate(), TY_AR_etype(), TY_AR_lbnd_val(), TY_AR_ndims(), TY_AR_ubnd_val(), TY_Is_Array_Or_Function(), TY_kind(), and WHIRL2C_parenthesize().
BOOL TY2C_builtin | ( | TY_IDX | ty | ) |
Definition at line 1176 of file ty2c.cxx.
References GET_SPECIAL_TYPENAME, KIND_INVALID, MTYPE_PREDEF, MTYPE_UNKNOWN, name, NULL, Scalar_C_Names, TY_kind(), and TY_mtype().
Referenced by Unparse_Target_C::Builtin_Type().
static void TY2C_complete_struct | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 591 of file ty2c.cxx.
References CONTEXT_reset_incomplete_ty2c, CONTEXT_reset_unqualified_ty2c, Decrement_Indentation(), Increment_Indentation(), MTYPE_U1, Prepend_Indented_Newline(), Prepend_Token_Special(), Prepend_Token_String(), Stab_Is_Equivalenced_Struct(), Stab_Mtype_To_Ty(), TY2C_Aligned_Block_Name, TY2C_Prepend_Alignment_Type(), TY2C_prepend_FLD_list(), TY2C_translate(), TY_align(), TY_flist(), TY_is_union(), TY_size(), Ty_Table, W2CF_Symtab_Nameof_Ty(), and W2CF_Symtab_Unique_Name().
Referenced by TY2C_Output_Struct_Type().
void TY2C_finalize | ( | void | ) |
Definition at line 974 of file ty2c.cxx.
Referenced by W2C_Fini().
static void TY2C_function | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 879 of file ty2c.cxx.
References Append_Token_Special(), Append_Token_String(), CONTEXT_reset_unqualified_ty2c, CONTEXT_set_incomplete_ty2c, Unparse_Target::Func_Return_Type(), TY2C_prototype_params(), TY2C_translate(), TY_has_prototype(), TY_is_varargs(), TY_parms(), and W2X_Unparse_Target.
TY2C_FLD_INFO TY2C_get_field_info | ( | TY_IDX | struct_ty, |
TY_IDX | desired_ty, | ||
MTYPE | desired_mty, | ||
INT64 | desired_offset | ||
) |
Definition at line 1021 of file ty2c.cxx.
References Append_Token_String(), FALSE, FLD_Is_Bitfield(), FLD_next(), FLD_ofst(), FLD_type(), TY2C_Fld_Info::found_fld, FLD_HANDLE::Is_Null(), New_Token_Buffer(), Prepend_Token_Special(), Prepend_Token_String(), PTR_OR_ALIGNED_WITH_STRUCT, TY2C_Fld_Info::select_tokens, skip_till_next_field(), Stab_Identical_Types(), Stab_Is_Equivalenced_Struct(), TRUE, TY2C_Aligned_Block_Name, TY2C_get_field_info(), TY_align(), TY_flist(), TY_Is_Structured(), TY_is_union(), TY_mtype(), TY_size(), Ty_Table, and W2CF_Symtab_Nameof_Fld().
Referenced by INITV2C_block_struct(), INITV2C_symoff(), TY2C_get_field_info(), WN2C_based_lvalue(), WN2C_MemAccess_Type(), and WN2C_SymAccess_Type().
void TY2C_initialize | ( | CONTEXT | context | ) |
Definition at line 960 of file ty2c.cxx.
References Be_Type_Tbl, MTYPE_C4, MTYPE_C8, MTYPE_CQ, MTYPE_STRING, and Set_TY_is_translated_to_c().
Referenced by W2C_Init().
static void TY2C_invalid | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty, | ||
CONTEXT | context | ||
) | [static] |
static void TY2C_Output_Struct_Type | ( | TY_IDX | ty, |
INT | lines_between_decls, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 712 of file ty2c.cxx.
References Append_Indented_Newline(), Append_Token_Special(), CONTEXT_reset_incomplete_ty2c, FLD_last_field(), FLD_next(), FLD_type(), is_upcr_ptr(), KIND_STRUCT, New_Token_Buffer(), NULL, Set_TY_is_translated_to_c(), struct_names, TY2C_complete_struct(), TY_fld(), TY_is_translated_to_c(), TY_is_written(), TY_kind(), TY_name(), W2C_DOTH_FILE, W2C_File, and Write_And_Reclaim_Tokens().
static void TY2C_pointer | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 908 of file ty2c.cxx.
References CONTEXT_reset_unqualified_ty2c, CONTEXT_set_incomplete_ty2c, Prepend_Token_Special(), TY2C_prepend_qualifiers(), TY2C_translate(), TY_Is_Array_Or_Function(), TY_is_shared(), TY_pointed(), TY_To_Sptr_Idx(), Type_Is_Shared_Ptr(), and WHIRL2C_parenthesize().
static void TY2C_Prepend_Alignment_Type | ( | TOKEN_BUFFER | tokens, |
INT64 | align | ||
) | [static] |
Definition at line 408 of file ty2c.cxx.
References c, CONTEXT_reset, FALSE, Is_True, MTYPE_FQ, MTYPE_U1, MTYPE_U2, MTYPE_U4, MTYPE_U8, Stab_Mtype_To_Ty(), and TY2C_translate().
Referenced by TY2C_complete_struct().
static void TY2C_prepend_filler_field | ( | TOKEN_BUFFER | decl_tokens, |
INT64 | byte_size | ||
) | [static] |
Definition at line 303 of file ty2c.cxx.
References Append_Token_Special(), Append_Token_String(), Host_To_Targ(), MTYPE_I8, MTYPE_U1, New_Token_Buffer(), Prepend_And_Reclaim_Token_List(), Prepend_Indented_Newline(), Scalar_C_Names, TCON2C_translate(), and W2CF_Symtab_Unique_Name().
Referenced by TY2C_prepend_FLD_list().
static void TY2C_prepend_FLD_list | ( | TOKEN_BUFFER | decl_tokens, |
FLD_HANDLE | fld, | ||
const BOOL | is_union, | ||
const INT64 | struct_align, | ||
const INT64 | struct_size, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 323 of file ty2c.cxx.
References Append_Token_Special(), Append_Token_String(), FALSE, FLD_Is_Bitfield(), FLD_next(), FLD_ofst(), FLD_type(), get_field_gap(), FLD_HANDLE::Is_Null(), New_Token_Buffer(), Prepend_And_Reclaim_Token_List(), Prepend_Indented_Newline(), PTR_OR_ALIGNED_WITH_STRUCT, skip_till_next_field(), TRUE, TY2C_prepend_filler_field(), TY2C_translate(), TY_size(), and W2CF_Symtab_Nameof_Fld().
Referenced by TY2C_complete_struct().
static void TY2C_prepend_qualifiers | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 223 of file ty2c.cxx.
References CONTEXT_unqualified_ty2c, Prepend_Token_String(), TY_is_const(), TY_is_restrict(), and TY_is_volatile().
Referenced by TY2C_array(), TY2C_pointer(), TY2C_scalar(), TY2C_struct(), TY2C_translate(), and TY2C_void().
static void TY2C_prototype_params | ( | TOKEN_BUFFER | decl_tokens, |
TYLIST_IDX | params, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 439 of file ty2c.cxx.
References Append_And_Reclaim_Token_List(), Append_Token_Special(), Append_Token_String(), New_Token_Buffer(), param_tokens, TY2C_translate(), TYLIST_item(), TYLIST_next(), and Tylist_Table.
Referenced by TY2C_function().
static void TY2C_scalar | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 469 of file ty2c.cxx.
References Append_Token_Special(), Is_True, MTYPE_PREDEF, MTYPE_U1, MTYPE_UNKNOWN, Prepend_Token_String(), pshared_ptr_idx, Scalar_C_Names, shared_ptr_idx, TY2C_prepend_qualifiers(), TY_Is_String(), TY_mtype(), TY_name(), TY_To_Sptr_Idx(), and Type_Is_Shared_Ptr().
static void TY2C_struct | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 826 of file ty2c.cxx.
References Compile_Upc, CONTEXT_reset_incomplete_ty2c, Current_Indentation(), Prepend_Token_String(), Set_Current_Indentation(), Set_TY_is_translated_to_c(), Stab_Is_Equivalenced_Struct(), TY2C_prepend_qualifiers(), TY2C_Translate_Structure(), TY_is_translated_to_c(), TY_is_union(), and W2CF_Symtab_Nameof_Ty().
void TY2C_translate | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty, | ||
CONTEXT | context | ||
) |
Definition at line 981 of file ty2c.cxx.
References GET_SPECIAL_TYPENAME, Is_True, KIND_INVALID, KIND_LAST, NULL, Prepend_Token_String(), TY2C_Handle, TY2C_prepend_qualifiers(), TY_kind(), and TY_mtype().
Referenced by ST2C_basic_decl(), ST2C_Declare_Tempvar(), ST2C_Define_Preg(), ST2C_formal_ref_decl(), ST2C_func_header(), ST2C_Get_Common_Ty2c_List(), TY2C_array(), TY2C_complete_struct(), TY2C_function(), TY2C_pointer(), TY2C_Prepend_Alignment_Type(), TY2C_prepend_FLD_list(), TY2C_prototype_params(), TY2C_Translate_Structure(), TY2C_translate_unqualified(), and W2C_def_TY().
static void TY2C_Translate_Structure | ( | TY_IDX | ty, |
CONTEXT | context | ||
) | [static] |
Definition at line 753 of file ty2c.cxx.
References Append_And_Reclaim_Token_List(), Append_Indented_Newline(), Append_Token_Special(), Append_Token_String(), Concat3_Strings(), CONTEXT_reset_incomplete_ty2c, Current_Indentation(), Decrement_Indentation(), TY::Fld(), FLD_last_field(), FLD_name(), FLD_type(), Increment_Indentation(), Make_fld_iter(), New_Token_Buffer(), NULL, TY2C_translate(), TY_flist(), TY_is_union(), Ty_Table, W2C_DOTH_FILE, W2C_File, W2CF_Symtab_Nameof_Ty(), and Write_And_Reclaim_Tokens().
Referenced by TY2C_struct().
void TY2C_translate_unqualified | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty | ||
) |
Definition at line 1003 of file ty2c.cxx.
References Compile_Upc, CONTEXT_reset, CONTEXT_set_incomplete_ty2c, CONTEXT_set_unqualified_ty2c, KIND_STRUCT, TY2C_translate(), and TY_kind().
Referenced by INITV2C_symoff(), INITV2C_val(), WN2C_Append_Symtab_Types(), WN2C_Declare_Return_Variable(), WN2C_generate_cast(), and WN2C_translate_purple_main().
static void TY2C_void | ( | TOKEN_BUFFER | decl_tokens, |
TY_IDX | ty, | ||
CONTEXT | context | ||
) | [static] |
Definition at line 942 of file ty2c.cxx.
References Prepend_Token_String(), Special_Void_TypeName, and TY2C_prepend_qualifiers().
static void Write_Scalar_Typedef | ( | FILE * | ofile, |
const char * | real_type, | ||
const char * | new_name | ||
) | [static] |
Definition at line 185 of file ty2c.cxx.
References Append_Indented_Newline(), Append_Token_Special(), Append_Token_String(), New_Token_Buffer(), NULL, and Write_And_Reclaim_Tokens().
static void Write_Typedef | ( | FILE * | ofile, |
TY_IDX | ty, | ||
const char * | type_name | ||
) | [static] |
Definition at line 201 of file ty2c.cxx.
References Append_Indented_Newline(), Append_Token_Special(), Append_Token_String(), CONTEXT_reset, New_Token_Buffer(), NULL, Prepend_Indented_Newline(), Prepend_Token_String(), TY2C_Handle, TY_kind(), and Write_And_Reclaim_Tokens().
Definition at line 71 of file driver_util.cxx.
char Name_Unknown_Type[] = "__UNKNOWN_TYPE" [static] |
const SCALAR_C_NAME Scalar_C_Names[MTYPE_PREDEF+1] [static] |
{{"void", Name_Unknown_Type}, {"char", "_BOOLEAN"}, {"signed char", "_INT8"}, {"signed short", "_INT16"}, {"signed int", "_INT32"}, {"signed long long", "_INT64"}, {"unsigned char", "_UINT8"}, {"unsigned short", "_UINT16"}, {"unsigned int", "_UINT32"}, {"unsigned long long", "_UINT64"}, {"float", "_IEEE32"}, {"double", "_IEEE64"}, {Name_Unknown_Type, "_IEEE80"}, {Name_Unknown_Type, "_IEEE128"} }
Definition at line 97 of file ty2c.cxx.
Referenced by TY2C_builtin(), TY2C_prepend_filler_field(), and TY2C_scalar().
const char Special_Complex32_TypeName[] = "_COMPLEX32" |
const char Special_Complex64_TypeName[] = "_COMPLEX64" |
const char Special_ComplexQD_TypeName[] = "_COMPLEXQD" |
const char Special_Quad_TypeName[] = "_QUAD" |
const char Special_String_TypeName[] = "_STRING" |
const char Special_Void_TypeName[] = "void" |
Definition at line 122 of file ty2c.cxx.
Referenced by TY2C_void().
hash_set<const char*, hash<const char*>, eqstr> struct_names [static] |
Definition at line 708 of file ty2c.cxx.
Referenced by TY2C_Output_Struct_Type().
const char TY2C_Aligned_Block_Name[] = "__block" |
Definition at line 92 of file ty2c.cxx.
Referenced by TY2C_complete_struct(), and TY2C_get_field_info().
const char* TY2C_Complex_Imagpart_Name = "imagpart" |
Definition at line 178 of file ty2c.cxx.
Referenced by WN2C_Assign_Complex_Const(), WN2C_complex(), and WN2C_imagpart().
const char* TY2C_Complex_Realpart_Name = "realpart" |
Definition at line 177 of file ty2c.cxx.
Referenced by WN2C_Assign_Complex_Const(), WN2C_complex(), and WN2C_realpart().
const TY2C_HANDLER_FUNC TY2C_Handle[KIND_LAST] [static] |
{ &TY2C_invalid, &TY2C_scalar, &TY2C_array, &TY2C_struct, &TY2C_pointer, &TY2C_function, &TY2C_void, }
Definition at line 159 of file ty2c.cxx.
Referenced by TY2C_translate(), and Write_Typedef().