[PATCH] D155940: [SimplifyCFG] Transform for merging the combination of phis in switch
Hongyu Chen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 27 08:00:05 PDT 2023
XChy added a comment.
In D155940#4538561 <https://reviews.llvm.org/D155940#4538561>, @nikic wrote:
> Do you have any particular issues this could cause in mind?
Sure, something like FoldTwoEntryPHINode/HoistThenElseToIf may miss/delay. Or some Phi to Select may be delayed/sunk. I haven't constructed counter-examples here. (Maybe it's my intuitive fault, I actually constructed some examples optimized well).
I think the probitability can be tested by the existing testcases here. I'll try to generalize TryToSimplifyUncondBranchFromEmptyBlock to perform the tests.
> I think even if we don't always perform the transform, we should still express it generically, and then have a profitability heuristic on top: E.g. say that the one common predecessor must have a switch terminator. That way we can clearly separate correctness from profitability requirements.
I agree with you. The generalization is indeed necessary. It may take some time to complete it. At that time can we determine what profitability heuristic shoud be.
> Edit: Just for reference, this is an example of the non-switch CFG I have in mind where such a transform should be possible: https://gist.github.com/nikic/8f22ef4e366fd3041c7e150c228f9673
Thanks! That could serve as a testcase to be expanded/reduced.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D155940/new/
https://reviews.llvm.org/D155940
More information about the llvm-commits
mailing list