-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JIT: tail merge returns with multiple statements #109670
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.