Repository navigation
JIT: tail merge returns with multiple statements - #109670
Conversation
Remove the restriction that a mergeable return have one statement.
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
|
@EgorBo PTAL Like #109661, I spotted this when I was experimenting with a very early flow opts pass. Seems to have good diffs. There are some cases now where we'll jump to a |
EgorBo
left a comment
There was a problem hiding this comment.
I remember that I wanted to relax it in a follow up PR after that change, but forgot 🙂
|
the diffs look nice, but I guess the CI failure is related? I don't recall it when I was disabling it. Looks like tail call related |
Yes, they are quite likely related. |
It's because X86 does not set Not sure why x86 is special here, but assuming it needs to be this way, I can just use the old logic for x86, or check if the statement before the return is a tail call candidate, and defer merging if so. FYI @jakobbotsch |
I ended up not splitting returns from any tail call as there is a fair bit of twisty logic in morph that expects certain shapes. |
Remove the restriction that a mergeable return have one statement. But don't split tail calls away from a same-block return.
Remove the restriction that a mergeable return have one statement.