Commit fb6153a
authored
[CodeGen] Fix ShrinkWrap crash when FindIDom receives empty predecessor/successor list (#198995)
When using `-msave-restore` with `-ffixed-x5` on RISC-V,
`canUseAsPrologue` returns false for all blocks because the save-restore
prologue requires t0 (x5) which is reserved. This causes the shrink-wrap
loop to keep searching for a valid save point, eventually reaching the
entry block. On the next iteration, it calls FindIDom with the entry
block's empty predecessor list, triggering an assertion in
findNearestCommonDominator.
Fix by returning nullptr from FindIDom when the block list is empty,
which signals the caller to stop searching and give up the optimization.
Fixes #1667591 parent 5d00743 commit fb6153a
2 files changed
Lines changed: 40 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
384 | 384 | | |
385 | 385 | | |
386 | 386 | | |
| 387 | + | |
| 388 | + | |
387 | 389 | | |
388 | 390 | | |
389 | 391 | | |
| |||
Lines changed: 38 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
0 commit comments