This largely works as expected, except that as far as I can tell,
without explicit annotations added to the caller, (or a
`#force_inline`), the LLVM `target-features` function attribute
gets ignored by the inliner under the rationale of `-sse,-avx,-avx2`
is a subset of `+sse,+avx,+avx2`.
With `#force_no_inline` the correct code does get generated, but in
the regression I am trying to fix, the caller gratuitously also uses
SIMD, leading to horrific performance.
```
-did-you-mean-limit:<integer>
Sets the maximum number of suggestions the compiler provides.
Must be an integer >0.
If not set, the default limit is 10.
```
e.g. with a limit of 5
```
W:/Scratch/main.odin(44:7) Error: Undeclared name 'B1' for type 'E'
e = .B1
^^
Suggestion: Did you mean?
A23
A02
A19
A20
A21
... and 25 more ...
```
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.
- 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>
- Add 'ios' pseudo-subtarget which triggets with either iPhone or iPhoneSimulator subtargets.
- Treat an explicit 'default' subtarget as exclusive only to the default subtarget, not an other platform-compatible subtargets.
- 'generic' continues to resolve to true for any platform-compatible subtarget as it names appears to imply such behavior.
Add `ODIN_PLATFORM_SUBTARGET_IOS` builtin constant which evaluated to
`true` when the platform is `Darwin` and the subtarget it either `iPhone` or `iPhoneSimulator`