Commit 41e5acd89d

Alex Rønne Petersen <alex@alexrp.com>
2024-08-23 04:32:32
zig_clang: Update to Clang 19.
Co-authored-by: David Rubin <daviru007@icloud.com>
1 parent 973ebeb
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,
 };
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);
 
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<const llvm::APInt *>(self);
+    delete casted;
+}
+
 uint64_t ZigClangAPInt_getLimitedValue(const ZigClangAPInt *self, uint64_t limit) {
     auto casted = reinterpret_cast<const llvm::APInt *>(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<const clang::ConstantArrayType *>(self);
-    return reinterpret_cast<const ZigClangAPInt *>(&casted->getSize());
+    llvm::APInt *ap_int = new llvm::APInt(casted->getSize());
+    *result = reinterpret_cast<const ZigClangAPInt *>(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);
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 *);