Daniel Berlin via llvm-dev
2018-Feb-27 16:32 UTC
[llvm-dev] CallSiteSplitting and musttail calls
I think you realized this now, but to be clear: More likely, you've found some bugs. Unfortunately, not all of these utilities have good unit tests (though they should!). This would not be the first set of bugs people have found wrt to very start/end of blocks, or bb == predbb issues. On Sat, Feb 24, 2018 at 12:58 PM, Fedor Indutny via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Update: > > I was able to make progress on it today ( See https://reviews.llvm.org/ > D43729 ). Apparently my problems were: > > * Iterating through the instruction/block list after erasing > block/instruction > * Trying to split block after removing one predecessor > > Regarding the latter, it appears that semantics of ` > DuplicateInstructionsInSplitBetween` change significantly in such case, > and it starts to loop indefinitely. The `SplitEdge` function that it calls > places all of the instructions into the split block, so that the original > block becomes empty. > > Is it expected behavior, or am I doing something wrong? > > Thanks, > Fedor. > > On Sat, Feb 24, 2018 at 2:16 AM, Fedor Indutny <fedor at indutny.com> wrote: > >> 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. >> > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180227/73ccef1b/attachment-0001.html>
Florian Hahn via llvm-dev
2018-Feb-28 10:06 UTC
[llvm-dev] CallSiteSplitting and musttail calls
Hi, On 27/02/2018 16:32, Daniel Berlin via llvm-dev wrote:> I think you realized this now, but to be clear: > More likely, you've found some bugs. > Unfortunately, not all of these utilities have good unit tests (though > they should!). > > This would not be the first set of bugs people have found wrt to very > start/end of blocks, or bb == predbb issues. >Coincidentally I stumbled over a similar issue with bb == predbb in DuplicateInstructionsInSplitBetween too and put up a patch trying to fix it https://reviews.llvm.org/D43822> > On Sat, Feb 24, 2018 at 12:58 PM, Fedor Indutny via llvm-dev > <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: > > Update: > > I was able to make progress on it today ( See > https://reviews.llvm.org/D43729 <https://reviews.llvm.org/D43729> ). > Apparently my problems were: >Great, thanks for putting up a patch for that. It made good progress already and I left a few more comments directly over there. Cheers, Florian
Fedor Indutny via llvm-dev
2018-Feb-28 20:24 UTC
[llvm-dev] CallSiteSplitting and musttail calls
Ha, that's a good timing! Thank you for comments, I'll address them on phabricator. On Wed, Feb 28, 2018 at 5:06 AM, Florian Hahn <florian.hahn at arm.com> wrote:> Hi, > > On 27/02/2018 16:32, Daniel Berlin via llvm-dev wrote: > >> I think you realized this now, but to be clear: >> More likely, you've found some bugs. >> Unfortunately, not all of these utilities have good unit tests (though >> they should!). >> >> This would not be the first set of bugs people have found wrt to very >> start/end of blocks, or bb == predbb issues. >> >> > Coincidentally I stumbled over a similar issue with bb == predbb in > DuplicateInstructionsInSplitBetween too and put up a patch trying to fix > it https://reviews.llvm.org/D43822 > > >> On Sat, Feb 24, 2018 at 12:58 PM, Fedor Indutny via llvm-dev < >> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: >> >> Update: >> >> I was able to make progress on it today ( See >> https://reviews.llvm.org/D43729 <https://reviews.llvm.org/D43729> ). >> Apparently my problems were: >> >> > Great, thanks for putting up a patch for that. It made good progress > already and I left a few more comments directly over there. > > > > Cheers, > Florian >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180228/de266be2/attachment.html>