compiler: Updates for LLVM/Clang 20 API changes.

This commit is contained in:
Alex Rønne Petersen 2025-02-05 11:41:39 +01:00
parent 156ab87500
commit 8ea2e1ded5
No known key found for this signature in database
8 changed files with 151 additions and 28 deletions

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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);

View File

@ -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,

View File

@ -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 {

View File

@ -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;

View File

@ -1061,28 +1061,28 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ VAL23 = 0xFFFFFFFFFFFFFFFF,
\\};
, &[_][]const u8{
\\pub const VAL01: c_int = 0;
\\pub const VAL02: c_int = 1;
\\pub const VAL03: c_int = 2;
\\pub const VAL04: c_int = 3;
\\pub const VAL05: c_int = -1;
\\pub const VAL06: c_int = -2;
\\pub const VAL07: c_int = -3;
\\pub const VAL08: c_int = -4;
\\pub const VAL09: c_int = -3;
\\pub const VAL10: c_int = -1000012000;
\\pub const VAL11: c_int = -1000161000;
\\pub const VAL12: c_int = -1000174001;
\\pub const VAL13: c_int = -3;
\\pub const VAL14: c_int = -1000012000;
\\pub const VAL15: c_int = -1000161000;
\\pub const VAL16: c_int = -3;
\\pub const VAL17: c_int = 1000011998;
\\pub const VAL01: c_longlong = 0;
\\pub const VAL02: c_longlong = 1;
\\pub const VAL03: c_longlong = 2;
\\pub const VAL04: c_longlong = 3;
\\pub const VAL05: c_longlong = -1;
\\pub const VAL06: c_longlong = -2;
\\pub const VAL07: c_longlong = -3;
\\pub const VAL08: c_longlong = -4;
\\pub const VAL09: c_longlong = -3;
\\pub const VAL10: c_longlong = -1000012000;
\\pub const VAL11: c_longlong = -1000161000;
\\pub const VAL12: c_longlong = -1000174001;
\\pub const VAL13: c_longlong = -3;
\\pub const VAL14: c_longlong = -1000012000;
\\pub const VAL15: c_longlong = -1000161000;
\\pub const VAL16: c_longlong = -3;
\\pub const VAL17: c_longlong = 1000011998;
\\pub const VAL18: c_longlong = 1152921504606846976;
\\pub const VAL19: c_longlong = 3458764513820540927;
\\pub const VAL20: c_longlong = 6917529027641081854;
\\pub const VAL21: c_longlong = 6917529027641081853;
\\pub const VAL22: c_int = 0;
\\pub const VAL22: c_longlong = 0;
\\pub const VAL23: c_longlong = -1;
\\pub const enum_EnumWithInits = c_longlong;
});