From 935cce2414d11a7d0dd20416a0e8118a8474ce6e Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sat, 12 Oct 2019 15:27:42 +0200 Subject: [PATCH 1/6] Fix lld search path --- cmake/Findlld.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/Findlld.cmake b/cmake/Findlld.cmake index 7f842c0466..cab6f34b57 100644 --- a/cmake/Findlld.cmake +++ b/cmake/Findlld.cmake @@ -8,13 +8,13 @@ find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h PATHS - /usr/lib/llvm-10.0/include + /usr/lib/llvm-10/include /usr/local/llvm100/include /mingw64/include) find_library(LLD_LIBRARY NAMES lld-10.0 lld100 lld PATHS - /usr/lib/llvm-10.0/lib + /usr/lib/llvm-10/lib /usr/local/llvm100/lib ) if(EXISTS ${LLD_LIBRARY}) @@ -24,7 +24,7 @@ else() string(TOUPPER ${_libname_} _prettylibname_) find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_} PATHS - /usr/lib/llvm-10.0/lib + /usr/lib/llvm-10/lib /usr/local/llvm100/lib /mingw64/lib /c/msys64/mingw64/lib From 8a36064c9695a82974d7ea87728bd70db77ae6da Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sat, 12 Oct 2019 15:27:57 +0200 Subject: [PATCH 2/6] Replace usage of createDriverOptTable --- src/zig_clang_cc1as_main.cpp | 10 +++++----- src/zig_clang_driver.cpp | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/zig_clang_cc1as_main.cpp b/src/zig_clang_cc1as_main.cpp index a2902b6aa9..0ce9d20825 100644 --- a/src/zig_clang_cc1as_main.cpp +++ b/src/zig_clang_cc1as_main.cpp @@ -174,11 +174,11 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, bool Success = true; // Parse the arguments. - std::unique_ptr OptTbl(createDriverOptTable()); + const OptTable &OptTbl = getDriverOptTable(); const unsigned IncludedFlagsBitmask = options::CC1AsOption; unsigned MissingArgIndex, MissingArgCount; - InputArgList Args = OptTbl->ParseArgs(Argv, MissingArgIndex, MissingArgCount, + InputArgList Args = OptTbl.ParseArgs(Argv, MissingArgIndex, MissingArgCount, IncludedFlagsBitmask); // Check for missing argument error. @@ -192,7 +192,7 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, for (const Arg *A : Args.filtered(OPT_UNKNOWN)) { auto ArgString = A->getAsString(Args); std::string Nearest; - if (OptTbl->findNearest(ArgString, Nearest, IncludedFlagsBitmask) > 1) + if (OptTbl.findNearest(ArgString, Nearest, IncludedFlagsBitmask) > 1) Diags.Report(diag::err_drv_unknown_argument) << ArgString; else Diags.Report(diag::err_drv_unknown_argument_with_suggestion) @@ -569,8 +569,8 @@ int cc1as_main(ArrayRef Argv, const char *Argv0, void *MainAddr) { return 1; if (Asm.ShowHelp) { - std::unique_ptr Opts(driver::createDriverOptTable()); - Opts->PrintHelp(llvm::outs(), "clang -cc1as [options] file...", + const OptTable &Opts = getDriverOptTable(); + Opts.PrintHelp(llvm::outs(), "clang -cc1as [options] file...", "Clang Integrated Assembler", /*Include=*/driver::options::CC1AsOption, /*Exclude=*/0, /*ShowAllAliases=*/false); diff --git a/src/zig_clang_driver.cpp b/src/zig_clang_driver.cpp index dd9fb042ec..79e3a34126 100644 --- a/src/zig_clang_driver.cpp +++ b/src/zig_clang_driver.cpp @@ -268,10 +268,10 @@ static void FixupDiagPrefixExeName(TextDiagnosticPrinter *DiagClient, static DiagnosticOptions * CreateAndPopulateDiagOpts(ArrayRef argv) { auto *DiagOpts = new DiagnosticOptions; - std::unique_ptr Opts(createDriverOptTable()); + const OptTable &Opts = getDriverOptTable(); unsigned MissingArgIndex, MissingArgCount; InputArgList Args = - Opts->ParseArgs(argv.slice(1), MissingArgIndex, MissingArgCount); + Opts.ParseArgs(argv.slice(1), MissingArgIndex, MissingArgCount); // We ignore MissingArgCount and the return value of ParseDiagnosticArgs. // Any errors that would be diagnosed here will also be diagnosed later, // when the DiagnosticsEngine actually exists. From 6439759298c13c884e92a59fbcba6fe20d81ced5 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sat, 12 Oct 2019 16:15:58 +0200 Subject: [PATCH 3/6] Add/shuffle several enum members to match Clang's API --- src/translate_c.cpp | 24 +++++++++++ src/zig_clang.cpp | 100 +++++++++++++++++++++++++++----------------- src/zig_clang.h | 90 ++++++++++++++++++++++----------------- 3 files changed, 137 insertions(+), 77 deletions(-) diff --git a/src/translate_c.cpp b/src/translate_c.cpp index 660b3ad7d1..60ed5b45d9 100644 --- a/src/translate_c.cpp +++ b/src/translate_c.cpp @@ -1038,6 +1038,18 @@ static AstNode *trans_type(Context *c, const ZigClangType *ty, ZigClangSourceLoc case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeResultDualRefStreamout: case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeSingleRefStreamin: case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeDualRefStreamin: + case ZigClangBuiltinTypeSveInt8: + case ZigClangBuiltinTypeSveInt16: + case ZigClangBuiltinTypeSveInt32: + case ZigClangBuiltinTypeSveInt64: + case ZigClangBuiltinTypeSveUint8: + case ZigClangBuiltinTypeSveUint16: + case ZigClangBuiltinTypeSveUint32: + case ZigClangBuiltinTypeSveUint64: + case ZigClangBuiltinTypeSveFloat16: + case ZigClangBuiltinTypeSveFloat32: + case ZigClangBuiltinTypeSveFloat64: + case ZigClangBuiltinTypeSveBool: emit_warning(c, source_loc, "unsupported builtin type"); return nullptr; } @@ -2900,6 +2912,18 @@ static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope * case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeResultDualRefStreamout: case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeSingleRefStreamin: case ZigClangBuiltinTypeOCLIntelSubgroupAVCImeDualRefStreamin: + case ZigClangBuiltinTypeSveInt8: + case ZigClangBuiltinTypeSveInt16: + case ZigClangBuiltinTypeSveInt32: + case ZigClangBuiltinTypeSveInt64: + case ZigClangBuiltinTypeSveUint8: + case ZigClangBuiltinTypeSveUint16: + case ZigClangBuiltinTypeSveUint32: + case ZigClangBuiltinTypeSveUint64: + case ZigClangBuiltinTypeSveFloat16: + case ZigClangBuiltinTypeSveFloat32: + case ZigClangBuiltinTypeSveFloat64: + case ZigClangBuiltinTypeSveBool: return res; } break; diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp index 2cf8ebc462..99bd7bc721 100644 --- a/src/zig_clang.cpp +++ b/src/zig_clang.cpp @@ -325,54 +325,54 @@ void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) { } } +static_assert((clang::Type::TypeClass)ZigClangType_Adjusted == clang::Type::Adjusted, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Atomic == clang::Type::Atomic, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Attributed == clang::Type::Attributed, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Auto == clang::Type::Auto, ""); +static_assert((clang::Type::TypeClass)ZigClangType_BlockPointer == clang::Type::BlockPointer, ""); static_assert((clang::Type::TypeClass)ZigClangType_Builtin == clang::Type::Builtin, ""); static_assert((clang::Type::TypeClass)ZigClangType_Complex == clang::Type::Complex, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Pointer == clang::Type::Pointer, ""); -static_assert((clang::Type::TypeClass)ZigClangType_BlockPointer == clang::Type::BlockPointer, ""); -static_assert((clang::Type::TypeClass)ZigClangType_LValueReference == clang::Type::LValueReference, ""); -static_assert((clang::Type::TypeClass)ZigClangType_RValueReference == clang::Type::RValueReference, ""); -static_assert((clang::Type::TypeClass)ZigClangType_MemberPointer == clang::Type::MemberPointer, ""); static_assert((clang::Type::TypeClass)ZigClangType_ConstantArray == clang::Type::ConstantArray, ""); -static_assert((clang::Type::TypeClass)ZigClangType_IncompleteArray == clang::Type::IncompleteArray, ""); -static_assert((clang::Type::TypeClass)ZigClangType_VariableArray == clang::Type::VariableArray, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Decayed == clang::Type::Decayed, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Decltype == clang::Type::Decltype, ""); +static_assert((clang::Type::TypeClass)ZigClangType_DeducedTemplateSpecialization == clang::Type::DeducedTemplateSpecialization, ""); +static_assert((clang::Type::TypeClass)ZigClangType_DependentAddressSpace == clang::Type::DependentAddressSpace, ""); +static_assert((clang::Type::TypeClass)ZigClangType_DependentName == clang::Type::DependentName, ""); static_assert((clang::Type::TypeClass)ZigClangType_DependentSizedArray == clang::Type::DependentSizedArray, ""); static_assert((clang::Type::TypeClass)ZigClangType_DependentSizedExtVector == clang::Type::DependentSizedExtVector, ""); -static_assert((clang::Type::TypeClass)ZigClangType_DependentAddressSpace == clang::Type::DependentAddressSpace, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Vector == clang::Type::Vector, ""); +static_assert((clang::Type::TypeClass)ZigClangType_DependentTemplateSpecialization == clang::Type::DependentTemplateSpecialization, ""); static_assert((clang::Type::TypeClass)ZigClangType_DependentVector == clang::Type::DependentVector, ""); -static_assert((clang::Type::TypeClass)ZigClangType_ExtVector == clang::Type::ExtVector, ""); -static_assert((clang::Type::TypeClass)ZigClangType_FunctionProto == clang::Type::FunctionProto, ""); -static_assert((clang::Type::TypeClass)ZigClangType_FunctionNoProto == clang::Type::FunctionNoProto, ""); -static_assert((clang::Type::TypeClass)ZigClangType_UnresolvedUsing == clang::Type::UnresolvedUsing, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Paren == clang::Type::Paren, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Typedef == clang::Type::Typedef, ""); -static_assert((clang::Type::TypeClass)ZigClangType_MacroQualified == clang::Type::MacroQualified, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Adjusted == clang::Type::Adjusted, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Decayed == clang::Type::Decayed, ""); -static_assert((clang::Type::TypeClass)ZigClangType_TypeOfExpr == clang::Type::TypeOfExpr, ""); -static_assert((clang::Type::TypeClass)ZigClangType_TypeOf == clang::Type::TypeOf, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Decltype == clang::Type::Decltype, ""); -static_assert((clang::Type::TypeClass)ZigClangType_UnaryTransform == clang::Type::UnaryTransform, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Record == clang::Type::Record, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Enum == clang::Type::Enum, ""); static_assert((clang::Type::TypeClass)ZigClangType_Elaborated == clang::Type::Elaborated, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Attributed == clang::Type::Attributed, ""); -static_assert((clang::Type::TypeClass)ZigClangType_TemplateTypeParm == clang::Type::TemplateTypeParm, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Enum == clang::Type::Enum, ""); +static_assert((clang::Type::TypeClass)ZigClangType_ExtVector == clang::Type::ExtVector, ""); +static_assert((clang::Type::TypeClass)ZigClangType_FunctionNoProto == clang::Type::FunctionNoProto, ""); +static_assert((clang::Type::TypeClass)ZigClangType_FunctionProto == clang::Type::FunctionProto, ""); +static_assert((clang::Type::TypeClass)ZigClangType_IncompleteArray == clang::Type::IncompleteArray, ""); +static_assert((clang::Type::TypeClass)ZigClangType_InjectedClassName == clang::Type::InjectedClassName, ""); +static_assert((clang::Type::TypeClass)ZigClangType_LValueReference == clang::Type::LValueReference, ""); +static_assert((clang::Type::TypeClass)ZigClangType_MacroQualified == clang::Type::MacroQualified, ""); +static_assert((clang::Type::TypeClass)ZigClangType_MemberPointer == clang::Type::MemberPointer, ""); +static_assert((clang::Type::TypeClass)ZigClangType_ObjCInterface == clang::Type::ObjCInterface, ""); +static_assert((clang::Type::TypeClass)ZigClangType_ObjCObject == clang::Type::ObjCObject, ""); +static_assert((clang::Type::TypeClass)ZigClangType_ObjCObjectPointer == clang::Type::ObjCObjectPointer, ""); +static_assert((clang::Type::TypeClass)ZigClangType_ObjCTypeParam == clang::Type::ObjCTypeParam, ""); +static_assert((clang::Type::TypeClass)ZigClangType_PackExpansion == clang::Type::PackExpansion, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Paren == clang::Type::Paren, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Pipe == clang::Type::Pipe, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Pointer == clang::Type::Pointer, ""); +static_assert((clang::Type::TypeClass)ZigClangType_RValueReference == clang::Type::RValueReference, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Record == clang::Type::Record, ""); static_assert((clang::Type::TypeClass)ZigClangType_SubstTemplateTypeParm == clang::Type::SubstTemplateTypeParm, ""); static_assert((clang::Type::TypeClass)ZigClangType_SubstTemplateTypeParmPack == clang::Type::SubstTemplateTypeParmPack, ""); static_assert((clang::Type::TypeClass)ZigClangType_TemplateSpecialization == clang::Type::TemplateSpecialization, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Auto == clang::Type::Auto, ""); -static_assert((clang::Type::TypeClass)ZigClangType_DeducedTemplateSpecialization == clang::Type::DeducedTemplateSpecialization, ""); -static_assert((clang::Type::TypeClass)ZigClangType_InjectedClassName == clang::Type::InjectedClassName, ""); -static_assert((clang::Type::TypeClass)ZigClangType_DependentName == clang::Type::DependentName, ""); -static_assert((clang::Type::TypeClass)ZigClangType_DependentTemplateSpecialization == clang::Type::DependentTemplateSpecialization, ""); -static_assert((clang::Type::TypeClass)ZigClangType_PackExpansion == clang::Type::PackExpansion, ""); -static_assert((clang::Type::TypeClass)ZigClangType_ObjCTypeParam == clang::Type::ObjCTypeParam, ""); -static_assert((clang::Type::TypeClass)ZigClangType_ObjCObject == clang::Type::ObjCObject, ""); -static_assert((clang::Type::TypeClass)ZigClangType_ObjCInterface == clang::Type::ObjCInterface, ""); -static_assert((clang::Type::TypeClass)ZigClangType_ObjCObjectPointer == clang::Type::ObjCObjectPointer, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Pipe == clang::Type::Pipe, ""); -static_assert((clang::Type::TypeClass)ZigClangType_Atomic == clang::Type::Atomic, ""); +static_assert((clang::Type::TypeClass)ZigClangType_TemplateTypeParm == clang::Type::TemplateTypeParm, ""); +static_assert((clang::Type::TypeClass)ZigClangType_TypeOf == clang::Type::TypeOf, ""); +static_assert((clang::Type::TypeClass)ZigClangType_TypeOfExpr == clang::Type::TypeOfExpr, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Typedef == clang::Type::Typedef, ""); +static_assert((clang::Type::TypeClass)ZigClangType_UnaryTransform == clang::Type::UnaryTransform, ""); +static_assert((clang::Type::TypeClass)ZigClangType_UnresolvedUsing == clang::Type::UnresolvedUsing, ""); +static_assert((clang::Type::TypeClass)ZigClangType_VariableArray == clang::Type::VariableArray, ""); +static_assert((clang::Type::TypeClass)ZigClangType_Vector == clang::Type::Vector, ""); // Detect additions to the enum void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { @@ -1027,6 +1027,18 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::OCLIntelSubgroupAVCImeResultDualRefStreamout: case clang::BuiltinType::OCLIntelSubgroupAVCImeSingleRefStreamin: case clang::BuiltinType::OCLIntelSubgroupAVCImeDualRefStreamin: + case clang::BuiltinType::SveInt8: + case clang::BuiltinType::SveInt16: + case clang::BuiltinType::SveInt32: + case clang::BuiltinType::SveInt64: + case clang::BuiltinType::SveUint8: + case clang::BuiltinType::SveUint16: + case clang::BuiltinType::SveUint32: + case clang::BuiltinType::SveUint64: + case clang::BuiltinType::SveFloat16: + case clang::BuiltinType::SveFloat32: + case clang::BuiltinType::SveFloat64: + case clang::BuiltinType::SveBool: case clang::BuiltinType::Void: case clang::BuiltinType::Bool: case clang::BuiltinType::Char_U: @@ -1147,6 +1159,18 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCIm static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCImeResultDualRefStreamout == clang::BuiltinType::OCLIntelSubgroupAVCImeResultDualRefStreamout, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCImeSingleRefStreamin == clang::BuiltinType::OCLIntelSubgroupAVCImeSingleRefStreamin, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCImeDualRefStreamin == clang::BuiltinType::OCLIntelSubgroupAVCImeDualRefStreamin, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt8 == clang::BuiltinType::SveInt8, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt16 == clang::BuiltinType::SveInt16, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt32 == clang::BuiltinType::SveInt32, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt64 == clang::BuiltinType::SveInt64, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint8 == clang::BuiltinType::SveUint8, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint16 == clang::BuiltinType::SveUint16, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint32 == clang::BuiltinType::SveUint32, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint64 == clang::BuiltinType::SveUint64, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16 == clang::BuiltinType::SveFloat16, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat32 == clang::BuiltinType::SveFloat32, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat64 == clang::BuiltinType::SveFloat64, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBool == clang::BuiltinType::SveBool, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVoid == clang::BuiltinType::Void, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBool == clang::BuiltinType::Bool, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeChar_U == clang::BuiltinType::Char_U, ""); diff --git a/src/zig_clang.h b/src/zig_clang.h index 474ec57baf..6575cf6d59 100644 --- a/src/zig_clang.h +++ b/src/zig_clang.h @@ -200,54 +200,54 @@ enum ZigClangUO { }; enum ZigClangTypeClass { + ZigClangType_Adjusted, + ZigClangType_Atomic, + ZigClangType_Attributed, + ZigClangType_Auto, + ZigClangType_BlockPointer, ZigClangType_Builtin, ZigClangType_Complex, - ZigClangType_Pointer, - ZigClangType_BlockPointer, - ZigClangType_LValueReference, - ZigClangType_RValueReference, - ZigClangType_MemberPointer, ZigClangType_ConstantArray, - ZigClangType_IncompleteArray, - ZigClangType_VariableArray, + ZigClangType_Decayed, + ZigClangType_Decltype, + ZigClangType_DeducedTemplateSpecialization, + ZigClangType_DependentAddressSpace, + ZigClangType_DependentName, ZigClangType_DependentSizedArray, ZigClangType_DependentSizedExtVector, - ZigClangType_DependentAddressSpace, - ZigClangType_Vector, - ZigClangType_DependentVector, - ZigClangType_ExtVector, - ZigClangType_FunctionProto, - ZigClangType_FunctionNoProto, - ZigClangType_UnresolvedUsing, - ZigClangType_Paren, - ZigClangType_Typedef, - ZigClangType_MacroQualified, - ZigClangType_Adjusted, - ZigClangType_Decayed, - ZigClangType_TypeOfExpr, - ZigClangType_TypeOf, - ZigClangType_Decltype, - ZigClangType_UnaryTransform, - ZigClangType_Record, - ZigClangType_Enum, - ZigClangType_Elaborated, - ZigClangType_Attributed, - ZigClangType_TemplateTypeParm, - ZigClangType_SubstTemplateTypeParm, - ZigClangType_SubstTemplateTypeParmPack, - ZigClangType_TemplateSpecialization, - ZigClangType_Auto, - ZigClangType_DeducedTemplateSpecialization, - ZigClangType_InjectedClassName, - ZigClangType_DependentName, ZigClangType_DependentTemplateSpecialization, - ZigClangType_PackExpansion, - ZigClangType_ObjCTypeParam, - ZigClangType_ObjCObject, + ZigClangType_DependentVector, + ZigClangType_Elaborated, + ZigClangType_Enum, + ZigClangType_ExtVector, + ZigClangType_FunctionNoProto, + ZigClangType_FunctionProto, + ZigClangType_IncompleteArray, + ZigClangType_InjectedClassName, + ZigClangType_LValueReference, + ZigClangType_MacroQualified, + ZigClangType_MemberPointer, ZigClangType_ObjCInterface, ZigClangType_ObjCObjectPointer, + ZigClangType_ObjCObject, + ZigClangType_ObjCTypeParam, + ZigClangType_PackExpansion, + ZigClangType_Paren, ZigClangType_Pipe, - ZigClangType_Atomic, + ZigClangType_Pointer, + ZigClangType_RValueReference, + ZigClangType_Record, + ZigClangType_SubstTemplateTypeParmPack, + ZigClangType_SubstTemplateTypeParm, + ZigClangType_TemplateSpecialization, + ZigClangType_TemplateTypeParm, + ZigClangType_TypeOfExpr, + ZigClangType_TypeOf, + ZigClangType_Typedef, + ZigClangType_UnaryTransform, + ZigClangType_UnresolvedUsing, + ZigClangType_VariableArray, + ZigClangType_Vector, }; enum ZigClangStmtClass { @@ -646,6 +646,18 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeOCLIntelSubgroupAVCImeResultDualRefStreamout, ZigClangBuiltinTypeOCLIntelSubgroupAVCImeSingleRefStreamin, ZigClangBuiltinTypeOCLIntelSubgroupAVCImeDualRefStreamin, + ZigClangBuiltinTypeSveInt8, + ZigClangBuiltinTypeSveInt16, + ZigClangBuiltinTypeSveInt32, + ZigClangBuiltinTypeSveInt64, + ZigClangBuiltinTypeSveUint8, + ZigClangBuiltinTypeSveUint16, + ZigClangBuiltinTypeSveUint32, + ZigClangBuiltinTypeSveUint64, + ZigClangBuiltinTypeSveFloat16, + ZigClangBuiltinTypeSveFloat32, + ZigClangBuiltinTypeSveFloat64, + ZigClangBuiltinTypeSveBool, ZigClangBuiltinTypeVoid, ZigClangBuiltinTypeBool, ZigClangBuiltinTypeChar_U, From fd4c8a40e94d4717df59700371c6e60651cf5e0d Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sat, 12 Oct 2019 16:18:44 +0200 Subject: [PATCH 4/6] Replace llvm::make_unique with std::make_unique --- src/zig_clang_cc1_main.cpp | 4 ++-- src/zig_clang_cc1as_main.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/zig_clang_cc1_main.cpp b/src/zig_clang_cc1_main.cpp index ca5f360c2b..2255a9c377 100644 --- a/src/zig_clang_cc1_main.cpp +++ b/src/zig_clang_cc1_main.cpp @@ -193,8 +193,8 @@ int cc1_main(ArrayRef Argv, const char *Argv0, void *MainAddr) { // Register the support for object-file-wrapped Clang modules. auto PCHOps = Clang->getPCHContainerOperations(); - PCHOps->registerWriter(llvm::make_unique()); - PCHOps->registerReader(llvm::make_unique()); + PCHOps->registerWriter(std::make_unique()); + PCHOps->registerReader(std::make_unique()); // Initialize targets first, so that --version shows registered targets. llvm::InitializeAllTargets(); diff --git a/src/zig_clang_cc1as_main.cpp b/src/zig_clang_cc1as_main.cpp index 0ce9d20825..08c094871d 100644 --- a/src/zig_clang_cc1as_main.cpp +++ b/src/zig_clang_cc1as_main.cpp @@ -312,7 +312,7 @@ getOutputStream(StringRef Path, DiagnosticsEngine &Diags, bool Binary) { sys::RemoveFileOnSignal(Path); std::error_code EC; - auto Out = llvm::make_unique( + auto Out = std::make_unique( Path, EC, (Binary ? sys::fs::F_None : sys::fs::F_Text)); if (EC) { Diags.Report(diag::err_fe_unable_to_open_output) << Path << EC.message(); @@ -445,7 +445,7 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts, std::unique_ptr MAB( TheTarget->createMCAsmBackend(*STI, *MRI, MCOptions)); - auto FOut = llvm::make_unique(*Out); + auto FOut = std::make_unique(*Out); Str.reset(TheTarget->createAsmStreamer( Ctx, std::move(FOut), /*asmverbose*/ true, /*useDwarfDirectory*/ true, IP, std::move(CE), std::move(MAB), @@ -456,7 +456,7 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts, assert(Opts.OutputType == AssemblerInvocation::FT_Obj && "Invalid file type!"); if (!FDOS->supportsSeeking()) { - BOS = make_unique(*FDOS); + BOS = std::make_unique(*FDOS); Out = BOS.get(); } @@ -590,7 +590,7 @@ int cc1as_main(ArrayRef Argv, const char *Argv0, void *MainAddr) { // FIXME: Remove this, one day. if (!Asm.LLVMArgs.empty()) { unsigned NumArgs = Asm.LLVMArgs.size(); - auto Args = llvm::make_unique(NumArgs + 2); + auto Args = std::make_unique(NumArgs + 2); Args[0] = "clang (LLVM option parsing)"; for (unsigned i = 0; i != NumArgs; ++i) Args[i + 1] = Asm.LLVMArgs[i].c_str(); From 3ea0a76fb66bd94ea4b1381f58791513fadf6a04 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sat, 12 Oct 2019 16:25:51 +0200 Subject: [PATCH 5/6] More clang API changes --- src/zig_clang.cpp | 5 +++-- src/zig_clang_cc1_main.cpp | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp index 99bd7bc721..c960376249 100644 --- a/src/zig_clang.cpp +++ b/src/zig_clang.cpp @@ -1831,14 +1831,15 @@ ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char bool allow_pch_with_compiler_errors = false; bool single_file_parse = false; bool for_serialization = false; + bool retain_excluded_conditional_blocks = false; std::unique_ptr *err_unit = new std::unique_ptr(); clang::ASTUnit *ast_unit = clang::ASTUnit::LoadFromCommandLine( args_begin, args_end, pch_container_ops, diags, resources_path, only_local_decls, clang::CaptureDiagsKind::All, clang::None, true, 0, clang::TU_Complete, false, false, allow_pch_with_compiler_errors, clang::SkipFunctionBodiesScope::None, - single_file_parse, user_files_are_volatile, for_serialization, clang::None, err_unit, - nullptr); + single_file_parse, user_files_are_volatile, for_serialization, retain_excluded_conditional_blocks, + clang::None, err_unit, nullptr); // Early failures in LoadFromCommandLine may return with ErrUnit unset. if (!ast_unit && !err_unit) { diff --git a/src/zig_clang_cc1_main.cpp b/src/zig_clang_cc1_main.cpp index 2255a9c377..d3515aa070 100644 --- a/src/zig_clang_cc1_main.cpp +++ b/src/zig_clang_cc1_main.cpp @@ -208,10 +208,10 @@ int cc1_main(ArrayRef Argv, const char *Argv0, void *MainAddr) { TextDiagnosticBuffer *DiagsBuffer = new TextDiagnosticBuffer; DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagsBuffer); bool Success = CompilerInvocation::CreateFromArgs( - Clang->getInvocation(), Argv.begin(), Argv.end(), Diags); + Clang->getInvocation(), Argv, Diags); if (Clang->getFrontendOpts().TimeTrace) - llvm::timeTraceProfilerInitialize(); + llvm::timeTraceProfilerInitialize(/* granularity (us) */ 500); // --print-supported-cpus takes priority over the actual compilation. if (Clang->getFrontendOpts().PrintSupportedCPUs) From f77b0b90d8daedf30e86ab09d292158e0b9af353 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sat, 12 Oct 2019 16:47:51 +0200 Subject: [PATCH 6/6] Correctly mangle frameaddress intrinsic name --- src/codegen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index 5d1f2b8bf9..9f32e3dd35 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -5256,7 +5256,7 @@ static LLVMValueRef get_frame_address_fn_val(CodeGen *g) { LLVMTypeRef fn_type = LLVMFunctionType(get_llvm_type(g, return_type), &g->builtin_types.entry_i32->llvm_type, 1, false); - g->frame_address_fn_val = LLVMAddFunction(g->module, "llvm.frameaddress", fn_type); + g->frame_address_fn_val = LLVMAddFunction(g->module, "llvm.frameaddress.p0i8", fn_type); assert(LLVMGetIntrinsicID(g->frame_address_fn_val)); return g->frame_address_fn_val;