aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Change LTO rules for all platformsgingerBill11 days1-2/+2
|
* Add docs for `-lto:<string>`; remove `-lld` and `-radlink` flags docs; with ↵dev-2026-02gingerBill11 days1-6/+26
| | | | `-lto` default to `-use-separate-modules` and `-linker:lld`
* Merge branch 'master' into lto-supportJesse Meyer11 days21-82/+222
|\
| * Merge pull request #6220 from laytan/fix-lto-macosgingerBill13 days2-1/+30
| |\ | | | | | | fix LTO on MacOS
| | * fix LTO on MacOSLaytan Laats13 days2-1/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If no `-minimum-os-version` is given, ignore the `override-module` warnings. The user not using, `-minimum-os-version` opts you into linker warnings about target versions. If a `-minimum-os-version` is provided, normalize it to a full version `11` to `11.0.0` for example. The linker seems to want that when doing LTO.
| * | support -> supportedJeroen van Rijn13 days2-2/+2
| |/
| * Add `intrinsics.count_trailing_ones` and `intrinsics.count_leading_ones`gingerBill13 days4-0/+45
| |
| * Comment out `t->Struct.are_offsets_being_processed.load()`gingerBill13 days1-3/+3
| |
| * Move `return true;` to after the if checkgingerBill13 days1-2/+2
| |
| * Remove unneeded mutex in `hash_exact_value`gingerBill13 days1-5/+0
| |
| * Add parent mutex lock for `scope_insert_with_name`gingerBill13 days1-0/+3
| |
| * Merge pull request #6215 from odin-lang/bill/fix-data-races-2026-02gingerBill13 days12-57/+92
| |\ | | | | | | Fix numerous data races
| | * Revert `mutex_lock` logicbill/fix-data-races-2026-02gingerBill13 days1-3/+3
| | |
| | * Fix `mutex_lock`gingerBill13 days1-1/+1
| | |
| | * Move `alignas` to before namegingerBill13 days1-1/+1
| | |
| | * Use mutex striping for `add_type_and_value`gingerBill13 days2-10/+29
| | |
| | * Make `Entity.parent_proc_decl` atomicgingerBill13 days3-6/+8
| | |
| | * Make `defer_use_checked` and `where_clauses_evaluated` atomicgingerBill13 days3-11/+11
| | |
| | * Make `Entity.code_gen_*` atomicgingerBill13 days1-2/+2
| | |
| | * Make atomic `variant_block_size` and `tag_size` in `TypeUnion`gingerBill13 days1-12/+12
| | |
| | * Use `compare_exchange_strong` `mutex_lock` on non-windows sytemsgingerBill13 days1-4/+4
| | |
| | * Mock out TSAN_* usage in thread_pool.cppgingerBill13 days1-0/+14
| | |
| | * Use `std::atomic` for `Ast.viral_state_flags` and `Ast_Ident.entity`gingerBill13 days3-14/+14
| | |
| * | Merge pull request #6216 from odin-lang/bill/debug-info-fixesgingerBill13 days6-12/+43
| |\ \ | | | | | | | | Debug Info Fixes
| | * | Fix positions for debug locations in `defer`, loops, and `switch` clausesgingerBill13 days4-4/+27
| | | |
| | * | Add case for completenessgingerBill13 days1-0/+2
| | | |
| | * | Fix debug infogingerBill13 days1-8/+13
| | | |
| | * | Move `values` construction to after padding has been setgingerBill13 days1-1/+2
| | |/
| * | Fix #6202gingerBill13 days1-0/+2
| | |
| * | Add ThinLTO support via -lto:thin and -lto:thin-files flagsJesse Meyer14 days5-7/+78
| |/ | | | | | | | | | | | | | | | | | | | | - 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>
* | Fix Windows LTO: preserve required procedures with llvm.usedJesse Meyer11 days2-9/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Windows with LTO, required procedures with external linkage need to be added to @llvm.used to survive linker-level dead code elimination. LLVM may generate implicit calls to runtime builtins (e.g., __extendhfsf2 for f16 conversions) during instruction lowering, after the IR is finalized. Without @llvm.used, the linker discards these procedures before the implicit calls are generated. This adds required procedures to @llvm.used at creation time. The fix is Windows-specific; other platforms handle this correctly. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* | Fix lld-link LTO jobs flag syntax on WindowsJesse Meyer11 days1-1/+1
| | | | | | | | | | | | | | lld-link doesn't recognize /lldltojobs:N as a standalone flag and treats it as a file path. Use /opt:lldltojobs=N instead. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* | Skip sanitizer IR passes when LTO is enabledJesse Meyer11 days1-8/+15
| | | | | | | | | | | | | | | | | | | | | | 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>
* | Add ThinLTO support via -lto:thin and -lto:thin-files flagsJesse Meyer11 days5-7/+78
|/ | | | | | | | | | | - 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>
* Merge branch 'master' into bill/feature-using-stmtgingerBill2026-01-3025-257/+731
|\
| * Support `-linker:mold` on FreeBSD and NetBSD; Remove `-use-lld` and ↵gingerBill2026-01-302-13/+1
| | | | | | | | `-use-radlink`
| * Merge branch 'odin-lang:master' into vet_flagsFaker-092026-01-297-11/+73
| |\
| | * Remove else check for untyped to typedgingerBill2026-01-291-2/+4
| | |
| | * Add `struct #simple` to force a struct to use simple comparison if all of ↵gingerBill2026-01-295-7/+53
| | | | | | | | | | | | the fields "nearly simply comparable".
| | * Complete `is_type_simple_compare` `switch` rulesgingerBill2026-01-291-0/+11
| | |
| | * Allow #unroll for arrays of fixed length which are not constantsgingerBill2026-01-282-2/+5
| | |
| * | Fix for vet flags. All combinations of vet flags on the command line and top ↵Shane Shrybman2026-01-281-3/+3
| |/ | | | | | | of file are working
| * Fix #6183gingerBill2026-01-271-0/+16
| |
| * Allow for `CONSTANT_TYPEID_ARRAY[idx]` to be used as a type in certain contextsgingerBill2026-01-261-0/+14
| |
| * Fix constant indexing within a call that doesn't existgingerBill2026-01-261-0/+5
| |
| * Use `context.assertion_failure_proc` with type assertions when the `context` ↵gingerBill2026-01-263-9/+47
| | | | | | | | is available, otherwise use a trivial trap.
| * Allow for shortcut to get feature flags from the expression directly ↵bill/force-type-assertgingerBill2026-01-261-3/+9
| | | | | | | | assuming it as a file
| * Revert dynamic literals feature checkgingerBill2026-01-261-4/+2
| |
| * Add `#+feature force-type-assert` which overrides `-no-type-assert` on a ↵gingerBill2026-01-262-20/+47
| | | | | | | | per-file basis
| * Require space after the prefix of `#+build` style tagsgingerBill2026-01-261-0/+27
| |