TIFitis added inline comments.
================
Comment at: llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp:4181-4191
+    for (auto &UseDeviceOp : UseDeviceInfos) {
+      auto *UseDeviceVal = UseDeviceOp.first;
+      auto &UseDeviceInfo = UseDeviceOp.second;
+      SmallDenseSet<Use *> ReplaceUses;
+      for (auto &Use : UseDeviceVal->uses()) {
+        if (UseDeviceInfo.Uses.find(&Use) == UseDeviceInfo.Uses.end())
+          ReplaceUses.insert(&Use);
----------------
I couldn't come up with a better way for the code generated inside the `target 
data region` to use the new `AllocaPtrs` when accessing `map operands` marked 
with the `use_device_ptr` clause.

Currently I am just comparing the `Users` list before and after generating the 
`data region` and replacing the new `uses`.

Alternative method would be to use `mlir::LLVM::moduleTranslation.mapValue` 
method to temporarily remap the `mlir::Value` for the `use_device_ptr` operands 
to the `AllocaPtrs` `llvm::Value`. But `mapValue` doesn't allow remapping of 
values. @kiranchandramohan Is there a good reason to prevent remapping of 
values?

Let me know if anyone has a better way of doing this :)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146557/new/

https://reviews.llvm.org/D146557

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to