From 41e5acd89d17b9b032377ba1d5f4d65d965e4d2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 23 Aug 2024 04:32:32 +0200 Subject: [PATCH] zig_clang: Update to Clang 19. Co-authored-by: David Rubin --- src/clang.zig | 27 +++++++++++++++++++--- src/translate_c.zig | 9 ++++++-- src/zig_clang.cpp | 56 +++++++++++++++++++++++++++++++++++++-------- src/zig_clang.h | 25 +++++++++++++++++--- 4 files changed, 100 insertions(+), 17 deletions(-) diff --git a/src/clang.zig b/src/clang.zig index 04c142b3e3..cb58a92bd0 100644 --- a/src/clang.zig +++ b/src/clang.zig @@ -114,14 +114,21 @@ pub const APFloatBaseSemantics = enum(c_int) { PPCDoubleDouble, Float8E5M2, Float8E5M2FNUZ, + Float8E4M3, Float8E4M3FN, Float8E4M3FNUZ, Float8E4M3B11FNUZ, FloatTF32, + Float6E3M2FN, + Float6E2M3FN, + Float4E2M1FN, x87DoubleExtended, }; pub const APInt = opaque { + pub const free = ZigClangAPInt_free; + extern fn ZigClangAPInt_free(*const APInt) void; + pub fn getLimitedValue(self: *const APInt, comptime T: type) T { return @as(T, @truncate(ZigClangAPInt_getLimitedValue(self, std.math.maxInt(T)))); } @@ -337,7 +344,7 @@ pub const ConstantArrayType = opaque { extern fn ZigClangConstantArrayType_getElementType(*const ConstantArrayType) QualType; pub const getSize = ZigClangConstantArrayType_getSize; - extern fn ZigClangConstantArrayType_getSize(*const ConstantArrayType) *const APInt; + extern fn ZigClangConstantArrayType_getSize(*const ConstantArrayType, **const APInt) void; }; pub const ConstantExpr = opaque {}; @@ -1135,6 +1142,7 @@ pub const TypeClass = enum(c_int) { Adjusted, Decayed, ConstantArray, + ArrayParameter, DependentSizedArray, IncompleteArray, VariableArray, @@ -1143,6 +1151,7 @@ pub const TypeClass = enum(c_int) { BTFTagAttributed, BitInt, BlockPointer, + CountAttributed, Builtin, Complex, Decltype, @@ -1167,6 +1176,7 @@ pub const TypeClass = enum(c_int) { ObjCInterface, ObjCTypeParam, PackExpansion, + PackIndexing, Paren, Pipe, Pointer, @@ -1211,6 +1221,7 @@ const StmtClass = enum(c_int) { PredefinedExprClass, ParenListExprClass, ParenExprClass, + PackIndexingExprClass, PackExpansionExprClass, UnresolvedMemberExprClass, UnresolvedLookupExprClass, @@ -1233,7 +1244,6 @@ const StmtClass = enum(c_int) { ObjCArrayLiteralClass, OMPIteratorExprClass, OMPArrayShapingExprClass, - OMPArraySectionExprClass, NoInitExprClass, MemberExprClass, MatrixSubscriptExprClass, @@ -1254,6 +1264,7 @@ const StmtClass = enum(c_int) { FixedPointLiteralClass, ExtVectorElementExprClass, ExpressionTraitExprClass, + EmbedExprClass, DesignatedInitUpdateExprClass, DesignatedInitExprClass, DependentScopeDeclRefExprClass, @@ -1311,6 +1322,7 @@ const StmtClass = enum(c_int) { AsTypeExprClass, ArrayTypeTraitExprClass, ArraySubscriptExprClass, + ArraySectionExprClass, ArrayInitLoopExprClass, ArrayInitIndexExprClass, AddrLabelExprClass, @@ -1325,6 +1337,8 @@ const StmtClass = enum(c_int) { SEHFinallyStmtClass, SEHExceptStmtClass, ReturnStmtClass, + OpenACCLoopConstructClass, + OpenACCComputeConstructClass, ObjCForCollectionStmtClass, ObjCAutoreleasePoolStmtClass, ObjCAtTryStmtClass, @@ -1360,6 +1374,8 @@ const StmtClass = enum(c_int) { OMPMaskedDirectiveClass, OMPUnrollDirectiveClass, OMPTileDirectiveClass, + OMPReverseDirectiveClass, + OMPInterchangeDirectiveClass, OMPTeamsGenericLoopDirectiveClass, OMPTeamsDistributeSimdDirectiveClass, OMPTeamsDistributeParallelForSimdDirectiveClass, @@ -1496,13 +1512,13 @@ pub const CK = enum(c_int) { pub const DeclKind = enum(c_int) { TranslationUnit, + TopLevelStmt, RequiresExprBody, LinkageSpec, ExternCContext, Export, Captured, Block, - TopLevelStmt, StaticAssert, PragmaDetectMismatch, PragmaComment, @@ -2010,6 +2026,7 @@ pub const BuiltinTypeKind = enum(c_int) { RvvBFloat16m2x4, RvvBFloat16m4x2, WasmExternRef, + AMDGPUBufferRsrc, Void, Bool, Char_U, @@ -2075,6 +2092,7 @@ pub const BuiltinTypeKind = enum(c_int) { Dependent, Overload, BoundMember, + UnresolvedTemplate, PseudoObject, UnknownAny, BuiltinFn, @@ -2108,6 +2126,8 @@ pub const CallingConv = enum(c_int) { AArch64SVEPCS, AMDGPUKernelCall, M68kRTD, + PreserveNone, + RISCVVectorCall, }; pub const StorageClass = enum(c_int) { @@ -2172,6 +2192,7 @@ pub const UnaryExprOrTypeTrait_Kind = enum(c_int) { DataSizeOf, AlignOf, PreferredAlignOf, + PtrAuthTypeDiscriminator, VecStep, OpenMPRequiredSimdAlign, }; diff --git a/src/translate_c.zig b/src/translate_c.zig index 6b84aeb743..22b03fcb75 100644 --- a/src/translate_c.zig +++ b/src/translate_c.zig @@ -2644,7 +2644,9 @@ fn transInitListExprArray( const init_count = expr.getNumInits(); assert(@as(*const clang.Type, @ptrCast(arr_type)).isConstantArrayType()); const const_arr_ty = @as(*const clang.ConstantArrayType, @ptrCast(arr_type)); - const size_ap_int = const_arr_ty.getSize(); + var size_ap_int: *const clang.APInt = undefined; + const_arr_ty.getSize(&size_ap_int); + defer size_ap_int.free(); const all_count = size_ap_int.getLimitedValue(usize); const leftover_count = all_count - init_count; @@ -3665,6 +3667,7 @@ fn transUnaryExprOrTypeTraitExpr( .AlignOf => try Tag.alignof.create(c.arena, type_node), .DataSizeOf, .PreferredAlignOf, + .PtrAuthTypeDiscriminator, .VecStep, .OpenMPRequiredSimdAlign, => return fail( @@ -4793,7 +4796,9 @@ fn transType(c: *Context, scope: *Scope, ty: *const clang.Type, source_loc: clan .ConstantArray => { const const_arr_ty = @as(*const clang.ConstantArrayType, @ptrCast(ty)); - const size_ap_int = const_arr_ty.getSize(); + var size_ap_int: *const clang.APInt = undefined; + const_arr_ty.getSize(&size_ap_int); + defer size_ap_int.free(); const size = size_ap_int.getLimitedValue(usize); const elem_type = try transType(c, scope, const_arr_ty.getElementType().getTypePtr(), source_loc); diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp index 635bad1374..92485a6a35 100644 --- a/src/zig_clang.cpp +++ b/src/zig_clang.cpp @@ -208,6 +208,8 @@ void ZigClang_detect_enum_CK(clang::CastKind x) { case clang::CK_UserDefinedConversion: case clang::CK_VectorSplat: case clang::CK_ZeroToOCLOpaqueType: + case clang::CK_HLSLVectorTruncation: + case clang::CK_HLSLArrayRValue: break; } }; @@ -285,10 +287,12 @@ void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) { case clang::Type::Complex: case clang::Type::Pointer: case clang::Type::BlockPointer: + case clang::Type::CountAttributed: case clang::Type::LValueReference: case clang::Type::RValueReference: case clang::Type::MemberPointer: case clang::Type::ConstantArray: + case clang::Type::ArrayParameter: case clang::Type::IncompleteArray: case clang::Type::VariableArray: case clang::Type::DependentSizedArray: @@ -329,6 +333,7 @@ void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) { case clang::Type::DependentName: case clang::Type::DependentTemplateSpecialization: case clang::Type::PackExpansion: + case clang::Type::PackIndexing: case clang::Type::ObjCTypeParam: case clang::Type::ObjCObject: case clang::Type::ObjCInterface: @@ -342,6 +347,7 @@ 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_Decayed == clang::Type::Decayed, ""); static_assert((clang::Type::TypeClass)ZigClangType_ConstantArray == clang::Type::ConstantArray, ""); +static_assert((clang::Type::TypeClass)ZigClangType_ArrayParameter == clang::Type::ArrayParameter, ""); static_assert((clang::Type::TypeClass)ZigClangType_DependentSizedArray == clang::Type::DependentSizedArray, ""); static_assert((clang::Type::TypeClass)ZigClangType_IncompleteArray == clang::Type::IncompleteArray, ""); static_assert((clang::Type::TypeClass)ZigClangType_VariableArray == clang::Type::VariableArray, ""); @@ -350,6 +356,7 @@ static_assert((clang::Type::TypeClass)ZigClangType_Attributed == clang::Type::At static_assert((clang::Type::TypeClass)ZigClangType_BTFTagAttributed == clang::Type::BTFTagAttributed, ""); static_assert((clang::Type::TypeClass)ZigClangType_BitInt == clang::Type::BitInt, ""); static_assert((clang::Type::TypeClass)ZigClangType_BlockPointer == clang::Type::BlockPointer, ""); +static_assert((clang::Type::TypeClass)ZigClangType_CountAttributed == clang::Type::CountAttributed, ""); 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_Decltype == clang::Type::Decltype, ""); @@ -374,6 +381,7 @@ static_assert((clang::Type::TypeClass)ZigClangType_ObjCObject == clang::Type::Ob static_assert((clang::Type::TypeClass)ZigClangType_ObjCInterface == clang::Type::ObjCInterface, ""); 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_PackIndexing == clang::Type::PackIndexing, ""); 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, ""); @@ -419,6 +427,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case clang::Stmt::PredefinedExprClass: case clang::Stmt::ParenListExprClass: case clang::Stmt::ParenExprClass: + case clang::Stmt::PackIndexingExprClass: case clang::Stmt::PackExpansionExprClass: case clang::Stmt::UnresolvedMemberExprClass: case clang::Stmt::UnresolvedLookupExprClass: @@ -441,7 +450,6 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case clang::Stmt::ObjCArrayLiteralClass: case clang::Stmt::OMPIteratorExprClass: case clang::Stmt::OMPArrayShapingExprClass: - case clang::Stmt::OMPArraySectionExprClass: case clang::Stmt::NoInitExprClass: case clang::Stmt::MemberExprClass: case clang::Stmt::MatrixSubscriptExprClass: @@ -462,6 +470,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case clang::Stmt::FixedPointLiteralClass: case clang::Stmt::ExtVectorElementExprClass: case clang::Stmt::ExpressionTraitExprClass: + case clang::Stmt::EmbedExprClass: case clang::Stmt::DesignatedInitUpdateExprClass: case clang::Stmt::DesignatedInitExprClass: case clang::Stmt::DependentScopeDeclRefExprClass: @@ -519,6 +528,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case clang::Stmt::AsTypeExprClass: case clang::Stmt::ArrayTypeTraitExprClass: case clang::Stmt::ArraySubscriptExprClass: + case clang::Stmt::ArraySectionExprClass: case clang::Stmt::ArrayInitLoopExprClass: case clang::Stmt::ArrayInitIndexExprClass: case clang::Stmt::AddrLabelExprClass: @@ -533,6 +543,8 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case clang::Stmt::SEHFinallyStmtClass: case clang::Stmt::SEHExceptStmtClass: case clang::Stmt::ReturnStmtClass: + case clang::Stmt::OpenACCLoopConstructClass: + case clang::Stmt::OpenACCComputeConstructClass: case clang::Stmt::ObjCForCollectionStmtClass: case clang::Stmt::ObjCAutoreleasePoolStmtClass: case clang::Stmt::ObjCAtTryStmtClass: @@ -568,6 +580,8 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case clang::Stmt::OMPMaskedDirectiveClass: case clang::Stmt::OMPUnrollDirectiveClass: case clang::Stmt::OMPTileDirectiveClass: + case clang::Stmt::OMPReverseDirectiveClass: + case clang::Stmt::OMPInterchangeDirectiveClass: case clang::Stmt::OMPTeamsGenericLoopDirectiveClass: case clang::Stmt::OMPTeamsDistributeSimdDirectiveClass: case clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass: @@ -658,6 +672,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_PseudoObjectExprClass == clan static_assert((clang::Stmt::StmtClass)ZigClangStmt_PredefinedExprClass == clang::Stmt::PredefinedExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ParenListExprClass == clang::Stmt::ParenListExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ParenExprClass == clang::Stmt::ParenExprClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_PackIndexingExprClass == clang::Stmt::PackIndexingExprClass, ""); 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, ""); @@ -680,7 +695,6 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAvailabilityCheckExprClas static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCArrayLiteralClass == clang::Stmt::ObjCArrayLiteralClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPIteratorExprClass == clang::Stmt::OMPIteratorExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPArrayShapingExprClass == clang::Stmt::OMPArrayShapingExprClass, ""); -static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPArraySectionExprClass == clang::Stmt::OMPArraySectionExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_NoInitExprClass == clang::Stmt::NoInitExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_MemberExprClass == clang::Stmt::MemberExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_MatrixSubscriptExprClass == clang::Stmt::MatrixSubscriptExprClass, ""); @@ -701,6 +715,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_FloatingLiteralClass == clang static_assert((clang::Stmt::StmtClass)ZigClangStmt_FixedPointLiteralClass == clang::Stmt::FixedPointLiteralClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ExtVectorElementExprClass == clang::Stmt::ExtVectorElementExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ExpressionTraitExprClass == clang::Stmt::ExpressionTraitExprClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_EmbedExprClass == clang::Stmt::EmbedExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_DesignatedInitUpdateExprClass == clang::Stmt::DesignatedInitUpdateExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_DesignatedInitExprClass == clang::Stmt::DesignatedInitExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_DependentScopeDeclRefExprClass == clang::Stmt::DependentScopeDeclRefExprClass, ""); @@ -758,6 +773,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_AtomicExprClass == clang::Stm static_assert((clang::Stmt::StmtClass)ZigClangStmt_AsTypeExprClass == clang::Stmt::AsTypeExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArrayTypeTraitExprClass == clang::Stmt::ArrayTypeTraitExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArraySubscriptExprClass == clang::Stmt::ArraySubscriptExprClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArraySectionExprClass == clang::Stmt::ArraySectionExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArrayInitLoopExprClass == clang::Stmt::ArrayInitLoopExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArrayInitIndexExprClass == clang::Stmt::ArrayInitIndexExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_AddrLabelExprClass == clang::Stmt::AddrLabelExprClass, ""); @@ -772,6 +788,8 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHLeaveStmtClass == clang::S 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_OpenACCLoopConstructClass == clang::Stmt::OpenACCLoopConstructClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCComputeConstructClass == clang::Stmt::OpenACCComputeConstructClass, ""); 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, ""); @@ -807,6 +825,8 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMasterDirectiveClass == cl static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMaskedDirectiveClass == clang::Stmt::OMPMaskedDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPUnrollDirectiveClass == clang::Stmt::OMPUnrollDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTileDirectiveClass == clang::Stmt::OMPTileDirectiveClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPReverseDirectiveClass == clang::Stmt::OMPReverseDirectiveClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPInterchangeDirectiveClass == clang::Stmt::OMPInterchangeDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsGenericLoopDirectiveClass == clang::Stmt::OMPTeamsGenericLoopDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeSimdDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass, ""); @@ -1001,13 +1021,13 @@ 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)ZigClangDeclLinkageSpec == clang::Decl::LinkageSpec, ""); static_assert((clang::Decl::Kind)ZigClangDeclExternCContext == clang::Decl::ExternCContext, ""); static_assert((clang::Decl::Kind)ZigClangDeclExport == clang::Decl::Export, ""); static_assert((clang::Decl::Kind)ZigClangDeclCaptured == clang::Decl::Captured, ""); static_assert((clang::Decl::Kind)ZigClangDeclBlock == clang::Decl::Block, ""); -static_assert((clang::Decl::Kind)ZigClangDeclTopLevelStmt == clang::Decl::TopLevelStmt, ""); static_assert((clang::Decl::Kind)ZigClangDeclStaticAssert == clang::Decl::StaticAssert, ""); static_assert((clang::Decl::Kind)ZigClangDeclPragmaDetectMismatch == clang::Decl::PragmaDetectMismatch, ""); static_assert((clang::Decl::Kind)ZigClangDeclPragmaComment == clang::Decl::PragmaComment, ""); @@ -1515,6 +1535,7 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::RvvBFloat16m2x4: case clang::BuiltinType::RvvBFloat16m4x2: case clang::BuiltinType::WasmExternRef: + case clang::BuiltinType::AMDGPUBufferRsrc: case clang::BuiltinType::Void: case clang::BuiltinType::Bool: case clang::BuiltinType::Char_U: @@ -1580,14 +1601,15 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::Dependent: case clang::BuiltinType::Overload: case clang::BuiltinType::BoundMember: + case clang::BuiltinType::UnresolvedTemplate: case clang::BuiltinType::PseudoObject: case clang::BuiltinType::UnknownAny: case clang::BuiltinType::BuiltinFn: case clang::BuiltinType::ARCUnbridgedCast: case clang::BuiltinType::IncompleteMatrixIdx: - case clang::BuiltinType::OMPArraySection: case clang::BuiltinType::OMPArrayShaping: case clang::BuiltinType::OMPIterator: + case clang::BuiltinType::ArraySection: break; } } @@ -2018,6 +2040,7 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBFloat16m2x3 == cl static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBFloat16m2x4 == clang::BuiltinType::RvvBFloat16m2x4, ""); 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)ZigClangBuiltinTypeVoid == clang::BuiltinType::Void, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBool == clang::BuiltinType::Bool, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeChar_U == clang::BuiltinType::Char_U, ""); @@ -2083,12 +2106,12 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLReserveID == clang static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeDependent == clang::BuiltinType::Dependent, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOverload == clang::BuiltinType::Overload, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBoundMember == clang::BuiltinType::BoundMember, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUnresolvedTemplate == clang::BuiltinType::UnresolvedTemplate, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypePseudoObject == clang::BuiltinType::PseudoObject, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUnknownAny == clang::BuiltinType::UnknownAny, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBuiltinFn == clang::BuiltinType::BuiltinFn, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeARCUnbridgedCast == clang::BuiltinType::ARCUnbridgedCast, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeIncompleteMatrixIdx == clang::BuiltinType::IncompleteMatrixIdx, ""); -static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOMPArraySection == clang::BuiltinType::OMPArraySection, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOMPArrayShaping == clang::BuiltinType::OMPArrayShaping, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOMPIterator == clang::BuiltinType::OMPIterator, ""); @@ -2116,6 +2139,8 @@ void ZigClang_detect_enum_CallingConv(clang::CallingConv x) { case clang::CC_AArch64SVEPCS: case clang::CC_AMDGPUKernelCall: case clang::CC_M68kRTD: + case clang::CC_PreserveNone: + case clang::CC_RISCVVectorCall: break; } } @@ -2142,6 +2167,8 @@ static_assert((clang::CallingConv)ZigClangCallingConv_AArch64VectorCall == clang static_assert((clang::CallingConv)ZigClangCallingConv_AArch64SVEPCS == clang::CC_AArch64SVEPCS, ""); static_assert((clang::CallingConv)ZigClangCallingConv_AMDGPUKernelCall == clang::CC_AMDGPUKernelCall, ""); static_assert((clang::CallingConv)ZigClangCallingConv_M68kRTD == clang::CC_M68kRTD, ""); +static_assert((clang::CallingConv)ZigClangCallingConv_PreserveNone == clang::CC_PreserveNone, ""); +static_assert((clang::CallingConv)ZigClangCallingConv_RISCVVectorCall == clang::CC_RISCVVectorCall, ""); void ZigClang_detect_enum_StorageClass(clang::StorageClass x) { switch (x) { @@ -2251,6 +2278,7 @@ static_assert((clang::UnaryExprOrTypeTrait)ZigClangUnaryExprOrTypeTrait_Kind::Zi static_assert((clang::UnaryExprOrTypeTrait)ZigClangUnaryExprOrTypeTrait_Kind::ZigClangUnaryExprOrTypeTrait_KindDataSizeOf == clang::UnaryExprOrTypeTrait::UETT_DataSizeOf, ""); static_assert((clang::UnaryExprOrTypeTrait)ZigClangUnaryExprOrTypeTrait_Kind::ZigClangUnaryExprOrTypeTrait_KindAlignOf == clang::UnaryExprOrTypeTrait::UETT_AlignOf, ""); static_assert((clang::UnaryExprOrTypeTrait)ZigClangUnaryExprOrTypeTrait_Kind::ZigClangUnaryExprOrTypeTrait_KindPreferredAlignOf == clang::UnaryExprOrTypeTrait::UETT_PreferredAlignOf, ""); +static_assert((clang::UnaryExprOrTypeTrait)ZigClangUnaryExprOrTypeTrait_Kind::ZigClangUnaryExprOrTypeTrait_KindPtrAuthTypeDiscriminator == clang::UnaryExprOrTypeTrait::UETT_PtrAuthTypeDiscriminator, ""); static_assert((clang::UnaryExprOrTypeTrait)ZigClangUnaryExprOrTypeTrait_Kind::ZigClangUnaryExprOrTypeTrait_KindVecStep == clang::UnaryExprOrTypeTrait::UETT_VecStep, ""); static_assert((clang::UnaryExprOrTypeTrait)ZigClangUnaryExprOrTypeTrait_Kind::ZigClangUnaryExprOrTypeTrait_KindOpenMPRequiredSimdAlign == clang::UnaryExprOrTypeTrait::UETT_OpenMPRequiredSimdAlign, ""); @@ -2811,7 +2839,7 @@ bool ZigClangType_isIncompleteOrZeroLengthArrayType(const ZigClangQualType *self if (casted_type->isIncompleteArrayType()) return true; - clang::QualType elem_type = *casted; + clang::QualType elem_type = *casted; while (const clang::ConstantArrayType *ArrayT = casted_ctx->getAsConstantArrayType(elem_type)) { if (ArrayT->getSize() == 0) return true; @@ -3021,6 +3049,11 @@ bool ZigClangAPSInt_lessThanEqual(const ZigClangAPSInt *self, uint64_t rhs) { return casted->ule(rhs); } +void ZigClangAPInt_free(const ZigClangAPInt *self) { + auto casted = reinterpret_cast(self); + delete casted; +} + uint64_t ZigClangAPInt_getLimitedValue(const ZigClangAPInt *self, uint64_t limit) { auto casted = reinterpret_cast(self); return casted->getLimitedValue(limit); @@ -3400,9 +3433,10 @@ struct ZigClangQualType ZigClangConstantArrayType_getElementType(const struct Zi return bitcast(casted->getElementType()); } -const struct ZigClangAPInt *ZigClangConstantArrayType_getSize(const struct ZigClangConstantArrayType *self) { +void ZigClangConstantArrayType_getSize(const struct ZigClangConstantArrayType *self, const struct ZigClangAPInt **result) { auto casted = reinterpret_cast(self); - return reinterpret_cast(&casted->getSize()); + llvm::APInt *ap_int = new llvm::APInt(casted->getSize()); + *result = reinterpret_cast(ap_int); } const struct ZigClangValueDecl *ZigClangDeclRefExpr_getDecl(const struct ZigClangDeclRefExpr *self) { @@ -4059,7 +4093,7 @@ const struct ZigClangAPSInt *ZigClangEnumConstantDecl_getInitVal(const struct Zi // See also: https://github.com/ziglang/zig/issues/11168 bool ZigClangIsLLVMUsingSeparateLibcxx() { - // Temporarily create an InMemoryFileSystem, so that we can perform a file + // Temporarily create an InMemoryFileSystem, so that we can perform a file // lookup that is guaranteed to fail. auto FS = new llvm::vfs::InMemoryFileSystem(true); auto StatusOrErr = FS->status("foo.txt"); @@ -4080,9 +4114,13 @@ static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEqu static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_PPCDoubleDouble == llvm::APFloatBase::S_PPCDoubleDouble); 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_FloatTF32 == llvm::APFloatBase::S_FloatTF32); +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); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_x87DoubleExtended == llvm::APFloatBase::S_x87DoubleExtended); static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_MaxSemantics == llvm::APFloatBase::S_MaxSemantics); diff --git a/src/zig_clang.h b/src/zig_clang.h index 6d7ebc64f5..e2b6c3c2f6 100644 --- a/src/zig_clang.h +++ b/src/zig_clang.h @@ -247,6 +247,7 @@ enum ZigClangTypeClass { ZigClangType_Adjusted, ZigClangType_Decayed, ZigClangType_ConstantArray, + ZigClangType_ArrayParameter, ZigClangType_DependentSizedArray, ZigClangType_IncompleteArray, ZigClangType_VariableArray, @@ -255,6 +256,7 @@ enum ZigClangTypeClass { ZigClangType_BTFTagAttributed, ZigClangType_BitInt, ZigClangType_BlockPointer, + ZigClangType_CountAttributed, ZigClangType_Builtin, ZigClangType_Complex, ZigClangType_Decltype, @@ -279,6 +281,7 @@ enum ZigClangTypeClass { ZigClangType_ObjCInterface, ZigClangType_ObjCTypeParam, ZigClangType_PackExpansion, + ZigClangType_PackIndexing, ZigClangType_Paren, ZigClangType_Pipe, ZigClangType_Pointer, @@ -323,6 +326,7 @@ enum ZigClangStmtClass { ZigClangStmt_PredefinedExprClass, ZigClangStmt_ParenListExprClass, ZigClangStmt_ParenExprClass, + ZigClangStmt_PackIndexingExprClass, ZigClangStmt_PackExpansionExprClass, ZigClangStmt_UnresolvedMemberExprClass, ZigClangStmt_UnresolvedLookupExprClass, @@ -345,7 +349,6 @@ enum ZigClangStmtClass { ZigClangStmt_ObjCArrayLiteralClass, ZigClangStmt_OMPIteratorExprClass, ZigClangStmt_OMPArrayShapingExprClass, - ZigClangStmt_OMPArraySectionExprClass, ZigClangStmt_NoInitExprClass, ZigClangStmt_MemberExprClass, ZigClangStmt_MatrixSubscriptExprClass, @@ -366,6 +369,7 @@ enum ZigClangStmtClass { ZigClangStmt_FixedPointLiteralClass, ZigClangStmt_ExtVectorElementExprClass, ZigClangStmt_ExpressionTraitExprClass, + ZigClangStmt_EmbedExprClass, ZigClangStmt_DesignatedInitUpdateExprClass, ZigClangStmt_DesignatedInitExprClass, ZigClangStmt_DependentScopeDeclRefExprClass, @@ -423,6 +427,7 @@ enum ZigClangStmtClass { ZigClangStmt_AsTypeExprClass, ZigClangStmt_ArrayTypeTraitExprClass, ZigClangStmt_ArraySubscriptExprClass, + ZigClangStmt_ArraySectionExprClass, ZigClangStmt_ArrayInitLoopExprClass, ZigClangStmt_ArrayInitIndexExprClass, ZigClangStmt_AddrLabelExprClass, @@ -437,6 +442,8 @@ enum ZigClangStmtClass { ZigClangStmt_SEHFinallyStmtClass, ZigClangStmt_SEHExceptStmtClass, ZigClangStmt_ReturnStmtClass, + ZigClangStmt_OpenACCLoopConstructClass, + ZigClangStmt_OpenACCComputeConstructClass, ZigClangStmt_ObjCForCollectionStmtClass, ZigClangStmt_ObjCAutoreleasePoolStmtClass, ZigClangStmt_ObjCAtTryStmtClass, @@ -472,6 +479,8 @@ enum ZigClangStmtClass { ZigClangStmt_OMPMaskedDirectiveClass, ZigClangStmt_OMPUnrollDirectiveClass, ZigClangStmt_OMPTileDirectiveClass, + ZigClangStmt_OMPReverseDirectiveClass, + ZigClangStmt_OMPInterchangeDirectiveClass, ZigClangStmt_OMPTeamsGenericLoopDirectiveClass, ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass, ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass, @@ -608,13 +617,13 @@ enum ZigClangCK { enum ZigClangDeclKind { ZigClangDeclTranslationUnit, + ZigClangDeclTopLevelStmt, ZigClangDeclRequiresExprBody, ZigClangDeclLinkageSpec, ZigClangDeclExternCContext, ZigClangDeclExport, ZigClangDeclCaptured, ZigClangDeclBlock, - ZigClangDeclTopLevelStmt, ZigClangDeclStaticAssert, ZigClangDeclPragmaDetectMismatch, ZigClangDeclPragmaComment, @@ -1122,6 +1131,7 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeRvvBFloat16m2x4, ZigClangBuiltinTypeRvvBFloat16m4x2, ZigClangBuiltinTypeWasmExternRef, + ZigClangBuiltinTypeAMDGPUBufferRsrc, ZigClangBuiltinTypeVoid, ZigClangBuiltinTypeBool, ZigClangBuiltinTypeChar_U, @@ -1187,6 +1197,7 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeDependent, ZigClangBuiltinTypeOverload, ZigClangBuiltinTypeBoundMember, + ZigClangBuiltinTypeUnresolvedTemplate, ZigClangBuiltinTypePseudoObject, ZigClangBuiltinTypeUnknownAny, ZigClangBuiltinTypeBuiltinFn, @@ -1220,6 +1231,8 @@ enum ZigClangCallingConv { ZigClangCallingConv_AArch64SVEPCS, ZigClangCallingConv_AMDGPUKernelCall, ZigClangCallingConv_M68kRTD, + ZigClangCallingConv_PreserveNone, + ZigClangCallingConv_RISCVVectorCall, }; enum ZigClangStorageClass { @@ -1255,10 +1268,14 @@ enum ZigClangAPFloatBase_Semantics { ZigClangAPFloatBase_Semantics_PPCDoubleDouble, ZigClangAPFloatBase_Semantics_Float8E5M2, ZigClangAPFloatBase_Semantics_Float8E5M2FNUZ, + ZigClangAPFloatBase_Semantics_Float8E4M3, ZigClangAPFloatBase_Semantics_Float8E4M3FN, ZigClangAPFloatBase_Semantics_Float8E4M3FNUZ, ZigClangAPFloatBase_Semantics_Float8E4M3B11FNUZ, ZigClangAPFloatBase_Semantics_FloatTF32, + ZigClangAPFloatBase_Semantics_Float6E3M2FN, + ZigClangAPFloatBase_Semantics_Float6E2M3FN, + ZigClangAPFloatBase_Semantics_Float4E2M1FN, ZigClangAPFloatBase_Semantics_x87DoubleExtended, ZigClangAPFloatBase_Semantics_MaxSemantics = ZigClangAPFloatBase_Semantics_x87DoubleExtended, }; @@ -1314,6 +1331,7 @@ enum ZigClangUnaryExprOrTypeTrait_Kind { ZigClangUnaryExprOrTypeTrait_KindDataSizeOf, ZigClangUnaryExprOrTypeTrait_KindAlignOf, ZigClangUnaryExprOrTypeTrait_KindPreferredAlignOf, + ZigClangUnaryExprOrTypeTrait_KindPtrAuthTypeDiscriminator, ZigClangUnaryExprOrTypeTrait_KindVecStep, ZigClangUnaryExprOrTypeTrait_KindOpenMPRequiredSimdAlign, }; @@ -1515,6 +1533,7 @@ ZIG_EXTERN_C const uint64_t *ZigClangAPSInt_getRawData(const struct ZigClangAPSI ZIG_EXTERN_C unsigned ZigClangAPSInt_getNumWords(const struct ZigClangAPSInt *self); ZIG_EXTERN_C bool ZigClangAPSInt_lessThanEqual(const struct ZigClangAPSInt *self, uint64_t rhs); +ZIG_EXTERN_C void ZigClangAPInt_free(const struct ZigClangAPInt *self); ZIG_EXTERN_C uint64_t ZigClangAPInt_getLimitedValue(const struct ZigClangAPInt *self, uint64_t limit); ZIG_EXTERN_C const struct ZigClangExpr *ZigClangAPValueLValueBase_dyn_cast_Expr(struct ZigClangAPValueLValueBase self); @@ -1569,7 +1588,7 @@ ZIG_EXTERN_C struct ZigClangQualType ZigClangArrayType_getElementType(const stru ZIG_EXTERN_C struct ZigClangQualType ZigClangIncompleteArrayType_getElementType(const struct ZigClangIncompleteArrayType *); ZIG_EXTERN_C struct ZigClangQualType ZigClangConstantArrayType_getElementType(const struct ZigClangConstantArrayType *); -ZIG_EXTERN_C const struct ZigClangAPInt *ZigClangConstantArrayType_getSize(const struct ZigClangConstantArrayType *); +ZIG_EXTERN_C void ZigClangConstantArrayType_getSize(const struct ZigClangConstantArrayType *, const struct ZigClangAPInt **result); ZIG_EXTERN_C const struct ZigClangValueDecl *ZigClangDeclRefExpr_getDecl(const struct ZigClangDeclRefExpr *); ZIG_EXTERN_C const struct ZigClangNamedDecl *ZigClangDeclRefExpr_getFoundDecl(const struct ZigClangDeclRefExpr *);