gingerBill
bb9f0a2c47
Prefix the atomic analysis procedures with check_atomic_
2026-10-07 22:54:59 +01:00
gingerBill
158d0a9d8d
Replace the #+escape-analysis/#+atomic-analysis file tags with #+analysis which takes names and ! like #+vet
2026-10-07 22:50:20 +01:00
gingerBill
b12195bebf
Add an atomic memory ordering analysis (-no-atomic-analysis, #+atomic-analysis, #+no-atomic-analysis) warning where release or acquire ordering pairs with nothing, and -vet-atomic-access for plain reads of what is accessed atomically
2026-10-07 22:43:08 +01:00
gingerBill
711f08a641
Make is_type_lock_free follow what each target lowers without library calls, and reject atomics on types which are not lock-free
2026-10-07 21:58:32 +01:00
gingerBill
403738e5cd
Merge pull request #7802 from odin-lang/bill/compiler-improvements-2026-10
...
Flow-based Escape Analysis of Stack Memory + Show where parapoly procedures and records were instantiated in errors within them
2026-10-07 21:19:06 +01:00
gingerBill
d728de8a20
Add #+escape-analysis and #+no-escape-analysis file tags, and keep the syntactic check of unsafe returns where the escape analysis is disabled
2026-10-07 21:06:56 +01:00
gingerBill
6784db9f86
Add -no-escape-analysis, which cannot be used with -vet-nil-deref or -vet-uninitialized
2026-10-07 20:56:04 +01:00
gingerBill
20c603392e
Analyse the escape summaries in the strongly connected components of the recorded calls, so the results are deterministic
2026-10-07 17:44:59 +01:00
gingerBill
6961b36425
Fix the core:sys/llvm bindings for current LLVM, add the missing ones; allow #const parameters to take their defaults, and reuse an intrinsic already declared by the compiler
2026-10-07 16:56:25 +01:00
gingerBill
edeca40dd6
Skip the escape analysis for an executable's entry point, suggest clearing stores, and add type_zero_value_string
2026-10-07 13:41:32 +01:00
gingerBill
e702482f38
Group the per-thread error state into ErrorContext
2026-10-07 11:25:53 +01:00
gingerBill
86502ed7ec
Show where parapoly procedures and records were instantiated in errors within them
2026-10-07 11:08:13 +01:00
Karl Zylinski
05d4c79dc5
Parapoly: Fix regression where proc group containing parapoly enumerated array specialization was marked as ambigious.
2026-10-06 20:42:29 +02:00
gingerBill
ba13344c1f
Pass a local declaration's dependencies to those it is in once checked, remove the dependency tree update, find the global initialization order in the background, and stop linking every polymorphic call's scope into its declaration's
2026-10-05 13:20:26 +01:00
gingerBill
bcf0ac7b21
Match polymorphic procedure specializations by parameter names at every depth so they no longer depend on which call site is checked first
2026-10-05 12:28:46 +01:00
gingerBill
5795183b75
Queue a polymorphic specialization's body when it is first used rather than when it is generated, so the minimum dependency set is only generated once; assert that every body in it was checked rather than checking any missed ones late
2026-10-03 19:37:26 +01:00
gingerBill
5c787d0e72
Re-enable the temporary_allocator() and fix the arena_temp_end
2026-10-03 18:17:25 +01:00
gingerBill
0b325449a4
Merge branch 'bill/llvm-backend-improvements' of https://github.com/odin-lang/Odin into bill/llvm-backend-improvements
2026-10-03 12:38:08 +01:00
gingerBill
5031e2733e
Add the comparison procedures of types in the type table and map keys as dependencies making the backend no longer has to create missing procedures
2026-10-03 12:38:00 +01:00
gingerBill
9f2a5147bd
Fix: Mark a generated polymorphic procedure before publishing it to other threads
2026-10-03 12:10:12 +01:00
gingerBill
c628768c5e
Strip constant parameters from specialized procedure types; fix calling a parenthesized polymorphic callee
2026-10-02 23:11:13 +01:00
gingerBill
1d3f982b50
Allow intrinsics.procedure_of on procedures without results or requiring a context; treat a specialized procedure's type as concrete
2026-10-02 17:10:03 +01:00
gingerBill
f0ac6c3fba
Fix #7700 : constant #soa field access yields the per-element field array; compare and canonicalize typeid constants
2026-10-02 16:55:57 +01:00
gingerBill
161f6e30e6
Merge pull request #7701 from odin-lang/bill/multithread-global-decls
...
Multithread The Entire Semantic Checker
2026-10-02 14:17:23 +01:00
gingerBill
0915bdcb92
Reject procedure group candidates whose $T/S parameters cannot take the operands before checking their signatures; compare polymorphic instances by an identity hash before are_types_identical
2026-10-02 13:37:32 +01:00
gingerBill
6bc4b69ab8
Fix #7316 : a polymorphic procedure in a constant compound literal is its instance, not nil
2026-10-02 13:03:48 +01:00
gingerBill
3b6a32398b
Merge pull request #7692 from corleypc/must-tail-disallow-odincc
...
Disallows the Odin calling convention with #must_tail
2026-10-02 11:38:27 +01:00
gingerBill
c494c7a503
Check global entity groups in parallel
...
* CAS-claimed entities, cycle-safe waits for entities and records, lazy entities without lazy_mutex
* Build union type names only on error, take the error block only to report proc group overload errors
2026-10-01 23:17:34 +01:00
gingerBill
5f579a1a10
Fix numerous race conditions: clone polymorphic defaults per call, evaluate foreign import attributes after collection, own dependencies for record instances, sorted Objective-C emission, no debug line for anonymous records
2026-10-01 21:55:25 +01:00
gingerBill
73c3a96de1
Make global checking state thread-safe: read-only global scopes, per-group untyped and #soa, deferred link-name checks, fresh contexts for on-demand globals
2026-10-01 21:07:41 +01:00
gingerBill
38fa57e907
Make global checking and codegen order-independent
2026-10-01 15:01:14 +01:00
gingerBill
c6b9f8d998
Try to fix the #+lazy entities
2026-10-01 13:51:40 +01:00
gingerBill
b06c5ffa70
Add -internal-global-entity-graph; Fix union type inference bug
2026-10-01 13:42:32 +01:00
Mihail Moskov
016414cc88
disallows odin cc with #must_tail
2026-10-01 15:09:24 +03:00
gingerBill
9602f57513
Minor refactor for visited sections
2026-10-01 11:03:10 +01:00
gingerBill
3551707607
parapoly: allow a constant default value for a polymorphic parameter
2026-10-01 10:53:29 +01:00
gingerBill
4e49db59a8
parapoly: default untyped args against a still-polymoprhic parameter
2026-10-01 09:54:10 +01:00
gingerBill
98203dbd56
parapoly: remove the in-place polymorphic match; substitution engine is now the only resolver
2026-10-01 09:27:34 +01:00
gingerBill
7c8dfd4cff
Improve mixed order ternary type inference and poly-determination diagnostics
2026-10-01 01:30:38 +01:00
gingerBill
66111934c3
Allow parapoly procs to be in @(deferred_*) attributes
2026-10-01 01:17:40 +01:00
gingerBill
d89709fea0
Allow untyped {...} against a union to be inferred correctly
2026-10-01 00:57:45 +01:00
gingerBill
614b45e919
Add optional annotations for the next error source line.
2026-10-01 00:49:36 +01:00
gingerBill
f65f3cd4da
parapoly: Fix bug on error reporting when none of the parameters match in a parapoly procedure
2026-10-01 00:22:06 +01:00
gingerBill
96dd7d22ec
Improve the the ambiguous calls stuff further by trying to find a confident diagnosis
2026-10-01 00:17:12 +01:00
gingerBill
668559beeb
Improve parapoly error messages for near misses and de-emphasize overloads whose first parameter cannot accept the first argument's container
2026-10-01 00:10:56 +01:00
gingerBill
5621e4e829
Allow append(&a, {1, 2})
2026-09-30 23:42:22 +01:00
gingerBill
e961edcea2
Handle ternary expressions when doing implicit parapoly determination
2026-09-30 23:13:48 +01:00
gingerBill
a79cce3945
parapoly: Fix more cases of untyped expressions
2026-09-30 23:05:58 +01:00
gingerBill
bbb2cf19a2
Begin work on deferring untyped compound literals in polymorphic call contexts
2026-09-30 23:00:17 +01:00
gingerBill
255b3da8b5
parapoly: match $T/Constraint through the subst engine
2026-09-30 21:58:47 +01:00