Repository navigation
Commit 4a23344
ion: reject a fixed def that conflicts with a clobber (#266)
Fixes #222.
A clobber is a fixed late def of a throwaway vreg. When it overlaps a
fixed definition in a minimal bundle, allocation is impossible: neither
constraint can be moved or evicted. Return
`RegAllocError::TooManyLiveRegs` instead of panicking.
Replaced the verbose regression test with coverage in the existing ion
fuzzer, as requested. The generator can now emit late fixed-def/clobber
collisions. The harness checks allocation and output on a copy with the
collisions removed, then requires `TooManyLiveRegs` for the original
input. Other fuzzers retain the default generator behavior.
Validation:
- All six CI checks passed at `1e77724`: build, features, lint, no_std,
fuzz, and Cargo deny.
- 14 tests passed with `cargo test --all --all-features`; all-features
and no-default-features checks passed.
- `cargo fmt --all -- --check` passed.
- All four targets built with `cargo +nightly fuzz build`.
- Targeted ion campaign on the 5860: eight workers, 24 hours, 61,027,823
executions, all workers exited zero, no new failure artifacts.
- With the allocator fix reverted, mutation found the original panic.
The same artifact passed with the fix and passed the campaign's
preflight.
Campaign provenance note: the delivered executable had a truncated
non-loaded tail. Byte comparison against the full build confirmed that
every file-backed program segment was present and identical. The source
diff matches the recorded campaign payload. The execution count is not a
count of unique programs or exhaustive coverage.
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 2fe490b commit 4a23344
3 files changed
Lines changed: 60 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
367 | 367 | | |
368 | 368 | | |
369 | 369 | | |
| 370 | + | |
370 | 371 | | |
371 | 372 | | |
372 | 373 | | |
| |||
383 | 384 | | |
384 | 385 | | |
385 | 386 | | |
| 387 | + | |
386 | 388 | | |
387 | 389 | | |
388 | 390 | | |
| |||
582 | 584 | | |
583 | 585 | | |
584 | 586 | | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
585 | 603 | | |
586 | 604 | | |
587 | 605 | | |
| |||
638 | 656 | | |
639 | 657 | | |
640 | 658 | | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
641 | 673 | | |
642 | 674 | | |
643 | 675 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| |||
59 | 60 | | |
60 | 61 | | |
61 | 62 | | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
68 | 79 | | |
69 | 80 | | |
70 | 81 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1214 | 1214 | | |
1215 | 1215 | | |
1216 | 1216 | | |
| 1217 | + | |
| 1218 | + | |
| 1219 | + | |
| 1220 | + | |
| 1221 | + | |
| 1222 | + | |
| 1223 | + | |
| 1224 | + | |
| 1225 | + | |
| 1226 | + | |
1217 | 1227 | | |
1218 | 1228 | | |
1219 | 1229 | | |
| |||
0 commit comments