Commit Graph
184 Commits
Author SHA1 Message Date
gingerBill 93f71c2751 Merge pull request #7842 from bbodi/fix/llvm-objc-varargs
Fix/llvm objc varargs
2026-10-09 10:54:21 +01:00
BBandClaude Opus 5.5 9e594ed3d1 Pass the class name in objc_register_class
objc_register_class handed objc_allocateClassPair a nil Class as the
name argument, which the backend cannot convert to cstring, so any use
of the builtin panicked the compiler. The class pair is now allocated
under the requested name, as the checked signature intends.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-08 22:07:09 +02:00
bbodi bd530ccc0a Enable evex512 with explicit AVX-512 target features
LLVM only adds evex512 by itself for the generic x86 CPUs, so with the
default x86-64-v2 microarch, -target-features:avx512f left 512-bit
vectors split into ymm pairs and C got garbage lanes back from Odin
(and the other way round). Clang adds it whenever an AVX-512 feature is
on and evex512 isn't named, do the same for the global features and for
@(enable_target_feature).
2026-10-08 21:19:25 +02:00
Mihail Moskov 55c6cf3dea fixes regressions at sites needing true address caused by temp copy 2026-10-06 20:21:05 +03:00
gingerBill f05c574cae Merge pull request #7520 from Pippoosh/fix-soa-pointer-using-field
Fix #soa pointer field access through using
2026-10-04 19:01:28 +01:00
gingerBill ddcf115f6f Implement the same large aggregate improvement for or_else 2026-10-04 10:12:35 +01:00
gingerBill e5cc35c445 Lower what LLVM's fast instruction selector cannot select before emitting objects, and declare debug variables through stack slots 2026-10-03 11:02:55 +01:00
gingerBill 735b2c7060 Pass a copy of a packed struct's field by reference when it may be under-aligned; lower load and store alignment to that known 2026-10-02 22:49:26 +01:00
gingerBill 63d28377bb Pass a copy of a value within a packed struct to a procedure by reference when its address is not known to be aligned to its type, and lower the alignment of loads and stores to that known from the GEPs leading to their address 2026-10-02 17:22:15 +01:00
Kriday Kini 4839f20da9 Fix #soa pointer field access through using (#7513).
lb_emit_deep_field_gep treated an #soa pointer as a one-shot field grab and never updated the current type, so using paths with extra selection indices ICE'd.
2026-09-06 10:00:30 +05:30
kalsprite c1aeb47ce5 swizzle target multi-assignment 2026-08-25 22:22:33 -07:00
gingerBill 73bb97ceb4 Merge pull request #7394 from mfbulut/fix/or-else-diverging-single
Fix or_else diverging with single return value
2026-08-20 10:30:59 +02:00
kalsprite a13a4b418d backend: a union constant in a ternary or builds an ill-typed phi 2026-08-19 16:45:58 -07:00
Mustafa Furkan Bulut 581d20c606 Allow 'or_else' in diverging single-return 2026-08-20 00:57:10 +03:00
FourteenBrush 727b5043e5 Fix switch fallthrough in lb_emit_struct_ev 2026-07-15 14:13:53 +02:00
Jeroen van Rijn dc0f001b35 Merge pull request #6933 from odin-lang/bill/box3d
`vendor:box3d`
2026-07-03 21:35:30 +02:00
gingerBill 448a71f432 Support q.xyz on quaternion* 2026-07-02 12:27:03 +01:00
misomosi f276d77c0c Fix misuse of lb_emit_(min|max) in simd_(min|max) 2026-07-01 10:59:03 -04:00
gingerBill c66de5ee3c Improve vector to integer transmute LLVM IR 2026-05-19 18:32:05 +01:00
gingerBill 86a6f69793 General clean up 2026-05-11 14:01:50 +01:00
gingerBill b752ff4bdb Add a minor optimization for row_major * row_major 2026-05-11 13:28:54 +01:00
gingerBill 65ff188c1c Add optimization edge case for square mat * mat 2026-05-11 11:16:27 +01:00
gingerBill 46ed5500b1 Fix lb_convert_struct_index for struct #raw_union 2026-04-22 13:18:26 +01:00
gingerBill 6b2853d9f1 Improve matrix * vector code gen 2026-03-15 21:03:31 +00:00
gingerBill a56c3da149 Support select fast path for or_else 2026-03-15 20:02:48 +00:00
gingerBill bb2e42faa6 More uses of SSA aggregation values 2026-03-15 19:49:26 +00:00
gingerBill 0dbda03890 Simplify slice creation as LLVM values 2026-03-15 19:40:57 +00:00
gingerBill c23d2793df Fix lb_convert_struct_index for FCD arrays 2026-03-15 15:45:29 +00:00
gingerBill a6160770ff Support compound literals for fixed capacity dynamic arrays 2026-03-12 10:03:58 +00:00
gingerBill f1dbe9c242 [dynamic; N]T proof of concept: fixed capacity dynamic array (akin to small_array.Small_Array(N, T)) 2026-03-11 16:46:33 +00:00
gingerBill bb7496a2fc Add intrinsics.count_trailing_ones and intrinsics.count_leading_ones 2026-02-02 14:28:16 +00:00
gingerBill 2608f92fee Use std::atomic for Ast.viral_state_flags and Ast_Ident.entity 2026-02-02 10:48:30 +00:00
gingerBill 3586bda6ae Use context.assertion_failure_proc with type assertions when the context is available, otherwise use a trivial trap. 2026-01-26 18:23:29 +00:00
gingerBill dc6067a8a9 Unify "mem*.inline" logic to only inline for <=8 bytes on all platforms 2026-01-22 13:18:22 +00:00
Harold Brenes 30e2875396 Fix automatic objc_msgSend on static methods not resolving aliased types. 2025-12-20 00:54:57 -05:00
Laytan c4d1cd6ee5 fixes for 32bit with regards to typeid 2025-11-04 21:37:29 +01:00
jakubtomsu c21453acc5 comment 2025-10-18 16:18:58 +02:00
jakubtomsu 91750e2f1b prefer Type pointer over LLVMTypeRef when doing a struct_field_remapping lookup 2025-10-18 16:11:47 +02:00
Laytan e7ecb16a1e llvm 21 support 2025-10-14 19:55:00 +02:00
Harold Brenes e79e53dbbd Use module-prefixed naming scheme for tracking
objc block instead of shared id counter.
2025-10-05 16:14:32 -04:00
Harold Brenes 86f9c920da Fix Objective-C block symbols naming conflict across modules.
Fix assert triggered when there's checker errors and
 Objective-C method implementations.
2025-10-05 15:53:42 -04:00
gingerBill 3f7fc1e9bf Merge pull request #5738 from jakubtomsu/fix-simd-ptr-transmute
[LLVM backend] SIMD vector transmute only uses bitcast when the elements aren't pointers
2025-10-05 20:27:23 +01:00
gingerBill 810ca89253 Merge pull request #5727 from harold-b/hb.intrinsics.objc_super
Add intrinsics.objc_super and Automatically emit objc_msgSend calls
2025-10-05 20:27:01 +01:00
Jakub Tomsu 588513a510 bitcast only non-pointer-like-element simd vectors, handle others like other aggregate types 2025-10-01 15:54:32 +02:00
Harold Brenes 6d9ace4a2c Remove outdated todo 2025-09-29 20:38:16 -04:00
Harold Brenes 5af13f5d53 Automatically emit objc_msgSend calls when calling imported or implemented Objective-C methods
- Add intrinsics.objc_super()

- Emit objc_msgSendSuper2 calls when an objc method call is combined with objc_super(self)

- Fix objc_block return value ABI for large struct returns

- Fix objc_implement method wrappers bad ABI for large struct returns and indirect args

- Simplify parameter forwarding for objc_imlpement methods

- Add intrinsics.objc_instancetype to mimi Objective-C instancetype* returns
  This facilitates returning the correct type on subclasses when calling mehtods
  such as `alloc`, `init`, `retain`, etc.

- Refactor Objective-C class implementations generation so that hierarchies are properly initialized

- Better codegen for context passing with ivar-based autocontext

- Allow @superclass on imported objc-c objects

- Better codegen for block forwarding invoker, arguments are forwarded directly
2025-09-29 20:37:48 -04:00
gingerBill 34d040cef1 Correct format strings 2025-09-29 16:51:38 +01:00
gingerBill 9e8be055c1 Rename to -build-diagnostics 2025-09-29 16:16:19 +01:00
gingerBill 11712627cb Add module stuff to -para-poly-diagnostics 2025-09-29 16:14:55 +01:00
gingerBill 1fc1d8e451 Change sort for single instanced procedures 2025-09-29 14:32:21 +01:00