diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-02-05 11:41:39 +0100 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2025-04-04 06:08:09 +0200 |
| commit | 8ea2e1ded522ae972fc201ca52cbc6e752c1d405 (patch) | |
| tree | 7cca61207974e9bc86422122c2c02c183cdfd242 /src | |
| parent | 156ab8750056c3ff440af0937806d8cdb2623816 (diff) | |
| download | zig-8ea2e1ded522ae972fc201ca52cbc6e752c1d405.tar.gz zig-8ea2e1ded522ae972fc201ca52cbc6e752c1d405.zip | |
compiler: Updates for LLVM/Clang 20 API changes.
Diffstat (limited to 'src')
| -rw-r--r-- | src/clang.zig | 26 | ||||
| -rw-r--r-- | src/codegen/llvm.zig | 6 | ||||
| -rw-r--r-- | src/codegen/llvm/bindings.zig | 10 | ||||
| -rw-r--r-- | src/zig_clang.cpp | 53 | ||||
| -rw-r--r-- | src/zig_clang.h | 28 | ||||
| -rw-r--r-- | src/zig_llvm.cpp | 8 | ||||
| -rw-r--r-- | src/zig_llvm.h | 12 |
7 files changed, 133 insertions, 10 deletions
diff --git a/src/clang.zig b/src/clang.zig index c12daca2bc..d807363487 100644 --- a/src/clang.zig +++ b/src/clang.zig @@ -112,13 +112,16 @@ pub const APFloatBaseSemantics = enum(c_int) { IEEEdouble, IEEEquad, PPCDoubleDouble, + PPCDoubleDoubleLegacy, Float8E5M2, Float8E5M2FNUZ, Float8E4M3, Float8E4M3FN, Float8E4M3FNUZ, Float8E4M3B11FNUZ, + Float8E3M4, FloatTF32, + Float8E8M0FNU, Float6E3M2FN, Float6E2M3FN, Float4E2M1FN, @@ -1166,6 +1169,7 @@ pub const TypeClass = enum(c_int) { Elaborated, FunctionNoProto, FunctionProto, + HLSLAttributedResource, InjectedClassName, MacroQualified, ConstantMatrix, @@ -1225,6 +1229,7 @@ const StmtClass = enum(c_int) { PackExpansionExprClass, UnresolvedMemberExprClass, UnresolvedLookupExprClass, + OpenACCAsteriskSizeExprClass, OpaqueValueExprClass, OffsetOfExprClass, ObjCSubscriptRefExprClass, @@ -1255,6 +1260,7 @@ const StmtClass = enum(c_int) { InitListExprClass, ImplicitValueInitExprClass, ImaginaryLiteralClass, + HLSLOutArgExprClass, GenericSelectionExprClass, GNUNullExprClass, FunctionParmPackExprClass, @@ -1332,13 +1338,24 @@ const StmtClass = enum(c_int) { SwitchStmtClass, DefaultStmtClass, CaseStmtClass, + SYCLKernelCallStmtClass, SEHTryStmtClass, SEHLeaveStmtClass, SEHFinallyStmtClass, SEHExceptStmtClass, ReturnStmtClass, + OpenACCWaitConstructClass, + OpenACCUpdateConstructClass, + OpenACCShutdownConstructClass, + OpenACCSetConstructClass, + OpenACCInitConstructClass, + OpenACCExitDataConstructClass, + OpenACCEnterDataConstructClass, OpenACCLoopConstructClass, + OpenACCHostDataConstructClass, + OpenACCDataConstructClass, OpenACCComputeConstructClass, + OpenACCCombinedConstructClass, ObjCForCollectionStmtClass, ObjCAutoreleasePoolStmtClass, ObjCAtTryStmtClass, @@ -1420,6 +1437,7 @@ const StmtClass = enum(c_int) { OMPCancelDirectiveClass, OMPBarrierDirectiveClass, OMPAtomicDirectiveClass, + OMPAssumeDirectiveClass, OMPCanonicalLoopClass, NullStmtClass, MSDependentExistsStmtClass, @@ -1514,6 +1532,7 @@ pub const DeclKind = enum(c_int) { TranslationUnit, TopLevelStmt, RequiresExprBody, + OutlinedFunction, LinkageSpec, ExternCContext, Export, @@ -1660,6 +1679,7 @@ pub const BuiltinTypeKind = enum(c_int) { SveFloat32, SveFloat64, SveBFloat16, + SveMFloat8, SveInt8x2, SveInt16x2, SveInt32x2, @@ -1672,6 +1692,7 @@ pub const BuiltinTypeKind = enum(c_int) { SveFloat32x2, SveFloat64x2, SveBFloat16x2, + SveMFloat8x2, SveInt8x3, SveInt16x3, SveInt32x3, @@ -1684,6 +1705,7 @@ pub const BuiltinTypeKind = enum(c_int) { SveFloat32x3, SveFloat64x3, SveBFloat16x3, + SveMFloat8x3, SveInt8x4, SveInt16x4, SveInt32x4, @@ -1696,10 +1718,12 @@ pub const BuiltinTypeKind = enum(c_int) { SveFloat32x4, SveFloat64x4, SveBFloat16x4, + SveMFloat8x4, SveBool, SveBoolx2, SveBoolx4, SveCount, + MFloat8, VectorQuad, VectorPair, RvvInt8mf8, @@ -2027,6 +2051,8 @@ pub const BuiltinTypeKind = enum(c_int) { RvvBFloat16m4x2, WasmExternRef, AMDGPUBufferRsrc, + AMDGPUNamedWorkgroupBarrier, + HLSLResource, Void, Bool, Char_U, diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 3f9a774ae9..e9559a5117 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -1053,7 +1053,11 @@ pub const Object = struct { .is_small = options.is_small, .time_report = options.time_report, .tsan = options.sanitize_thread, - .lto = options.lto != .none, + .lto = switch (options.lto) { + .none => .None, + .thin => .ThinPreLink, + .full => .FullPreLink, + }, // https://github.com/ziglang/zig/issues/21215 .allow_fast_isel = !comp.root_mod.resolved_target.result.cpu.arch.isMIPS(), .asm_filename = null, diff --git a/src/codegen/llvm/bindings.zig b/src/codegen/llvm/bindings.zig index a146e2a883..3c0782397e 100644 --- a/src/codegen/llvm/bindings.zig +++ b/src/codegen/llvm/bindings.zig @@ -90,7 +90,7 @@ pub const TargetMachine = opaque { time_report: bool, tsan: bool, sancov: bool, - lto: bool, + lto: LtoPhase, allow_fast_isel: bool, asm_filename: ?[*:0]const u8, bin_filename: ?[*:0]const u8, @@ -98,6 +98,14 @@ pub const TargetMachine = opaque { bitcode_filename: ?[*:0]const u8, coverage: Coverage, + pub const LtoPhase = enum(c_int) { + None, + ThinPreLink, + ThinPostLink, + FullPreLink, + FullPostLink, + }; + pub const Coverage = extern struct { CoverageType: Coverage.Type, IndirectCalls: bool, diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp index 92485a6a35..093e0a8bb8 100644 --- a/src/zig_clang.cpp +++ b/src/zig_clang.cpp @@ -329,6 +329,7 @@ void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) { case clang::Type::TemplateSpecialization: case clang::Type::Auto: case clang::Type::DeducedTemplateSpecialization: + case clang::Type::HLSLAttributedResource: case clang::Type::InjectedClassName: case clang::Type::DependentName: case clang::Type::DependentTemplateSpecialization: @@ -371,6 +372,7 @@ static_assert((clang::Type::TypeClass)ZigClangType_DependentVector == clang::Typ static_assert((clang::Type::TypeClass)ZigClangType_Elaborated == clang::Type::Elaborated, ""); 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_HLSLAttributedResource == clang::Type::HLSLAttributedResource, ""); static_assert((clang::Type::TypeClass)ZigClangType_InjectedClassName == clang::Type::InjectedClassName, ""); static_assert((clang::Type::TypeClass)ZigClangType_MacroQualified == clang::Type::MacroQualified, ""); static_assert((clang::Type::TypeClass)ZigClangType_ConstantMatrix == clang::Type::ConstantMatrix, ""); @@ -431,6 +433,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case clang::Stmt::PackExpansionExprClass: case clang::Stmt::UnresolvedMemberExprClass: case clang::Stmt::UnresolvedLookupExprClass: + case clang::Stmt::OpenACCAsteriskSizeExprClass: case clang::Stmt::OpaqueValueExprClass: case clang::Stmt::OffsetOfExprClass: case clang::Stmt::ObjCSubscriptRefExprClass: @@ -461,6 +464,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case clang::Stmt::InitListExprClass: case clang::Stmt::ImplicitValueInitExprClass: case clang::Stmt::ImaginaryLiteralClass: + case clang::Stmt::HLSLOutArgExprClass: case clang::Stmt::GenericSelectionExprClass: case clang::Stmt::GNUNullExprClass: case clang::Stmt::FunctionParmPackExprClass: @@ -538,13 +542,24 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case clang::Stmt::SwitchStmtClass: case clang::Stmt::DefaultStmtClass: case clang::Stmt::CaseStmtClass: + case clang::Stmt::SYCLKernelCallStmtClass: case clang::Stmt::SEHTryStmtClass: case clang::Stmt::SEHLeaveStmtClass: case clang::Stmt::SEHFinallyStmtClass: case clang::Stmt::SEHExceptStmtClass: case clang::Stmt::ReturnStmtClass: + case clang::Stmt::OpenACCWaitConstructClass: + case clang::Stmt::OpenACCUpdateConstructClass: + case clang::Stmt::OpenACCShutdownConstructClass: + case clang::Stmt::OpenACCSetConstructClass: + case clang::Stmt::OpenACCInitConstructClass: + case clang::Stmt::OpenACCExitDataConstructClass: + case clang::Stmt::OpenACCEnterDataConstructClass: case clang::Stmt::OpenACCLoopConstructClass: + case clang::Stmt::OpenACCHostDataConstructClass: + case clang::Stmt::OpenACCDataConstructClass: case clang::Stmt::OpenACCComputeConstructClass: + case clang::Stmt::OpenACCCombinedConstructClass: case clang::Stmt::ObjCForCollectionStmtClass: case clang::Stmt::ObjCAutoreleasePoolStmtClass: case clang::Stmt::ObjCAtTryStmtClass: @@ -626,6 +641,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case clang::Stmt::OMPCancelDirectiveClass: case clang::Stmt::OMPBarrierDirectiveClass: case clang::Stmt::OMPAtomicDirectiveClass: + case clang::Stmt::OMPAssumeDirectiveClass: case clang::Stmt::OMPCanonicalLoopClass: case clang::Stmt::NullStmtClass: case clang::Stmt::MSDependentExistsStmtClass: @@ -676,6 +692,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_PackIndexingExprClass == clan static_assert((clang::Stmt::StmtClass)ZigClangStmt_PackExpansionExprClass == clang::Stmt::PackExpansionExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnresolvedMemberExprClass == clang::Stmt::UnresolvedMemberExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnresolvedLookupExprClass == clang::Stmt::UnresolvedLookupExprClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCAsteriskSizeExprClass == clang::Stmt::OpenACCAsteriskSizeExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpaqueValueExprClass == clang::Stmt::OpaqueValueExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OffsetOfExprClass == clang::Stmt::OffsetOfExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCSubscriptRefExprClass == clang::Stmt::ObjCSubscriptRefExprClass, ""); @@ -706,6 +723,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_IntegerLiteralClass == clang: static_assert((clang::Stmt::StmtClass)ZigClangStmt_InitListExprClass == clang::Stmt::InitListExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImplicitValueInitExprClass == clang::Stmt::ImplicitValueInitExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImaginaryLiteralClass == clang::Stmt::ImaginaryLiteralClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_HLSLOutArgExprClass == clang::Stmt::HLSLOutArgExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_GenericSelectionExprClass == clang::Stmt::GenericSelectionExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_GNUNullExprClass == clang::Stmt::GNUNullExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_FunctionParmPackExprClass == clang::Stmt::FunctionParmPackExprClass, ""); @@ -783,13 +801,24 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_AttributedStmtClass == clang: static_assert((clang::Stmt::StmtClass)ZigClangStmt_SwitchStmtClass == clang::Stmt::SwitchStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_DefaultStmtClass == clang::Stmt::DefaultStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_CaseStmtClass == clang::Stmt::CaseStmtClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_SYCLKernelCallStmtClass == clang::Stmt::SYCLKernelCallStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHTryStmtClass == clang::Stmt::SEHTryStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHLeaveStmtClass == clang::Stmt::SEHLeaveStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHFinallyStmtClass == clang::Stmt::SEHFinallyStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHExceptStmtClass == clang::Stmt::SEHExceptStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ReturnStmtClass == clang::Stmt::ReturnStmtClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCWaitConstructClass == clang::Stmt::OpenACCWaitConstructClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCUpdateConstructClass == clang::Stmt::OpenACCUpdateConstructClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCShutdownConstructClass == clang::Stmt::OpenACCShutdownConstructClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCSetConstructClass == clang::Stmt::OpenACCSetConstructClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCInitConstructClass == clang::Stmt::OpenACCInitConstructClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCExitDataConstructClass == clang::Stmt::OpenACCExitDataConstructClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCEnterDataConstructClass == clang::Stmt::OpenACCEnterDataConstructClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCLoopConstructClass == clang::Stmt::OpenACCLoopConstructClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCHostDataConstructClass == clang::Stmt::OpenACCHostDataConstructClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCDataConstructClass == clang::Stmt::OpenACCDataConstructClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCComputeConstructClass == clang::Stmt::OpenACCComputeConstructClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCCombinedConstructClass == clang::Stmt::OpenACCCombinedConstructClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCForCollectionStmtClass == clang::Stmt::ObjCForCollectionStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAutoreleasePoolStmtClass == clang::Stmt::ObjCAutoreleasePoolStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtTryStmtClass == clang::Stmt::ObjCAtTryStmtClass, ""); @@ -871,6 +900,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancellationPointDirective static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancelDirectiveClass == clang::Stmt::OMPCancelDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPBarrierDirectiveClass == clang::Stmt::OMPBarrierDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPAtomicDirectiveClass == clang::Stmt::OMPAtomicDirectiveClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPAssumeDirectiveClass == clang::Stmt::OMPAssumeDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCanonicalLoopClass == clang::Stmt::OMPCanonicalLoopClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_NullStmtClass == clang::Stmt::NullStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSDependentExistsStmtClass == clang::Stmt::MSDependentExistsStmtClass, ""); @@ -932,6 +962,7 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) { switch (x) { case clang::Decl::TranslationUnit: case clang::Decl::RequiresExprBody: + case clang::Decl::OutlinedFunction: case clang::Decl::LinkageSpec: case clang::Decl::ExternCContext: case clang::Decl::Export: @@ -1023,6 +1054,7 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) { static_assert((clang::Decl::Kind)ZigClangDeclTranslationUnit == clang::Decl::TranslationUnit, ""); static_assert((clang::Decl::Kind)ZigClangDeclTopLevelStmt == clang::Decl::TopLevelStmt, ""); static_assert((clang::Decl::Kind)ZigClangDeclRequiresExprBody == clang::Decl::RequiresExprBody, ""); +static_assert((clang::Decl::Kind)ZigClangDeclOutlinedFunction == clang::Decl::OutlinedFunction, ""); static_assert((clang::Decl::Kind)ZigClangDeclLinkageSpec == clang::Decl::LinkageSpec, ""); static_assert((clang::Decl::Kind)ZigClangDeclExternCContext == clang::Decl::ExternCContext, ""); static_assert((clang::Decl::Kind)ZigClangDeclExport == clang::Decl::Export, ""); @@ -1169,6 +1201,7 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::SveFloat32: case clang::BuiltinType::SveFloat64: case clang::BuiltinType::SveBFloat16: + case clang::BuiltinType::SveMFloat8: case clang::BuiltinType::SveInt8x2: case clang::BuiltinType::SveInt16x2: case clang::BuiltinType::SveInt32x2: @@ -1181,6 +1214,7 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::SveFloat32x2: case clang::BuiltinType::SveFloat64x2: case clang::BuiltinType::SveBFloat16x2: + case clang::BuiltinType::SveMFloat8x2: case clang::BuiltinType::SveInt8x3: case clang::BuiltinType::SveInt16x3: case clang::BuiltinType::SveInt32x3: @@ -1193,6 +1227,7 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::SveFloat32x3: case clang::BuiltinType::SveFloat64x3: case clang::BuiltinType::SveBFloat16x3: + case clang::BuiltinType::SveMFloat8x3: case clang::BuiltinType::SveInt8x4: case clang::BuiltinType::SveInt16x4: case clang::BuiltinType::SveInt32x4: @@ -1205,10 +1240,12 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::SveFloat32x4: case clang::BuiltinType::SveFloat64x4: case clang::BuiltinType::SveBFloat16x4: + case clang::BuiltinType::SveMFloat8x4: case clang::BuiltinType::SveBool: case clang::BuiltinType::SveBoolx2: case clang::BuiltinType::SveBoolx4: case clang::BuiltinType::SveCount: + case clang::BuiltinType::MFloat8: case clang::BuiltinType::VectorQuad: case clang::BuiltinType::VectorPair: case clang::BuiltinType::RvvInt8mf8: @@ -1536,6 +1573,8 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::RvvBFloat16m4x2: case clang::BuiltinType::WasmExternRef: case clang::BuiltinType::AMDGPUBufferRsrc: + case clang::BuiltinType::AMDGPUNamedWorkgroupBarrier: + case clang::BuiltinType::HLSLResource: case clang::BuiltinType::Void: case clang::BuiltinType::Bool: case clang::BuiltinType::Char_U: @@ -1674,6 +1713,7 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16 == clang:: static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat32 == clang::BuiltinType::SveFloat32, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat64 == clang::BuiltinType::SveFloat64, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBFloat16 == clang::BuiltinType::SveBFloat16, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveMFloat8 == clang::BuiltinType::SveMFloat8, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt8x2 == clang::BuiltinType::SveInt8x2, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt16x2 == clang::BuiltinType::SveInt16x2, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt32x2 == clang::BuiltinType::SveInt32x2, ""); @@ -1686,6 +1726,7 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16x2 == clang static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat32x2 == clang::BuiltinType::SveFloat32x2, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat64x2 == clang::BuiltinType::SveFloat64x2, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBFloat16x2 == clang::BuiltinType::SveBFloat16x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveMFloat8x2 == clang::BuiltinType::SveMFloat8x2, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt8x3 == clang::BuiltinType::SveInt8x3, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt16x3 == clang::BuiltinType::SveInt16x3, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt32x3 == clang::BuiltinType::SveInt32x3, ""); @@ -1698,6 +1739,7 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16x3 == clang static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat32x3 == clang::BuiltinType::SveFloat32x3, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat64x3 == clang::BuiltinType::SveFloat64x3, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBFloat16x3 == clang::BuiltinType::SveBFloat16x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveMFloat8x3 == clang::BuiltinType::SveMFloat8x3, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt8x4 == clang::BuiltinType::SveInt8x4, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt16x4 == clang::BuiltinType::SveInt16x4, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt32x4 == clang::BuiltinType::SveInt32x4, ""); @@ -1710,10 +1752,12 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16x4 == clang static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat32x4 == clang::BuiltinType::SveFloat32x4, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat64x4 == clang::BuiltinType::SveFloat64x4, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBFloat16x4 == clang::BuiltinType::SveBFloat16x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveMFloat8x4 == clang::BuiltinType::SveMFloat8x4, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBool == clang::BuiltinType::SveBool, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBoolx2 == clang::BuiltinType::SveBoolx2, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBoolx4 == clang::BuiltinType::SveBoolx4, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveCount == clang::BuiltinType::SveCount, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeMFloat8 == clang::BuiltinType::MFloat8, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVectorQuad == clang::BuiltinType::VectorQuad, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVectorPair == clang::BuiltinType::VectorPair, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8mf8 == clang::BuiltinType::RvvInt8mf8, ""); @@ -2041,6 +2085,8 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBFloat16m2x4 == cl static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBFloat16m4x2 == clang::BuiltinType::RvvBFloat16m4x2, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeWasmExternRef == clang::BuiltinType::WasmExternRef, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeAMDGPUBufferRsrc == clang::BuiltinType::AMDGPUBufferRsrc, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeAMDGPUNamedWorkgroupBarrier == clang::BuiltinType::AMDGPUNamedWorkgroupBarrier, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeHLSLResource == clang::BuiltinType::HLSLResource, ""); 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, ""); @@ -3074,7 +3120,8 @@ ZigClangAPValueLValueBase ZigClangAPValue_getLValueBase(const ZigClangAPValue *s ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char **args_end, struct Stage2ErrorMsg **errors_ptr, size_t *errors_len, const char *resources_path) { - clang::IntrusiveRefCntPtr<clang::DiagnosticsEngine> diags(clang::CompilerInstance::createDiagnostics(new clang::DiagnosticOptions)); + llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = llvm::vfs::getRealFileSystem(); + clang::IntrusiveRefCntPtr<clang::DiagnosticsEngine> diags(clang::CompilerInstance::createDiagnostics(*VFS, new clang::DiagnosticOptions)); std::shared_ptr<clang::PCHContainerOperations> pch_container_ops = std::make_shared<clang::PCHContainerOperations>(); @@ -3088,7 +3135,6 @@ ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char llvm::StringRef preamble_storage_path = llvm::StringRef(); clang::ArrayRef<clang::ASTUnit::RemappedFile> remapped_files = std::nullopt; std::unique_ptr<clang::ASTUnit> err_unit; - llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr; std::optional<llvm::StringRef> ModuleFormat = std::nullopt; std::unique_ptr<clang::ASTUnit> ast_unit_unique_ptr = clang::ASTUnit::LoadFromCommandLine( args_begin, args_end, @@ -4112,13 +4158,16 @@ static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEsi static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEdouble == llvm::APFloatBase::S_IEEEdouble); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEquad == llvm::APFloatBase::S_IEEEquad); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_PPCDoubleDouble == llvm::APFloatBase::S_PPCDoubleDouble); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_PPCDoubleDoubleLegacy == llvm::APFloatBase::S_PPCDoubleDoubleLegacy); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E5M2 == llvm::APFloatBase::S_Float8E5M2); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E5M2FNUZ == llvm::APFloatBase::S_Float8E5M2FNUZ); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3 == llvm::APFloatBase::S_Float8E4M3); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3FN == llvm::APFloatBase::S_Float8E4M3FN); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3FNUZ == llvm::APFloatBase::S_Float8E4M3FNUZ); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3B11FNUZ == llvm::APFloatBase::S_Float8E4M3B11FNUZ); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E3M4 == llvm::APFloatBase::S_Float8E3M4); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_FloatTF32 == llvm::APFloatBase::S_FloatTF32); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E8M0FNU == llvm::APFloatBase::S_Float8E8M0FNU); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float6E3M2FN == llvm::APFloatBase::S_Float6E3M2FN); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float6E2M3FN == llvm::APFloatBase::S_Float6E2M3FN); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float4E2M1FN == llvm::APFloatBase::S_Float4E2M1FN); diff --git a/src/zig_clang.h b/src/zig_clang.h index e2b6c3c2f6..167a8972cd 100644 --- a/src/zig_clang.h +++ b/src/zig_clang.h @@ -75,7 +75,7 @@ struct ZigClangAPValue { #elif defined(__i386__) char Data[48]; #else - char Data[68]; + char Data[52]; #endif }; @@ -271,6 +271,7 @@ enum ZigClangTypeClass { ZigClangType_Elaborated, ZigClangType_FunctionNoProto, ZigClangType_FunctionProto, + ZigClangType_HLSLAttributedResource, ZigClangType_InjectedClassName, ZigClangType_MacroQualified, ZigClangType_ConstantMatrix, @@ -330,6 +331,7 @@ enum ZigClangStmtClass { ZigClangStmt_PackExpansionExprClass, ZigClangStmt_UnresolvedMemberExprClass, ZigClangStmt_UnresolvedLookupExprClass, + ZigClangStmt_OpenACCAsteriskSizeExprClass, ZigClangStmt_OpaqueValueExprClass, ZigClangStmt_OffsetOfExprClass, ZigClangStmt_ObjCSubscriptRefExprClass, @@ -360,6 +362,7 @@ enum ZigClangStmtClass { ZigClangStmt_InitListExprClass, ZigClangStmt_ImplicitValueInitExprClass, ZigClangStmt_ImaginaryLiteralClass, + ZigClangStmt_HLSLOutArgExprClass, ZigClangStmt_GenericSelectionExprClass, ZigClangStmt_GNUNullExprClass, ZigClangStmt_FunctionParmPackExprClass, @@ -437,13 +440,24 @@ enum ZigClangStmtClass { ZigClangStmt_SwitchStmtClass, ZigClangStmt_DefaultStmtClass, ZigClangStmt_CaseStmtClass, + ZigClangStmt_SYCLKernelCallStmtClass, ZigClangStmt_SEHTryStmtClass, ZigClangStmt_SEHLeaveStmtClass, ZigClangStmt_SEHFinallyStmtClass, ZigClangStmt_SEHExceptStmtClass, ZigClangStmt_ReturnStmtClass, + ZigClangStmt_OpenACCWaitConstructClass, + ZigClangStmt_OpenACCUpdateConstructClass, + ZigClangStmt_OpenACCShutdownConstructClass, + ZigClangStmt_OpenACCSetConstructClass, + ZigClangStmt_OpenACCInitConstructClass, + ZigClangStmt_OpenACCExitDataConstructClass, + ZigClangStmt_OpenACCEnterDataConstructClass, ZigClangStmt_OpenACCLoopConstructClass, + ZigClangStmt_OpenACCHostDataConstructClass, + ZigClangStmt_OpenACCDataConstructClass, ZigClangStmt_OpenACCComputeConstructClass, + ZigClangStmt_OpenACCCombinedConstructClass, ZigClangStmt_ObjCForCollectionStmtClass, ZigClangStmt_ObjCAutoreleasePoolStmtClass, ZigClangStmt_ObjCAtTryStmtClass, @@ -525,6 +539,7 @@ enum ZigClangStmtClass { ZigClangStmt_OMPCancelDirectiveClass, ZigClangStmt_OMPBarrierDirectiveClass, ZigClangStmt_OMPAtomicDirectiveClass, + ZigClangStmt_OMPAssumeDirectiveClass, ZigClangStmt_OMPCanonicalLoopClass, ZigClangStmt_NullStmtClass, ZigClangStmt_MSDependentExistsStmtClass, @@ -619,6 +634,7 @@ enum ZigClangDeclKind { ZigClangDeclTranslationUnit, ZigClangDeclTopLevelStmt, ZigClangDeclRequiresExprBody, + ZigClangDeclOutlinedFunction, ZigClangDeclLinkageSpec, ZigClangDeclExternCContext, ZigClangDeclExport, @@ -765,6 +781,7 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeSveFloat32, ZigClangBuiltinTypeSveFloat64, ZigClangBuiltinTypeSveBFloat16, + ZigClangBuiltinTypeSveMFloat8, ZigClangBuiltinTypeSveInt8x2, ZigClangBuiltinTypeSveInt16x2, ZigClangBuiltinTypeSveInt32x2, @@ -777,6 +794,7 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeSveFloat32x2, ZigClangBuiltinTypeSveFloat64x2, ZigClangBuiltinTypeSveBFloat16x2, + ZigClangBuiltinTypeSveMFloat8x2, ZigClangBuiltinTypeSveInt8x3, ZigClangBuiltinTypeSveInt16x3, ZigClangBuiltinTypeSveInt32x3, @@ -789,6 +807,7 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeSveFloat32x3, ZigClangBuiltinTypeSveFloat64x3, ZigClangBuiltinTypeSveBFloat16x3, + ZigClangBuiltinTypeSveMFloat8x3, ZigClangBuiltinTypeSveInt8x4, ZigClangBuiltinTypeSveInt16x4, ZigClangBuiltinTypeSveInt32x4, @@ -801,10 +820,12 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeSveFloat32x4, ZigClangBuiltinTypeSveFloat64x4, ZigClangBuiltinTypeSveBFloat16x4, + ZigClangBuiltinTypeSveMFloat8x4, ZigClangBuiltinTypeSveBool, ZigClangBuiltinTypeSveBoolx2, ZigClangBuiltinTypeSveBoolx4, ZigClangBuiltinTypeSveCount, + ZigClangBuiltinTypeMFloat8, ZigClangBuiltinTypeVectorQuad, ZigClangBuiltinTypeVectorPair, ZigClangBuiltinTypeRvvInt8mf8, @@ -1132,6 +1153,8 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeRvvBFloat16m4x2, ZigClangBuiltinTypeWasmExternRef, ZigClangBuiltinTypeAMDGPUBufferRsrc, + ZigClangBuiltinTypeAMDGPUNamedWorkgroupBarrier, + ZigClangBuiltinTypeHLSLResource, ZigClangBuiltinTypeVoid, ZigClangBuiltinTypeBool, ZigClangBuiltinTypeChar_U, @@ -1266,13 +1289,16 @@ enum ZigClangAPFloatBase_Semantics { ZigClangAPFloatBase_Semantics_IEEEdouble, ZigClangAPFloatBase_Semantics_IEEEquad, ZigClangAPFloatBase_Semantics_PPCDoubleDouble, + ZigClangAPFloatBase_Semantics_PPCDoubleDoubleLegacy, ZigClangAPFloatBase_Semantics_Float8E5M2, ZigClangAPFloatBase_Semantics_Float8E5M2FNUZ, ZigClangAPFloatBase_Semantics_Float8E4M3, ZigClangAPFloatBase_Semantics_Float8E4M3FN, ZigClangAPFloatBase_Semantics_Float8E4M3FNUZ, ZigClangAPFloatBase_Semantics_Float8E4M3B11FNUZ, + ZigClangAPFloatBase_Semantics_Float8E3M4, ZigClangAPFloatBase_Semantics_FloatTF32, + ZigClangAPFloatBase_Semantics_Float8E8M0FNU, ZigClangAPFloatBase_Semantics_Float6E3M2FN, ZigClangAPFloatBase_Semantics_Float6E2M3FN, ZigClangAPFloatBase_Semantics_Float4E2M1FN, diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index 51fd4aa0a5..0ef7c11737 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -300,7 +300,7 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi pass_builder.registerLoopAnalyses(loop_am); pass_builder.crossRegisterProxies(loop_am, function_am, cgscc_am, module_am); - pass_builder.registerPipelineStartEPCallback([&](ModulePassManager &module_pm, OptimizationLevel OL) { + pass_builder.registerPipelineStartEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level) { // Verify the input if (assertions_on) { module_pm.addPass(VerifierPass()); @@ -313,7 +313,7 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi const bool early_san = options->is_debug; - pass_builder.registerOptimizerEarlyEPCallback([&](ModulePassManager &module_pm, OptimizationLevel OL) { + pass_builder.registerOptimizerEarlyEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level, ThinOrFullLTOPhase lto_phase) { if (early_san) { // Code coverage instrumentation. if (options->sancov) { @@ -328,7 +328,7 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi } }); - pass_builder.registerOptimizerLastEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level) { + pass_builder.registerOptimizerLastEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level, ThinOrFullLTOPhase lto_phase) { if (!early_san) { // Code coverage instrumentation. if (options->sancov) { @@ -360,7 +360,7 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi // Initialize the PassManager if (opt_level == OptimizationLevel::O0) { - module_pm = pass_builder.buildO0DefaultPipeline(opt_level, options->lto); + module_pm = pass_builder.buildO0DefaultPipeline(opt_level, static_cast<ThinOrFullLTOPhase>(options->lto)); } else if (options->lto) { module_pm = pass_builder.buildLTOPreLinkDefaultPipeline(opt_level); } else { diff --git a/src/zig_llvm.h b/src/zig_llvm.h index d2a85405e6..f75e119988 100644 --- a/src/zig_llvm.h +++ b/src/zig_llvm.h @@ -53,13 +53,23 @@ struct ZigLLVMCoverageOptions { bool CollectControlFlow; }; +// synchronize with llvm/include/Pass.h::ThinOrFullLTOPhase +// synchronize with codegen/llvm/bindings.zig::EmitOptions::LtoPhase +enum ZigLLVMThinOrFullLTOPhase { + ZigLLVMThinOrFullLTOPhase_None, + ZigLLVMThinOrFullLTOPhase_ThinPreLink, + ZigLLVMThinOrFullLTOPhase_ThinkPostLink, + ZigLLVMThinOrFullLTOPhase_FullPreLink, + ZigLLVMThinOrFullLTOPhase_FullPostLink, +}; + struct ZigLLVMEmitOptions { bool is_debug; bool is_small; bool time_report; bool tsan; bool sancov; - bool lto; + ZigLLVMThinOrFullLTOPhase lto; bool allow_fast_isel; const char *asm_filename; const char *bin_filename; |
