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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits