Commit ab99dd9c5d

Alex Rønne Petersen <alex@alexrp.com>
2025-08-31 15:26:15
zig_clang: fix ZigClangAPValueLValueBase struct layout to match Clang 21
Fixes the compiler build for various targets, especially 32-bit.
1 parent 7fdd60d
Changed files (2)
src/clang.zig
@@ -37,9 +37,15 @@ pub const QualType = extern struct {
 };
 
 pub const APValueLValueBase = extern struct {
-    Ptr: ?*anyopaque,
-    CallIndex: c_uint,
-    Version: c_uint,
+    Ptr: ?*anyopaque align(@alignOf(u64)),
+    State: extern union {
+        Local: extern struct {
+            CallIndex: c_uint,
+            Version: c_uint,
+        },
+        TypeInfoType: ?*anyopaque,
+        DynamicAllocType: ?*anyopaque,
+    },
 
     pub const dyn_cast_Expr = ZigClangAPValueLValueBase_dyn_cast_Expr;
     extern fn ZigClangAPValueLValueBase_dyn_cast_Expr(APValueLValueBase) ?*const Expr;
src/zig_clang.h
@@ -43,10 +43,16 @@ struct ZigClangQualType {
     void *ptr;
 };
 
-struct ZigClangAPValueLValueBase {
-    void *Ptr;
-    unsigned CallIndex;
-    unsigned Version;
+struct alignas(uint64_t) ZigClangAPValueLValueBase {
+    void* Ptr;
+    union {
+        struct {
+            unsigned CallIndex;
+            unsigned Version;
+        } Local;
+        void* TypeInfoType;
+        void* DynamicAllocType;
+    };
 };
 
 enum ZigClangAPValueKind {