[PATCH] D125485: [ArgPromotion] Unify byval promotion with non-byval
Pavel Samolysov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri May 13 02:04:54 PDT 2022
psamolysov added a comment.
@nikic Thank you for detailed description of the idea. I'm not sure that I get the idea correctly, if to analyse your comment by points:
1. I believe this is implemented in the patch.
2. If stores are allowed (IsStoresAllowed in the code), the findArgParts function should disable the AAR.canInstructionRangeModRef and AAR.canBasicBlockModify(*TranspBB, Loc) checks because the pointers may be invalidated.
3. This makes the most difficult thing for me. As I get your point, all accesses (load/stores) to the arguments must be replaced with accesses to new allocas with the corresponding types, so instead of just eliminate loads we should for every promotable pointer argument (regardless whether it is byval or not) create an alloca, add a store of the new value argument into this alloca, keep all the allowed stores and loads (they will work with this alloca) and then call the 'promoteMemoryToRegister' function to do a part of mem2reg's work.
Is my understanding correct?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D125485/new/
https://reviews.llvm.org/D125485
More information about the llvm-commits
mailing list