Commit Graph
34 Commits
Author SHA1 Message Date
gingerBill dbcbf45509 Escape Analysis: Keep stored field paths in escape analysis flows 2026-10-15 00:26:44 +01:00
gingerBill 89b94438a5 Leave out bounds checks proven from fields of locals and lengths known not to be zero 2026-10-12 20:55:44 +01:00
gingerBill 33c1d7124c Leave out bounds checks proven from conditions, loops, and earlier checks 2026-10-12 16:15:49 +01:00
gingerBill 2804ac31ce Check an interval's end and an iterator's call on every iteration when leaving out bounds checks 2026-10-12 15:29:23 +01:00
gingerBill 3cd272c0fe Leave out bounds checks repeating one which already passed 2026-10-12 15:15:48 +01:00
gingerBill 97c7f0214f Move a DeclInfo's procedure-only fields to a ProcDeclInfo only procedures allocate; remove the unused type_and_value_mutex fields 2026-10-11 20:08:31 +01:00
gingerBill 992839ebea Store a node's constant value out of line (as few nodes have one) 2026-10-11 19:16:22 +01:00
Franz 4c331405ae Fix escape analysis for init statements of ranged loops 2026-10-10 13:29:17 +02:00
gingerBill 8169255b97 Analyse procedures that call each other in at most three parallel rounds, each with what the others found in the one before, instead of one at a time until what flows through them settles 2026-10-09 02:10:26 +01:00
gingerBill cf01b81df3 Forget what is held by what an if statement's condition shows is nil in that branch, e.g. a field replaced with a clone unless it is nil 2026-10-09 01:58:52 +01:00
gingerBill 24f920021b Analyse a procedure that grows too large again without what its calls do, rather than giving up on it, so what it does itself is always checked 2026-10-09 01:54:49 +01:00
gingerBill cc0f0a5ea0 Keep only the escape flows that find common mistakes: none for what is loaded through an argument more than once, nor for what is moved around within the memory an argument reaches 2026-10-09 01:49:07 +01:00
gingerBill 476a692204 Fix the escape analysis hanging when a call stores what it loads into a field of another type and give up on procedures that grow too large 2026-10-09 00:44:31 +01:00
gingerBill d0a5d4a8e2 Fix #7820: keep only the origins of what a call's flow loads from memory of an unknown type in the escape analysis 2026-10-08 11:14:39 +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 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 476ff62d6d Add -vet-uninitialized, reporting reads of what is declared with --- before anything is stored in it 2026-10-07 20:35:53 +01:00
gingerBill 043f6e4c3d Use the temporary allocator for the escape analysis's scratch memory 2026-10-07 20:08:35 +01:00
gingerBill cfde9fb9cb Tidy up check_escape.cpp 2026-10-07 20:02:04 +01:00
gingerBill 3f1a87dd33 Treat the fields brought in by 'using' on locals and in 'using' statements as part of what it was applied to in the escape analysis 2026-10-07 19:42:29 +01:00
gingerBill e512fe07d3 Add -vet-nil-deref, reporting dereferences and calls through what is nil on every path reaching them 2026-10-07 19:36:37 +01:00
gingerBill 9ee4b3f497 Cut the escape call graph's setup by numbering, counting and releasing in parallel, and finding callers alongside the groups 2026-10-07 18:16:36 +01:00
gingerBill cb3165cd2c Settle recursive escape groups one member at a time after a first parallel round 2026-10-07 18:00:18 +01:00
gingerBill 969b84fb9c Build the escape call graph's edges in parallel 2026-10-07 17:51:05 +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 01dfa7756b Analyse the escape summaries in the call graph's strongly connected components, so the results are deterministic 2026-10-07 17:26:20 +01:00
gingerBill 5659d485cb Merge the escape analysis's stores of the caller's memory from different calls 2026-10-07 16:31:08 +01:00
gingerBill 23d057c01f Use a specialization's full type for its escape summary in calls 2026-10-07 16:05:56 +01:00
gingerBill 50810e6717 Add store summaries to the escape analysis 2026-10-07 15:44:07 +01:00
gingerBill bc56d95e63 Add interprocedural summaries to the escape analysis, analysing callees on demand 2026-10-07 15:08:05 +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 5522d18745 Skip the escape analysis for an executable's entry point and suggest clearing stores 2026-10-07 13:38:22 +01:00
gingerBill 8a8ffa27f1 Replace check_unsafe_return by deciding unsafe returns in the escape analysis 2026-10-07 13:16:57 +01:00
gingerBill 8ea02cc733 Add flow-based escape analysis of stack memory, reported as warnings 2026-10-07 13:08:22 +01:00