jdoerfert added inline comments.

================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp:581-584
+      if (ArgUsedToRetrieveHostcallPtr(I)) {
+        return false;
+      }
+      return true;
----------------
I'd suggest to switch the return value of ArgUsed... so it matches this 
functions (and other callbacks).


================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp:566
+      return false;
+    };
+
----------------
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(); });
```


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

Reply via email to