Commit Graph

531 Commits

Author SHA1 Message Date
MauriceElliott
13763e5ed7 fixup! fix: reworked the playdate subtarget to fix issues with the requirement for single point precision floats, as well as an issue with function lowering when set to thumb mode only instrunctions. 2026-07-13 23:06:32 +01:00
MauriceElliott
11ef10bb5d fix: reworked the playdate subtarget to fix issues with the requirement for single point precision floats, as well as an issue with function lowering when set to thumb mode only instrunctions. 2026-07-13 23:02:50 +01:00
misomosi
b9e0916189 Use better triple for ARM32 freestanding 2026-07-09 19:39:59 -04:00
Jeroen van Rijn
03652d7423 Improve custom output location for LLVM-IR, OBJ + ASM
Fixes #6926.

If `build` is a subdirectory in the current directory, then `odin build . -out:build` will place `.S`, `.obj` and `.ll` files there if the corresponding `-build-mode` is given.
2026-07-02 14:19:56 +02:00
MauriceElliott
adc50a1184 fixup! fix: made suggested changes to add a playdate subtarget, updated help text and reduce required build flags for playdate to just the subtarget, no-movt and cortex-m7 added to default on playdate subtarget flag. 2026-07-01 21:21:02 +01:00
MauriceElliott
56cee0c2cf fix: made suggested changes to add a playdate subtarget, updated help text and reduce required build flags for playdate to just the subtarget, no-movt and cortex-m7 added to default on playdate subtarget flag. 2026-07-01 21:18:28 +01:00
MauriceElliott
a3fa3476c6 feat(arm32 cdecl): Added thumb as the triple for cortex-m7. Updated the calling convention for cortex-m7 arm32 micro processors as the soft float register was being used when calling across the C ABI boundary causing guff data to be passed. 2026-06-30 20:07:36 +01:00
Maurice Elliott
3c52217338 Merge branch 'odin-lang:master' into master 2026-06-27 23:13:23 +01:00
gingerBill
40e54a97ed Merge branch 'master' into bill/bedrock 2026-06-24 11:07:02 +01:00
MauriceElliott
954f988d2b feat(build_settings): Added a section to init_build_context to target the thumbv7em-non-eabihf when the cortex-m7 processor is selected 2026-06-23 22:03:22 +01:00
gingerBill
85db8c68a9 Remove -stack-protector:default as none is now the default 2026-06-19 09:14:11 +01:00
gingerBill
11e7cff116 Change -stack-protector: default to none 2026-06-19 09:12:57 +01:00
gingerBill
69daa4d184 Merge pull request #6830 from A1029384756/stack-canaries
Stack canaries
2026-06-19 09:11:40 +01:00
A1029384756
863b2aea80 [stack-canaries] default to sspstrong 2026-06-14 13:36:55 -04:00
Krzysztof Furman
15deb7a118 Commented the workaround with links to issues, and put it behind a build flag. 2026-06-13 09:53:43 +01:00
A1029384756
8bd95d4082 [stack-canaries] fixed stack canaries on arm linux 2026-06-13 01:52:19 -04:00
A1029384756
3598e351a4 [stack-canaries] restricted to only non-arm 2026-06-12 23:56:55 -04:00
A1029384756
f850fef613 [stack-canaries] disallow stack canaries on non-intel linux 2026-06-12 23:54:26 -04:00
A1029384756
8ccee66157 [stack-canaries] fixed platform behavior 2026-06-12 23:27:32 -04:00
A1029384756
2373fabe47 [stack-canaries] added protection modes 2026-06-12 22:57:39 -04:00
A1029384756
286674a862 [no-plt] restricted to llvm 19+ 2026-06-08 10:59:32 -04:00
A1029384756
da742fc526 [no-plt] enable no-plt behavior on linux arm64 and amd64 targets 2026-06-08 10:58:05 -04:00
A1029384756
43b057dfeb [linux] change default settings to enable pie and full relro 2026-06-06 21:23:26 -04:00
jakubtomsu
dca7710471 fix error pos style env var overwriting arg 2026-05-27 20:02:34 +02:00
gingerBill
b0ee0bb635 Add @(fast_math={...}) + intrinsics.Fast_Math_Flags 2026-05-11 11:55:07 +01:00
gingerBill
d21fea404b Merge pull request #6631 from heavyrain266/deprecate-haiku
removed Haiku from supported targets
2026-05-06 15:52:36 +01:00
gingerBill
942c1bff17 Merge branch 'master' into bill/bedrock 2026-05-05 13:57:14 +01:00
gingerBill
7788ca0242 Fix minor indentation problem 2026-05-05 12:16:42 +01:00
gingerBill
781b71e6ea -disable-init-fini 2026-05-04 11:31:56 +01:00
gingerBill
cdc0efce43 -disallow-non-constant-globals 2026-05-04 11:28:57 +01:00
gingerBill
ea00291519 Begin work on -bedrock mode
Currently disables 128-bit integers, `map` type, and RTTI
2026-05-02 15:06:01 +01:00
Ignacy Koper
d1915fa6f5 removed Haiku from compiler targets, and tests
Signed-off-by: Ignacy Koper <ignacy423@gmail.com>
2026-04-28 19:27:23 +02:00
Ignacy Koper
3e64a72bad removed Essence from supported targets
Signed-off-by: Ignacy Koper <ignacy423@gmail.com>
2026-04-27 11:10:48 +02:00
jakubtomsu
e97f73e4aa lightweight simplification and optimization passes in -o:minimal 2026-04-11 11:14:28 +02:00
jakubtomsu
00874e39ad fix 2026-04-10 12:53:28 +02:00
jakubtomsu
bf4aa9b556 stronger +/- checks in check_target_feature_is_enabled 2026-04-10 12:47:12 +02:00
mtarik34b
ac17852f36 Add option to show docs in source order within each file 2026-03-28 02:26:39 +01:00
gingerBill
25c10c18cc Remove tilde backend 2026-03-26 11:49:39 +00:00
Yawning Angel
62d78d61fa src: Allow clang-style +/- for target features
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.
2026-03-19 19:25:23 +09:00
gingerBill
5fa274cb6a -internal-rvo 2026-03-15 22:10:03 +00:00
gingerBill
b3b31cdba7 -internal-llvm-mem2reg 2026-03-15 22:04:27 +00:00
Jeroen van Rijn
7a8b6d189e Merge pull request #6404 from botero-dev/android-platforms
Add support for other Android architectures
2026-03-11 22:34:25 +01:00
Andrés Botero
9df092759e Add support for other Android architectures 2026-03-11 15:37:37 -05:00
gingerBill
b7bb7a1dc4 Use scope_reserve call directly 2026-03-11 14:22:36 +00:00
Jeroen van Rijn
6386b395de Add -did-you-mean-limit:N
```
-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 ...
```
2026-02-13 15:15:03 +01:00
gingerBill
ae91b9b369 Add -show-import-graph 2026-02-10 22:16:15 +00:00
gingerBill
f3daaa62fe Merge pull request #6220 from laytan/fix-lto-macos
fix LTO on MacOS
2026-02-02 18:46:18 +00:00
Laytan Laats
afbbb829ea fix LTO on MacOS
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.
2026-02-02 18:13:48 +01:00
Jeroen van Rijn
6a07f70c1c support -> supported 2026-02-02 17:57:50 +01:00
Jesse Meyer
1a7f78b665 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-01 09:04:53 -05:00