local_cse kept an available expression at a join when its vreg's other definition was dominated by the join; inside a loop that definition can reach the join again (back edge), so the next iteration read the wrong value (an awaited loop stored its sum as the coroutine's resumed flag). A definition dominated by the join now counts as stable only if it cannot reach the join. Found by the new differential runner (diff_full.sh adds the compiler test corpus and a Calculator input replay on Linux). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| calculator.txt | ||