Commit Graph
1382 Commits
Author SHA1 Message Date
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