Harold Brenes
147542b5cc
Allow pointers to types which have subtype fields at offset 0
...
to be assignable in proc parameters.
```odin
// Virtual interface
IFoo :: struct {
foo: proc( self: ^IFoo ),
}
// Implements IFoo interface
Foo :: struct {
using vt: IFoo,
name: string,
}
// Implement interface via `Foo`
Foo_Impl :: IFoo {
// `self` of type `^Foo` (not `^IFoo`) is now accepted as a valid parameter.
foo = proc( self: ^Foo ) {
...
},
}
```
2026-03-23 20:55:44 -04:00
gingerBill
111bee6ecd
Fix scope->elements iteration causing a few bugs in the doc-format
2026-03-19 20:31:01 +00:00
gingerBill
3fb430ceb7
Merge branch 'master' of https://github.com/odin-lang/Odin
2026-03-19 18:50:17 +00:00
gingerBill
e6521ed269
Inline the generic count stuff
2026-03-19 18:50:01 +00:00
Jeroen van Rijn
ea1d97f703
Merge pull request #6448 from SpaceTravelCompany/master
...
fixes Android build
2026-03-19 19:45:33 +01:00
Jeroen van Rijn
c29fd7f872
Merge pull request #6436 from nathanchere/patch-1
...
Update build_odin.sh to support LLVM 22
2026-03-19 19:18:31 +01: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
xfitgd
b965e46d7c
fixes Android build
2026-03-19 08:27:09 +09:00
Nathan Chere
d18eff9a93
Fix LLVMStructType calls deprecated as of LLVM 22
2026-03-18 21:21:00 +01:00
Nathan Chere
c2e42fe455
Remove deprecated LLVMGetGlobalContext calls
2026-03-18 21:11:12 +01:00
Nathan Chere
82d985b458
add LLVM 22 support to optimisation pass pipelines
2026-03-18 20:31:27 +01:00
Nathan Chere
eddc8084f1
update microarch table for LLVM 22
2026-03-18 18:30:39 +01:00
gingerBill
85c05b238e
Handle bit fields separately
2026-03-17 13:50:49 +00:00
gingerBill
d28e19c957
Minor improve to check if the entity was already there
2026-03-17 13:47:02 +00:00
gingerBill
153a522228
Use normal i64 arithmetic instead of big-ints for hot path
2026-03-17 13:34:06 +00:00
gingerBill
46936e0e52
General improvements
2026-03-17 12:55:25 +00:00
gingerBill
e18b15e8f0
Move error-only things to the error scopes
2026-03-17 12:16:44 +00:00
gingerBill
9ad3a23f27
More improvements to performance; AtomicFreelist abstraction
2026-03-17 12:10:49 +00:00
gingerBill
b19e89578f
Improve check_struct_fields performance; use CheckerTypePath free list
2026-03-17 11:42:03 +00:00
gingerBill
04cb889aed
Begin interning ScopeMap strings
2026-03-17 11:04:32 +00:00
gingerBill
d5a78a9cf1
Remove canonical hash shortcut
2026-03-17 09:43:16 +00:00
gingerBill
239b86c566
Fix typos
2026-03-17 09:20:14 +00:00
gingerBill
a8c6ea7c8a
Implement a new StringInterner
2026-03-17 09:18:39 +00:00
gingerBill
f7ede8632f
Minor changes
2026-03-17 08:10:13 +00:00
gingerBill
cb7a87773b
Split keys and slots and allocate them both together
2026-03-16 18:04:25 +00:00
gingerBill
36d5a19115
Replace Scope.elements to use a custom hash map ScopeMap
...
This hash map is robin hood based with a inline slot amount for small scopes
2026-03-16 17:41:58 +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
3dc68c2e08
In PtrSet permanent_allocator instead of heap_allocator
2026-03-16 15:50:13 +00:00
gingerBill
ef36a18323
Enable some RVO by default
2026-03-16 14:52:07 +00:00
gingerBill
fc41e44140
Improve bounds checking to minimize its need
2026-03-16 14:29:44 +00:00
gingerBill
0bf2d01a04
Work on improving bounds checking with constant known indices and lb_add_local_generated
2026-03-16 14:06:23 +00:00
gingerBill
93852df29e
Support #unroll(N) for for FCD arrays
2026-03-16 12:28:18 +00:00
gingerBill
e87564b205
Support for in for FCD arrays
2026-03-16 12:21:41 +00: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
gingerBill
5d165f70e1
Add loads of RVO optimizations for basic 1-value return cases
2026-03-15 21:53:38 +00:00
gingerBill
fa6109ca1e
Properly dispose of LLVMTargetDataRef
2026-03-15 21:35:26 +00:00
gingerBill
38d7f45e64
Fix race condition with code_gen_module
2026-03-15 21:35:02 +00:00
gingerBill
2de214418c
Fix LTO with debug info by passing -g
2026-03-15 21:29:54 +00:00
gingerBill
dc72e8210f
Support proc(q: $Q) -> type_of(Q{}.data[0]) in return types
2026-03-15 21:28:58 +00:00
gingerBill
eecb67cb89
Implement fused nested slice chain optimizations src[a:b][c:d][e:f]...
2026-03-15 21:17:05 +00:00
gingerBill
6b2853d9f1
Improve matrix * vector code gen
2026-03-15 21:03:31 +00:00
gingerBill
12b06887a3
Remove dead code
2026-03-15 20:36:02 +00:00
gingerBill
f8f96905ae
Fix typos
2026-03-15 20:27:14 +00:00
gingerBill
a56c3da149
Support select fast path for or_else
2026-03-15 20:02:48 +00:00
gingerBill
f70bceec84
Add optimization for improving side-effect-free use of a select for ternary if.
2026-03-15 19:58:57 +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
55b3ea7c2d
Allow @(deprecated=<string>) on types
2026-03-15 18:58:48 +00:00
gingerBill
6fc80d9562
Correct write_type_to_canonical_string for "untyped" types
2026-03-15 18:33:20 +00:00