update to llvm 3.8.0

This commit is contained in:
Andrew Kelley 2016-03-08 18:56:14 -07:00
parent 17a36859e7
commit 76e1541803
8 changed files with 96 additions and 96 deletions

View File

@ -8,14 +8,14 @@
find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
PATHS PATHS
/usr/lib/llvm-3.7/include /usr/lib/llvm-3.8/include
/mingw64/include) /mingw64/include)
macro(FIND_AND_ADD_CLANG_LIB _libname_) macro(FIND_AND_ADD_CLANG_LIB _libname_)
string(TOUPPER ${_libname_} _prettylibname_) string(TOUPPER ${_libname_} _prettylibname_)
find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_}
PATHS PATHS
/usr/lib/llvm-3.7/lib /usr/lib/llvm-3.8/lib
/mingw64/lib) /mingw64/lib)
if(CLANG_${_prettylibname_}_LIB) if(CLANG_${_prettylibname_}_LIB)
set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_${_prettylibname_}_LIB}) set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_${_prettylibname_}_LIB})

View File

@ -7,7 +7,7 @@
# LLVM_LIBRARIES # LLVM_LIBRARIES
# LLVM_LIBDIRS # LLVM_LIBDIRS
find_program(LLVM_CONFIG_EXE NAMES llvm-config llvm-config-3.7) find_program(LLVM_CONFIG_EXE NAMES llvm-config llvm-config-3.8)
execute_process( execute_process(
COMMAND ${LLVM_CONFIG_EXE} --libs COMMAND ${LLVM_CONFIG_EXE} --libs

View File

@ -658,9 +658,7 @@ TypeTableEntry *get_fn_type(CodeGen *g, FnTypeId *fn_type_id) {
fn_type->data.fn.raw_type_ref = LLVMFunctionType(gen_return_type->type_ref, fn_type->data.fn.raw_type_ref = LLVMFunctionType(gen_return_type->type_ref,
gen_param_types, gen_param_index, fn_type_id->is_var_args); gen_param_types, gen_param_index, fn_type_id->is_var_args);
fn_type->type_ref = LLVMPointerType(fn_type->data.fn.raw_type_ref, 0); fn_type->type_ref = LLVMPointerType(fn_type->data.fn.raw_type_ref, 0);
LLVMZigDIFile *di_file = nullptr; fn_type->di_type = LLVMZigCreateSubroutineType(g->dbuilder, param_di_types, gen_param_index + 1, 0);
fn_type->di_type = LLVMZigCreateSubroutineType(g->dbuilder, di_file,
param_di_types, gen_param_index + 1, 0);
g->fn_type_table.put(&fn_type->data.fn.fn_type_id, fn_type); g->fn_type_table.put(&fn_type->data.fn.fn_type_id, fn_type);
@ -997,7 +995,7 @@ static void resolve_function_proto(CodeGen *g, AstNode *node, FnTableEntry *fn_t
import->block_context->di_scope, buf_ptr(&fn_table_entry->symbol_name), "", import->block_context->di_scope, buf_ptr(&fn_table_entry->symbol_name), "",
import->di_file, line_number, import->di_file, line_number,
fn_type->di_type, fn_table_entry->internal_linkage, fn_type->di_type, fn_table_entry->internal_linkage,
is_definition, scope_line, flags, is_optimized, fn_table_entry->fn_value); is_definition, scope_line, flags, is_optimized, nullptr);
BlockContext *context = new_block_context(fn_table_entry->fn_def_node, import->block_context); BlockContext *context = new_block_context(fn_table_entry->fn_def_node, import->block_context);
fn_table_entry->fn_def_node->data.fn_def.block_context = context; fn_table_entry->fn_def_node->data.fn_def.block_context = context;

View File

@ -3216,21 +3216,18 @@ static void do_code_gen(CodeGen *g) {
continue; continue;
} }
unsigned tag;
unsigned arg_no;
TypeTableEntry *gen_type; TypeTableEntry *gen_type;
if (var->block_context->node->type == NodeTypeFnDef) { if (var->block_context->node->type == NodeTypeFnDef) {
tag = LLVMZigTag_DW_arg_variable();
arg_no = var->gen_arg_index + 1;
var->is_ptr = false; var->is_ptr = false;
assert(var->gen_arg_index >= 0); assert(var->gen_arg_index >= 0);
var->value_ref = LLVMGetParam(fn, var->gen_arg_index); var->value_ref = LLVMGetParam(fn, var->gen_arg_index);
gen_type = fn_table_entry->type_entry->data.fn.gen_param_info[var->src_arg_index].type; gen_type = fn_table_entry->type_entry->data.fn.gen_param_info[var->src_arg_index].type;
var->di_loc_var = LLVMZigCreateParameterVariable(g->dbuilder, var->block_context->di_scope,
buf_ptr(&var->name), import->di_file, var->decl_node->line + 1,
gen_type->di_type, !g->strip_debug_symbols, 0, var->gen_arg_index + 1);
} else { } else {
tag = LLVMZigTag_DW_auto_variable();
arg_no = 0;
add_debug_source_node(g, var->decl_node); add_debug_source_node(g, var->decl_node);
var->value_ref = LLVMBuildAlloca(g->builder, var->type->type_ref, buf_ptr(&var->name)); var->value_ref = LLVMBuildAlloca(g->builder, var->type->type_ref, buf_ptr(&var->name));
@ -3238,12 +3235,11 @@ static void do_code_gen(CodeGen *g) {
LLVMSetAlignment(var->value_ref, align_bytes); LLVMSetAlignment(var->value_ref, align_bytes);
gen_type = var->type; gen_type = var->type;
}
var->di_loc_var = LLVMZigCreateLocalVariable(g->dbuilder, tag, var->di_loc_var = LLVMZigCreateAutoVariable(g->dbuilder, var->block_context->di_scope,
var->block_context->di_scope, buf_ptr(&var->name), buf_ptr(&var->name), import->di_file, var->decl_node->line + 1,
import->di_file, var->decl_node->line + 1, gen_type->di_type, !g->strip_debug_symbols, 0);
gen_type->di_type, !g->strip_debug_symbols, 0, arg_no); }
} }
// create debug variable declarations for parameters // create debug variable declarations for parameters

View File

@ -370,6 +370,17 @@ static TypeTableEntry *resolve_type_with_table(Context *c, const Type *ty, const
case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage1dBuffer:
case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2d:
case BuiltinType::OCLImage2dArray: case BuiltinType::OCLImage2dArray:
case BuiltinType::OCLImage2dArrayDepth:
case BuiltinType::OCLImage2dDepth:
case BuiltinType::OCLImage2dMSAA:
case BuiltinType::OCLImage2dArrayMSAA:
case BuiltinType::OCLImage2dMSAADepth:
case BuiltinType::OCLImage2dArrayMSAADepth:
case BuiltinType::OCLClkEvent:
case BuiltinType::OCLQueue:
case BuiltinType::OCLNDRange:
case BuiltinType::OCLReserveID:
case BuiltinType::OMPArraySection:
case BuiltinType::OCLImage3d: case BuiltinType::OCLImage3d:
case BuiltinType::OCLSampler: case BuiltinType::OCLSampler:
case BuiltinType::OCLEvent: case BuiltinType::OCLEvent:
@ -626,6 +637,7 @@ static TypeTableEntry *resolve_type_with_table(Context *c, const Type *ty, const
case Type::Complex: case Type::Complex:
case Type::ObjCObjectPointer: case Type::ObjCObjectPointer:
case Type::Atomic: case Type::Atomic:
case Type::Pipe:
emit_warning(c, decl, "missed a '%s' type", ty->getTypeClassName()); emit_warning(c, decl, "missed a '%s' type", ty->getTypeClassName());
return c->codegen->builtin_types.entry_invalid; return c->codegen->builtin_types.entry_invalid;
} }
@ -1598,9 +1610,9 @@ int parse_h_file(ImportTableEntry *import, ZigList<ErrorMsg *> *errors, const ch
std::unique_ptr<ASTUnit> ast_unit(ASTUnit::LoadFromCommandLine( std::unique_ptr<ASTUnit> ast_unit(ASTUnit::LoadFromCommandLine(
&clang_argv.at(0), &clang_argv.last(), &clang_argv.at(0), &clang_argv.last(),
pch_container_ops, diags, resources_path, pch_container_ops, diags, resources_path,
only_local_decls, capture_diagnostics, None, true, false, TU_Complete, only_local_decls, capture_diagnostics, None, true, 0, TU_Complete,
false, false, allow_pch_with_compiler_errors, skip_function_bodies, false, false, allow_pch_with_compiler_errors, skip_function_bodies,
user_files_are_volatile, false, &err_unit)); user_files_are_volatile, false, None, &err_unit));
// Early failures in LoadFromCommandLine may return with ErrUnit unset. // Early failures in LoadFromCommandLine may return with ErrUnit unset.

View File

@ -12,12 +12,14 @@
#include <stdio.h> #include <stdio.h>
static const ArchType arch_list[] = { static const ArchType arch_list[] = {
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_2a},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a}, {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8}, {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7}, {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7em}, {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7em},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7m}, {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7m},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7s}, {ZigLLVM_arm, ZigLLVM_ARMSubArch_v7s},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7k},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6}, {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6m}, {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6m},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6k}, {ZigLLVM_arm, ZigLLVM_ARMSubArch_v6k},
@ -29,6 +31,7 @@ static const ArchType arch_list[] = {
{ZigLLVM_armeb, ZigLLVM_NoSubArch}, {ZigLLVM_armeb, ZigLLVM_NoSubArch},
{ZigLLVM_aarch64, ZigLLVM_NoSubArch}, {ZigLLVM_aarch64, ZigLLVM_NoSubArch},
{ZigLLVM_aarch64_be, ZigLLVM_NoSubArch}, {ZigLLVM_aarch64_be, ZigLLVM_NoSubArch},
{ZigLLVM_avr, ZigLLVM_NoSubArch},
{ZigLLVM_bpfel, ZigLLVM_NoSubArch}, {ZigLLVM_bpfel, ZigLLVM_NoSubArch},
{ZigLLVM_bpfeb, ZigLLVM_NoSubArch}, {ZigLLVM_bpfeb, ZigLLVM_NoSubArch},
{ZigLLVM_hexagon, ZigLLVM_NoSubArch}, {ZigLLVM_hexagon, ZigLLVM_NoSubArch},
@ -84,6 +87,7 @@ static const ZigLLVM_VendorType vendor_list[] = {
ZigLLVM_MipsTechnologies, ZigLLVM_MipsTechnologies,
ZigLLVM_NVIDIA, ZigLLVM_NVIDIA,
ZigLLVM_CSR, ZigLLVM_CSR,
ZigLLVM_Myriad,
}; };
static const ZigLLVM_OSType os_list[] = { static const ZigLLVM_OSType os_list[] = {
@ -112,6 +116,9 @@ static const ZigLLVM_OSType os_list[] = {
ZigLLVM_NVCL, ZigLLVM_NVCL,
ZigLLVM_AMDHSA, ZigLLVM_AMDHSA,
ZigLLVM_PS4, ZigLLVM_PS4,
ZigLLVM_ELFIAMCU,
ZigLLVM_TvOS,
ZigLLVM_WatchOS,
}; };
static const ZigLLVM_EnvironmentType environ_list[] = { static const ZigLLVM_EnvironmentType environ_list[] = {
@ -126,6 +133,8 @@ static const ZigLLVM_EnvironmentType environ_list[] = {
ZigLLVM_MSVC, ZigLLVM_MSVC,
ZigLLVM_Itanium, ZigLLVM_Itanium,
ZigLLVM_Cygnus, ZigLLVM_Cygnus,
ZigLLVM_AMDOpenCL,
ZigLLVM_CoreCLR,
}; };
int target_arch_count(void) { int target_arch_count(void) {
@ -293,12 +302,13 @@ void resolve_target_object_format(ZigTarget *target) {
target->oformat = ZigLLVM_ELF; target->oformat = ZigLLVM_ELF;
} }
// See lib/Support/Triple.cpp in LLVM for the source of this data.
static int get_arch_pointer_bit_width(ZigLLVM_ArchType arch) { static int get_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
switch (arch) { switch (arch) {
case ZigLLVM_UnknownArch: case ZigLLVM_UnknownArch:
return 0; return 0;
case ZigLLVM_avr:
case ZigLLVM_msp430: case ZigLLVM_msp430:
return 16; return 16;
@ -408,6 +418,9 @@ int get_c_type_size_in_bits(const ZigTarget *target, CIntType id) {
case ZigLLVM_NVCL: case ZigLLVM_NVCL:
case ZigLLVM_AMDHSA: case ZigLLVM_AMDHSA:
case ZigLLVM_PS4: case ZigLLVM_PS4:
case ZigLLVM_ELFIAMCU:
case ZigLLVM_TvOS:
case ZigLLVM_WatchOS:
zig_panic("TODO c type size in bits for this target"); zig_panic("TODO c type size in bits for this target");
} }
zig_unreachable(); zig_unreachable();

View File

@ -307,7 +307,7 @@ void LLVMZigReplaceDebugArrays(LLVMZigDIBuilder *dibuilder, LLVMZigDIType *type,
} }
LLVMZigDIType *LLVMZigCreateSubroutineType(LLVMZigDIBuilder *dibuilder_wrapped, LLVMZigDIType *LLVMZigCreateSubroutineType(LLVMZigDIBuilder *dibuilder_wrapped,
LLVMZigDIFile *file, LLVMZigDIType **types_array, int types_array_len, unsigned flags) LLVMZigDIType **types_array, int types_array_len, unsigned flags)
{ {
SmallVector<Metadata *, 8> types; SmallVector<Metadata *, 8> types;
for (int i = 0; i < types_array_len; i += 1) { for (int i = 0; i < types_array_len; i += 1) {
@ -316,7 +316,6 @@ LLVMZigDIType *LLVMZigCreateSubroutineType(LLVMZigDIBuilder *dibuilder_wrapped,
} }
DIBuilder *dibuilder = reinterpret_cast<DIBuilder*>(dibuilder_wrapped); DIBuilder *dibuilder = reinterpret_cast<DIBuilder*>(dibuilder_wrapped);
DISubroutineType *subroutine_type = dibuilder->createSubroutineType( DISubroutineType *subroutine_type = dibuilder->createSubroutineType(
reinterpret_cast<DIFile*>(file),
dibuilder->getOrCreateTypeArray(types), dibuilder->getOrCreateTypeArray(types),
flags); flags);
DIType *ditype = subroutine_type; DIType *ditype = subroutine_type;
@ -351,12 +350,8 @@ unsigned LLVMZigLang_DW_LANG_C99(void) {
return dwarf::DW_LANG_C99; return dwarf::DW_LANG_C99;
} }
unsigned LLVMZigTag_DW_auto_variable(void) { unsigned LLVMZigTag_DW_variable(void) {
return dwarf::DW_TAG_auto_variable; return dwarf::DW_TAG_variable;
}
unsigned LLVMZigTag_DW_arg_variable(void) {
return dwarf::DW_TAG_arg_variable;
} }
unsigned LLVMZigTag_DW_structure_type(void) { unsigned LLVMZigTag_DW_structure_type(void) {
@ -385,21 +380,34 @@ LLVMZigDILexicalBlock *LLVMZigCreateLexicalBlock(LLVMZigDIBuilder *dbuilder, LLV
return reinterpret_cast<LLVMZigDILexicalBlock*>(result); return reinterpret_cast<LLVMZigDILexicalBlock*>(result);
} }
LLVMZigDILocalVariable *LLVMZigCreateAutoVariable(LLVMZigDIBuilder *dbuilder,
LLVMZigDILocalVariable *LLVMZigCreateLocalVariable(LLVMZigDIBuilder *dbuilder, unsigned tag,
LLVMZigDIScope *scope, const char *name, LLVMZigDIFile *file, unsigned line_no, LLVMZigDIScope *scope, const char *name, LLVMZigDIFile *file, unsigned line_no,
LLVMZigDIType *type, bool always_preserve, unsigned flags, unsigned arg_no) LLVMZigDIType *type, bool always_preserve, unsigned flags)
{ {
DILocalVariable *result = reinterpret_cast<DIBuilder*>(dbuilder)->createLocalVariable( DILocalVariable *result = reinterpret_cast<DIBuilder*>(dbuilder)->createAutoVariable(
tag,
reinterpret_cast<DIScope*>(scope), reinterpret_cast<DIScope*>(scope),
name, name,
reinterpret_cast<DIFile*>(file), reinterpret_cast<DIFile*>(file),
line_no, line_no,
reinterpret_cast<DIType*>(type), reinterpret_cast<DIType*>(type),
always_preserve, always_preserve,
flags, flags);
arg_no); return reinterpret_cast<LLVMZigDILocalVariable*>(result);
}
LLVMZigDILocalVariable *LLVMZigCreateParameterVariable(LLVMZigDIBuilder *dbuilder,
LLVMZigDIScope *scope, const char *name, LLVMZigDIFile *file, unsigned line_no,
LLVMZigDIType *type, bool always_preserve, unsigned flags, unsigned arg_no)
{
DILocalVariable *result = reinterpret_cast<DIBuilder*>(dbuilder)->createParameterVariable(
reinterpret_cast<DIScope*>(scope),
name,
arg_no,
reinterpret_cast<DIFile*>(file),
line_no,
reinterpret_cast<DIType*>(type),
always_preserve,
flags);
return reinterpret_cast<LLVMZigDILocalVariable*>(result); return reinterpret_cast<LLVMZigDILocalVariable*>(result);
} }
@ -447,9 +455,8 @@ LLVMZigDIFile *LLVMZigCreateFile(LLVMZigDIBuilder *dibuilder, const char *filena
LLVMZigDISubprogram *LLVMZigCreateFunction(LLVMZigDIBuilder *dibuilder, LLVMZigDIScope *scope, LLVMZigDISubprogram *LLVMZigCreateFunction(LLVMZigDIBuilder *dibuilder, LLVMZigDIScope *scope,
const char *name, const char *linkage_name, LLVMZigDIFile *file, unsigned lineno, const char *name, const char *linkage_name, LLVMZigDIFile *file, unsigned lineno,
LLVMZigDIType *fn_di_type, bool is_local_to_unit, bool is_definition, unsigned scope_line, LLVMZigDIType *fn_di_type, bool is_local_to_unit, bool is_definition, unsigned scope_line,
unsigned flags, bool is_optimized, LLVMValueRef function) unsigned flags, bool is_optimized, LLVMZigDISubprogram *decl_subprogram)
{ {
Function *unwrapped_function = reinterpret_cast<Function*>(unwrap(function));
DISubroutineType *di_sub_type = static_cast<DISubroutineType*>(reinterpret_cast<DIType*>(fn_di_type)); DISubroutineType *di_sub_type = static_cast<DISubroutineType*>(reinterpret_cast<DIType*>(fn_di_type));
DISubprogram *result = reinterpret_cast<DIBuilder*>(dibuilder)->createFunction( DISubprogram *result = reinterpret_cast<DIBuilder*>(dibuilder)->createFunction(
reinterpret_cast<DIScope*>(scope), reinterpret_cast<DIScope*>(scope),
@ -457,7 +464,9 @@ LLVMZigDISubprogram *LLVMZigCreateFunction(LLVMZigDIBuilder *dibuilder, LLVMZigD
reinterpret_cast<DIFile*>(file), reinterpret_cast<DIFile*>(file),
lineno, lineno,
di_sub_type, di_sub_type,
is_local_to_unit, is_definition, scope_line, flags, is_optimized, unwrapped_function); is_local_to_unit, is_definition, scope_line, flags, is_optimized,
nullptr,
reinterpret_cast<DISubprogram *>(decl_subprogram));
return reinterpret_cast<LLVMZigDISubprogram*>(result); return reinterpret_cast<LLVMZigDISubprogram*>(result);
} }
@ -509,7 +518,7 @@ void LLVMZigSetFastMath(LLVMBuilderRef builder_wrapped, bool on_state) {
if (on_state) { if (on_state) {
FastMathFlags fmf; FastMathFlags fmf;
fmf.setUnsafeAlgebra(); fmf.setUnsafeAlgebra();
unwrap(builder_wrapped)->SetFastMathFlags(fmf); unwrap(builder_wrapped)->setFastMathFlags(fmf);
} else { } else {
unwrap(builder_wrapped)->clearFastMathFlags(); unwrap(builder_wrapped)->clearFastMathFlags();
} }
@ -563,6 +572,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
switch (sub_arch) { switch (sub_arch) {
case ZigLLVM_NoSubArch: case ZigLLVM_NoSubArch:
return "(none)"; return "(none)";
case ZigLLVM_ARMSubArch_v8_2a:
return "v8_2a";
case ZigLLVM_ARMSubArch_v8_1a: case ZigLLVM_ARMSubArch_v8_1a:
return "v8_1a"; return "v8_1a";
case ZigLLVM_ARMSubArch_v8: case ZigLLVM_ARMSubArch_v8:
@ -575,6 +586,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
return "v7m"; return "v7m";
case ZigLLVM_ARMSubArch_v7s: case ZigLLVM_ARMSubArch_v7s:
return "v7s"; return "v7s";
case ZigLLVM_ARMSubArch_v7k:
return "v7k";
case ZigLLVM_ARMSubArch_v6: case ZigLLVM_ARMSubArch_v6:
return "v6"; return "v6";
case ZigLLVM_ARMSubArch_v6m: case ZigLLVM_ARMSubArch_v6m:
@ -626,51 +639,8 @@ enum FloatAbi {
FloatAbiSoftFp, FloatAbiSoftFp,
}; };
static int get_arm_sub_arch_version(const Triple &triple) {
return ARMTargetParser::parseArchVersion(triple.getArchName());
}
static FloatAbi get_float_abi(const Triple &triple) { static FloatAbi get_float_abi(const Triple &triple) {
switch (triple.getOS()) { zig_panic("TODO implement get_float_abi for ARM");
case Triple::Darwin:
case Triple::MacOSX:
case Triple::IOS:
if (get_arm_sub_arch_version(triple) == 6 ||
get_arm_sub_arch_version(triple) == 7)
{
return FloatAbiSoftFp;
} else {
return FloatAbiSoft;
}
case Triple::Win32:
return FloatAbiHard;
case Triple::FreeBSD:
switch (triple.getEnvironment()) {
case Triple::GNUEABIHF:
return FloatAbiHard;
default:
return FloatAbiSoft;
}
default:
switch (triple.getEnvironment()) {
case Triple::GNUEABIHF:
return FloatAbiHard;
case Triple::GNUEABI:
return FloatAbiSoftFp;
case Triple::EABIHF:
return FloatAbiHard;
case Triple::EABI:
return FloatAbiSoftFp;
case Triple::Android:
if (get_arm_sub_arch_version(triple) == 7) {
return FloatAbiSoftFp;
} else {
return FloatAbiSoft;
}
default:
return FloatAbiSoft;
}
}
} }
Buf *get_dynamic_linker(LLVMTargetMachineRef target_machine_ref) { Buf *get_dynamic_linker(LLVMTargetMachineRef target_machine_ref) {

View File

@ -87,7 +87,7 @@ void LLVMZigReplaceDebugArrays(LLVMZigDIBuilder *dibuilder, LLVMZigDIType *type,
LLVMZigDIType **types_array, int types_array_len); LLVMZigDIType **types_array, int types_array_len);
LLVMZigDIType *LLVMZigCreateSubroutineType(LLVMZigDIBuilder *dibuilder_wrapped, LLVMZigDIType *LLVMZigCreateSubroutineType(LLVMZigDIBuilder *dibuilder_wrapped,
LLVMZigDIFile *file, LLVMZigDIType **types_array, int types_array_len, unsigned flags); LLVMZigDIType **types_array, int types_array_len, unsigned flags);
unsigned LLVMZigEncoding_DW_ATE_unsigned(void); unsigned LLVMZigEncoding_DW_ATE_unsigned(void);
unsigned LLVMZigEncoding_DW_ATE_signed(void); unsigned LLVMZigEncoding_DW_ATE_signed(void);
@ -96,8 +96,7 @@ unsigned LLVMZigEncoding_DW_ATE_boolean(void);
unsigned LLVMZigEncoding_DW_ATE_unsigned_char(void); unsigned LLVMZigEncoding_DW_ATE_unsigned_char(void);
unsigned LLVMZigEncoding_DW_ATE_signed_char(void); unsigned LLVMZigEncoding_DW_ATE_signed_char(void);
unsigned LLVMZigLang_DW_LANG_C99(void); unsigned LLVMZigLang_DW_LANG_C99(void);
unsigned LLVMZigTag_DW_auto_variable(void); unsigned LLVMZigTag_DW_variable(void);
unsigned LLVMZigTag_DW_arg_variable(void);
unsigned LLVMZigTag_DW_structure_type(void); unsigned LLVMZigTag_DW_structure_type(void);
LLVMZigDIBuilder *LLVMZigCreateDIBuilder(LLVMModuleRef module, bool allow_unresolved); LLVMZigDIBuilder *LLVMZigCreateDIBuilder(LLVMModuleRef module, bool allow_unresolved);
@ -110,7 +109,11 @@ LLVMZigDIScope *LLVMZigFileToScope(LLVMZigDIFile *difile);
LLVMZigDIScope *LLVMZigSubprogramToScope(LLVMZigDISubprogram *subprogram); LLVMZigDIScope *LLVMZigSubprogramToScope(LLVMZigDISubprogram *subprogram);
LLVMZigDIScope *LLVMZigTypeToScope(LLVMZigDIType *type); LLVMZigDIScope *LLVMZigTypeToScope(LLVMZigDIType *type);
LLVMZigDILocalVariable *LLVMZigCreateLocalVariable(LLVMZigDIBuilder *dbuilder, unsigned tag, LLVMZigDILocalVariable *LLVMZigCreateAutoVariable(LLVMZigDIBuilder *dbuilder,
LLVMZigDIScope *scope, const char *name, LLVMZigDIFile *file, unsigned line_no,
LLVMZigDIType *type, bool always_preserve, unsigned flags);
LLVMZigDILocalVariable *LLVMZigCreateParameterVariable(LLVMZigDIBuilder *dbuilder,
LLVMZigDIScope *scope, const char *name, LLVMZigDIFile *file, unsigned line_no, LLVMZigDIScope *scope, const char *name, LLVMZigDIFile *file, unsigned line_no,
LLVMZigDIType *type, bool always_preserve, unsigned flags, unsigned arg_no); LLVMZigDIType *type, bool always_preserve, unsigned flags, unsigned arg_no);
@ -127,7 +130,7 @@ LLVMZigDIFile *LLVMZigCreateFile(LLVMZigDIBuilder *dibuilder, const char *filena
LLVMZigDISubprogram *LLVMZigCreateFunction(LLVMZigDIBuilder *dibuilder, LLVMZigDIScope *scope, LLVMZigDISubprogram *LLVMZigCreateFunction(LLVMZigDIBuilder *dibuilder, LLVMZigDIScope *scope,
const char *name, const char *linkage_name, LLVMZigDIFile *file, unsigned lineno, const char *name, const char *linkage_name, LLVMZigDIFile *file, unsigned lineno,
LLVMZigDIType *fn_di_type, bool is_local_to_unit, bool is_definition, unsigned scope_line, LLVMZigDIType *fn_di_type, bool is_local_to_unit, bool is_definition, unsigned scope_line,
unsigned flags, bool is_optimized, LLVMValueRef function); unsigned flags, bool is_optimized, LLVMZigDISubprogram *decl_subprogram);
void LLVMZigDIBuilderFinalize(LLVMZigDIBuilder *dibuilder); void LLVMZigDIBuilderFinalize(LLVMZigDIBuilder *dibuilder);
@ -152,6 +155,7 @@ enum ZigLLVM_ArchType {
ZigLLVM_armeb, // ARM (big endian): armeb ZigLLVM_armeb, // ARM (big endian): armeb
ZigLLVM_aarch64, // AArch64 (little endian): aarch64 ZigLLVM_aarch64, // AArch64 (little endian): aarch64
ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be
ZigLLVM_avr, // AVR: Atmel AVR microcontroller
ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian) ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian)
ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian) ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
ZigLLVM_hexagon, // Hexagon: hexagon ZigLLVM_hexagon, // Hexagon: hexagon
@ -177,8 +181,8 @@ enum ZigLLVM_ArchType {
ZigLLVM_xcore, // XCore: xcore ZigLLVM_xcore, // XCore: xcore
ZigLLVM_nvptx, // NVPTX: 32-bit ZigLLVM_nvptx, // NVPTX: 32-bit
ZigLLVM_nvptx64, // NVPTX: 64-bit ZigLLVM_nvptx64, // NVPTX: 64-bit
ZigLLVM_le32, // le32: generic little-endian 32-bit CPU (PNaCl / Emscripten) ZigLLVM_le32, // le32: generic little-endian 32-bit CPU (PNaCl)
ZigLLVM_le64, // le64: generic little-endian 64-bit CPU (PNaCl / Emscripten) ZigLLVM_le64, // le64: generic little-endian 64-bit CPU (PNaCl)
ZigLLVM_amdil, // AMDIL ZigLLVM_amdil, // AMDIL
ZigLLVM_amdil64, // AMDIL with 64-bit pointers ZigLLVM_amdil64, // AMDIL with 64-bit pointers
ZigLLVM_hsail, // AMD HSAIL ZigLLVM_hsail, // AMD HSAIL
@ -196,12 +200,14 @@ enum ZigLLVM_ArchType {
enum ZigLLVM_SubArchType { enum ZigLLVM_SubArchType {
ZigLLVM_NoSubArch, ZigLLVM_NoSubArch,
ZigLLVM_ARMSubArch_v8_2a,
ZigLLVM_ARMSubArch_v8_1a, ZigLLVM_ARMSubArch_v8_1a,
ZigLLVM_ARMSubArch_v8, ZigLLVM_ARMSubArch_v8,
ZigLLVM_ARMSubArch_v7, ZigLLVM_ARMSubArch_v7,
ZigLLVM_ARMSubArch_v7em, ZigLLVM_ARMSubArch_v7em,
ZigLLVM_ARMSubArch_v7m, ZigLLVM_ARMSubArch_v7m,
ZigLLVM_ARMSubArch_v7s, ZigLLVM_ARMSubArch_v7s,
ZigLLVM_ARMSubArch_v7k,
ZigLLVM_ARMSubArch_v6, ZigLLVM_ARMSubArch_v6,
ZigLLVM_ARMSubArch_v6m, ZigLLVM_ARMSubArch_v6m,
ZigLLVM_ARMSubArch_v6k, ZigLLVM_ARMSubArch_v6k,
@ -228,8 +234,9 @@ enum ZigLLVM_VendorType {
ZigLLVM_MipsTechnologies, ZigLLVM_MipsTechnologies,
ZigLLVM_NVIDIA, ZigLLVM_NVIDIA,
ZigLLVM_CSR, ZigLLVM_CSR,
ZigLLVM_Myriad,
ZigLLVM_LastVendorType = ZigLLVM_CSR ZigLLVM_LastVendorType = ZigLLVM_Myriad
}; };
enum ZigLLVM_OSType { enum ZigLLVM_OSType {
ZigLLVM_UnknownOS, ZigLLVM_UnknownOS,
@ -258,8 +265,11 @@ enum ZigLLVM_OSType {
ZigLLVM_NVCL, // NVIDIA OpenCL ZigLLVM_NVCL, // NVIDIA OpenCL
ZigLLVM_AMDHSA, // AMD HSA Runtime ZigLLVM_AMDHSA, // AMD HSA Runtime
ZigLLVM_PS4, ZigLLVM_PS4,
ZigLLVM_ELFIAMCU,
ZigLLVM_TvOS, // Apple tvOS
ZigLLVM_WatchOS, // Apple watchOS
ZigLLVM_LastOSType = ZigLLVM_PS4 ZigLLVM_LastOSType = ZigLLVM_WatchOS
}; };
enum ZigLLVM_EnvironmentType { enum ZigLLVM_EnvironmentType {
ZigLLVM_UnknownEnvironment, ZigLLVM_UnknownEnvironment,
@ -276,8 +286,9 @@ enum ZigLLVM_EnvironmentType {
ZigLLVM_MSVC, ZigLLVM_MSVC,
ZigLLVM_Itanium, ZigLLVM_Itanium,
ZigLLVM_Cygnus, ZigLLVM_Cygnus,
ZigLLVM_AMDOpenCL,
ZigLLVM_LastEnvironmentType = ZigLLVM_Cygnus, ZigLLVM_CoreCLR,
ZigLLVM_LastEnvironmentType = ZigLLVM_CoreCLR
}; };
enum ZigLLVM_ObjectFormatType { enum ZigLLVM_ObjectFormatType {
ZigLLVM_UnknownObjectFormat, ZigLLVM_UnknownObjectFormat,