Commit 2dfc0f9
committed
Apply the review batch: unify the report with codegen, record verdicts and bugs
All four reviews cleared the borrow-elision flip (soundness by residual
equivalence per surface, adversarial with no reproduced miscompile, efficiency
at about 3.5 percent of compile time with a do-not-optimize list, simplification
with applied findings). Record the verdicts in RC_ELISION.
The report drift the simplification review confirmed is fixed at the root:
analyze_rc_elision now consumes the same elidable_moves and parameter modes
codegen uses, so the report counts what is actually emitted and elided. The old
report claimed 78 movable on the http server where codegen elided 35, and the
truthful numbers are 35 moves plus 46 borrowed call positions needing no retain
at all. The unification also exposed a real refinement item, recorded: a
function-local variable carries a return-path drop plus an unreachable
fall-through drop, so the single-drop guard blocks every function-local move
today, and moves fire only for temporaries and top-level bindings.
Also applied: the stranded loop_ranges and explain doc comments moved to their
functions, dependency edges deduplicated in a set, the shared borrowed_param_ids
helper replacing the lower_program closure and main's special case, HashSet
imported once, the report built from one function list, and the move tests
rewritten to pin true elision behavior (top-level shapes with single drops,
write_str instead of the print desugar whose str call is itself an Owned
position). Record Bug 15 (a function referencing a top-level binding segfaults,
pre-existing) and Bug 16 (explicit finalizer call runs the body twice, a
semantics decision) in KNOWN_BUGS.1 parent a5be148 commit 2dfc0f9
5 files changed
Lines changed: 198 additions & 128 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
74 | 107 | | |
75 | 108 | | |
76 | 109 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
190 | | - | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
0 commit comments