[PATCH] D109749: Experimental Partial Mem2Reg
Graham Hunter via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 2 03:28:05 PDT 2021
huntergr added a comment.
In D109749#3085994 <https://reviews.llvm.org/D109749#3085994>, @jdoerfert wrote:
> In D109749#3078247 <https://reviews.llvm.org/D109749#3078247>, @huntergr wrote:
>
>> In D109749#3078176 <https://reviews.llvm.org/D109749#3078176>, @jdoerfert wrote:
>>
>>> Does this work for you:
>>>
>>> diff --git a/llvm/lib/Analysis/CaptureTracking.cpp b/llvm/lib/Analysis/CaptureTracking.cpp
>>> index 8955658cb9e7..41251d2676e6 100644
>>> --- a/llvm/lib/Analysis/CaptureTracking.cpp
>>> +++ b/llvm/lib/Analysis/CaptureTracking.cpp
>>> @@ -373,9 +373,13 @@ void llvm::PointerMayBeCaptured(const Value *V, CaptureTracker *Tracker,
>>> case Instruction::Store:
>>> // Stored the pointer - conservatively assume it may be captured.
>>> // Volatile stores make the address observable.
>>> - if (U->getOperandNo() == 0 || cast<StoreInst>(I)->isVolatile())
>>> + if (U->getOperandNo() == 0 || cast<StoreInst>(I)->isVolatile()) {
>>> + if (auto *AI = dyn_cast<AllocaInst>(I->getOperand(1)->stripInBoundsOffsets()))
>>> + if (AI->hasMetadata("nocapture_storage"))
>>> + break;
>>> if (Tracker->captured(U))
>>> return;
>>> + }
>>> break;
>>> case Instruction::AtomicRMW: {
>>> // atomicrmw conceptually includes both a load and store from
>>>
>>> And then add `!nocapture_storage !0` after the alloca in your example as well as `!0 = !{!0}` in the end of that file
>>
>> Ah, the 'nocapture_storage' metadata is what I've been missing, thanks. I'll update the diff once I've added that and adjusted the tests.
>
> Technically, this is not yet something we have in the IR. We can reply to the old thread in which different solutions were discussed and
> propose this one again. Then modify Clang to emit the metadata for the reduction case and land the diff I posted. All that said, it works
> for your case, right?
It does, yes. I'll have a look for the mailing list thread.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D109749/new/
https://reviews.llvm.org/D109749
More information about the llvm-commits
mailing list