[llvm-dev] CallSiteSplitting and musttail calls

Fedor Indutny via llvm-dev
Sat, 24 Feb 2018 07:16:10 -0000

Hello!

I've discovered that `CallSiteSplitting` optimization doesn't support
musttail calls. The easiest fix as it stands is disabling it for such call
sites: https://reviews.llvm.org/D43729 . However, I'm not happy with such
contribution.

My more sophisticated attempt has failed due to my poor understanding of
llvm internals. Here is the attempted patch:
https://gist.github.com/indutny/240c33522563ebd633613a903479d5e6

I'd greatly appreciate any help with it.

Just in case, there're few questions that I'm trying to find answers
for:

* Why replacing `removeFromParent()` with `eraseFromParent` breaks the code?
* How to properly remove predecessors from the resulting Tail block?
* How to remove the Tail block itself when we're done?

Thank you,
Fedor.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20180224/5dfc1a71/attachment.html>