jdoerfert added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp:566
+ return false;
+ };
+
----------------
jdoerfert wrote:
> sameerds wrote:
> > jdoerfert wrote:
> > > You can use AAPointerInfo for the call site return IRPosition. It will
> > > (through the iterations) gather all accesses and put them into "bins"
> > > based on offset and size. It deals with uses in calls, etc. and if there
> > > is stuff missing it is better to add it in one place so we benefit
> > > throughout.
> > I am not following what you have in mind. "implicitarg_ptr" is a pointer
> > returned by an intrinsic that reads an ABI-defined register. I need to
> > check that for a given call-graph, a particular range of bytes relative to
> > that base pointer are never accessed. The above DFS on the uses
> > conservatively assumes that such a load exists unless it can conclusively
> > trace every use of the base pointer. This may include the pointer being
> > passed to an extern function or being stored into a different memory
> > location (although we don't expect ABI registers being capture this way). I
> > am not seeing how to construct this around AAPointerInfo. As far as I can
> > see, the public interface only talks about uses that are recognized as
> > loads and stores.
> Not actually tested, replaces the function body. Depends on D119249.
> ```
> const auto PointerInfoAA = A.getAAFor<AAPointerInfo>(*this,
> IRPosition::callback_returned(cast<CallBase>(Ptr)), DepClassTy::Required);
> if (!PointerInfoAA.getState().isValidState())
> return true; // Abort (which is weird as false is abort in the other CB).
> AAPointerInfo::OffsetAndSize OAS(*Position, /* probably look pointer width up
> in DL */ 8);
> return !forallInterferingAccesses(OAS, [](const AAPointerInfo::Access &Acc,
> bool IsExact) {
> return Acc.getRemoteInst()->isDroppable(); });
> ```
You don't actually need the state check.
And as I said, this will take care of following pointers passed into callees or
through memory to other places, all while ignoring dead code, etc.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D119216/new/
https://reviews.llvm.org/D119216
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits