diff options
| author | gingerBill <bill@gingerbill.org> | 2025-02-20 17:50:56 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2025-02-20 17:50:56 +0000 |
| commit | e8c38e74274b57a5de71d983ce9231bb7d27458e (patch) | |
| tree | bbb0de5944ea3eb11c2201560ead65391a312802 /src/llvm_backend_general.cpp | |
| parent | 614c0dd7401271f7ddad5eaeb4de234021fe387c (diff) | |
Handle `any` correctly for 32-bit systems
Diffstat (limited to 'src/llvm_backend_general.cpp')
| -rw-r--r-- | src/llvm_backend_general.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 4f6fcb88e..49e2ba9e8 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -1784,11 +1784,20 @@ gb_internal LLVMTypeRef lb_type_internal(lbModule *m, Type *type) { return type; } type = LLVMStructCreateNamed(ctx, name); - LLVMTypeRef fields[2] = { - lb_type(m, t_rawptr), - lb_type(m, t_typeid), - }; - LLVMStructSetBody(type, fields, 2, false); + if (build_context.ptr_size == 4) { + LLVMTypeRef fields[3] = { + lb_type(m, t_rawptr), + lb_type_padding_filler(m, build_context.ptr_size, build_context.ptr_size), // padding + lb_type(m, t_typeid), + }; + LLVMStructSetBody(type, fields, 3, false); + } else { + LLVMTypeRef fields[2] = { + lb_type(m, t_rawptr), + lb_type(m, t_typeid), + }; + LLVMStructSetBody(type, fields, 2, false); + } return type; } |