[PATCH] D100717: [InstCombine] Transform memcpy to ptr load/stores if TBAA says so
Roman Lebedev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 26 08:17:02 PDT 2021
lebedev.ri added a comment.
In D100717#2716833 <https://reviews.llvm.org/D100717#2716833>, @fhahn wrote:
> In D100717#2713553 <https://reviews.llvm.org/D100717#2713553>, @penzn wrote:
>
>> In D100717#2698680 <https://reviews.llvm.org/D100717#2698680>, @jdoerfert wrote:
>>
>>> I read through the code and I'm not sure if this is even a semantic change. I mean, can't we pick any
>>> type to do the memory transfer expansion? If so, TBAA metadata as a heuristic should be totally fine.
>>> We could also look at uses of the source and target pointers, for example. That said, we should write
>>> in the lang ref that we do use the TBAA names for heuristics and they should be chosen to match the code/intent.
>>
>> I agree with @nikic and @fhahn that we are trying to encode new information beyond what TBAA supposed to describe according to LangRef. I think vtable pointer handling is particularly telling - it benefits from special treatment, since it is not a "regular" pointer. Conceptually this change (along with vtable support) belong to the same problem space as encoding non-aliasing pointers (cough, Fortran). In all this cases we need to know when something //is// a pointer, while //simulateneously// looking at the rules of source language to short-circuit optimization heuristics.
>>
>> Aside from may be generic pointer handling, I am not super comfortable in baking this kind of logic into the backend and would be interested in finding a better solution in the long run. Though the challenge is that different source languages have completely unrelated pointer rules, which would require different heuristics.
>
> Instead of using `!tbaa` as proxy for intent, couldn't we get the actual intent by looking at the users of the pointer?
No. <https://reviews.llvm.org/D88789>
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D100717/new/
https://reviews.llvm.org/D100717
More information about the llvm-commits
mailing list