Commit Graph

752 Commits

Author SHA1 Message Date
Znarf
e0d84ce73a Merge branch 'odin-lang:master' into master 2026-03-19 00:34:44 +01:00
gingerBill
04cb889aed Begin interning ScopeMap strings 2026-03-17 11:04:32 +00:00
gingerBill
1744f57d01 Use permanent_alloc_item directly rather than through the gb_alloc_item generic interface 2026-03-16 16:03:27 +00:00
gingerBill
fa6109ca1e Properly dispose of LLVMTargetDataRef 2026-03-15 21:35:26 +00:00
gingerBill
c6772dfd06 Merge branch 'master' into bill/fixed-capacity-dynamic-array 2026-03-15 11:41:01 +00:00
Laytan
af8853473a query host features instead of only host cpu for more accurate -microarch:native 2026-03-13 20:15:33 +01:00
Franz
ee3d0ea0b5 Fix #6407 2026-03-13 14:21:42 +01:00
gingerBill
bc636e4b36 raddbg debug view for fixed capacity dynamic arrays 2026-03-12 12:56:00 +00:00
Jesse Meyer
9eba12948a Skip sanitizer IR passes when LTO is enabled
With ThinLTO, the linker runs sanitizer passes at link time via
-fsanitize= flags, where it has whole-program visibility. Running
them at bitcode emission too double-instruments every module,
producing hundreds of "Redundant instrumentation detected" warnings.
Per-function sanitize/no_sanitize attributes are preserved in the
bitcode and respected by the linker's pass.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 20:16:20 -05:00
Jesse Meyer
43ad4a1d9f Add ThinLTO support via -lto:thin and -lto:thin-files flags
- Add -lto:thin and -lto:thin-files CLI flags with validation
- Emit LLVM bitcode (.bc) instead of object files when LTO is enabled
- Pass -flto=thin and -flto-jobs to clang/lld linkers
- Guard linkage corrections to skip declarations without definitions
  (required for LTO where declarations appear across modules)
- Allow module-per-file with LTO even at higher optimization levels

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 20:16:20 -05:00
gingerBill
5072d5c776 Add warning in code generation stage which might cause a possible code gen issue, when non-constant initialization is large 2026-01-22 13:54:53 +00:00
gingerBill
4ace851f9a Instead of using typeid hash, use the canonical name for internal procedure for debuggability 2026-01-22 13:17:26 +00:00
gingerBill
0366cd3304 Add #must_tail (similar syntax to #force_inline 2026-01-15 16:32:52 +00:00
gingerBill
70affd7e44 Disable global variable initialization into separate functions to circumvent an LLVM bug 2025-12-19 16:23:48 +00:00
gingerBill
e0e38afe60 With -use-single-module make some procedures use internal linkage rather than weak linkage 2025-12-17 10:27:28 +00:00
Tohei Ichikawa
d6b5a3139a Fix allocation of anonymous globals 2025-11-09 21:07:28 -05:00
Jeroen van Rijn
338733d9ef Remove duplicate import 2025-10-30 17:54:02 +01:00
gingerBill
816c47058d For test runner, try to look for os.exit or os2.exit 2025-10-30 16:14:32 +00:00
gingerBill
36d63b14b5 Just retry again with lb_generate_missing_procedures 2025-10-29 17:46:00 +01:00
Jeroen van Rijn
0605c7b0e3 Add target triple and LLVM code mode debug prints (#5839) 2025-10-22 10:27:27 +02:00
Laytan
e7ecb16a1e llvm 21 support 2025-10-14 19:55:00 +02:00
Yhya Ibrahim
a672c68f03 Make -target-features flag support disabling of a feature 2025-10-11 15:26:01 +03:00
gingerBill
bc9e6f852e Merge pull request #5762 from A1029384756/llvm-14-entry-fix
[llvm-14-entry-fix] bitcast context pointer to match types for llvm 14
2025-10-06 13:26:52 +01:00
A1029384756
866486fa1c [llvm-14-entry-fix] bitcast context pointer to match types for llvm 14 2025-10-06 00:12:31 -04: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
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
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
53f4fc1cbb Add -para-poly-diagnostics 2025-09-29 14:03:32 +01:00
gingerBill
4f442c6045 Rearrange const union initialization so that it is priority 2025-09-29 09:51:23 +01:00
gingerBill
4877214f34 Add more check_is_operand_compound_lit_constant uses 2025-09-28 23:53:07 +01:00
gingerBill
17c9e1d76b Fix global initialization when non was set 2025-09-28 22:11:46 +01:00
gingerBill
17204bd1c2 Global const unions with @(rodata) 2025-09-28 20:40:26 +01:00
gingerBill
31f0aaa62f Try to improve const union LLVM construction 2025-09-24 09:55:22 +01:00
gingerBill
90d1229ead Make LLVM_WEAK_MONOMORPHIZATION opt-in again 2025-09-24 09:13:48 +01:00
gingerBill
c9eef7c835 Single thread lb_create_startup_runtime_generate_body 2025-09-22 21:10:01 +01:00
gingerBill
9b8771b475 Handle missing procedures better 2025-09-19 16:15:04 +01:00
gingerBill
76705c6800 Convert missing_procedures_to_check to a queue 2025-09-19 14:18:09 +01:00
gingerBill
6bca1475ed Convert procedures_to_generate to a queue 2025-09-19 14:15:25 +01:00
gingerBill
ee3b10335b Split further 2025-09-19 13:59:58 +01:00
gingerBill
f1e3977cf9 Split up startup call into separate calls 2025-09-19 13:57:52 +01:00
gingerBill
ec91e2c15b Separate ini global var stuff 2025-09-19 13:52:25 +01:00
gingerBill
4d2854f561 Merge pull request #5632 from kalsprite/x386
windows i386 support
2025-09-18 22:01:14 +01:00
gingerBill
9cf69576ab More improvements to minimize code gen size 2025-09-18 20:58:24 +01:00
gingerBill
4b0a07ba27 Minor rearrangement 2025-09-18 17:06:09 +01:00
gingerBill
37e1e00623 Revert global procedure threading 2025-09-18 16:57:21 +01:00
gingerBill
111e2f0c1b After global procedures and types are generated, then queue the generation of the procedures for each module 2025-09-18 16:53:00 +01:00
gingerBill
5559916d5c Mulithread startup procedure body generation 2025-09-18 16:35:04 +01:00
gingerBill
0f307fbc5d Use multiple modules per file in package runtime 2025-09-18 15:34:19 +01:00
gingerBill
738a72943b Try moving parapoly procs into a separate module when doing weak monomorphization 2025-09-18 15:04:16 +01:00