================
@@ -240,6 +240,28 @@ template <typename LocationEnum> class MemoryEffectsBase {
     return getWithoutLoc(Location::InaccessibleMem).doesNotAccessMemory();
   }
 
+  bool isTargetMemLoc(IRMemLocation Loc) {
+    return static_cast<unsigned>(Loc) >=
+           static_cast<unsigned>(Location::FirstTarget);
+  }
+
+  // We need to check if target memory is the same for all locations.
+  // So it behaves the same as default read/write, but for Target
+  // locations only
+  bool targetMemSameForAll() {
+    std::optional<ModRefInfo> First;
+    for (unsigned ILoc = static_cast<unsigned>(IRMemLocation::FirstTarget);
+         ILoc <= static_cast<unsigned>(IRMemLocation::Last); ++ILoc) {
+      const auto Loc = static_cast<IRMemLocation>(ILoc);
+      ModRefInfo MR = getModRef(Loc);
----------------
antoniofrighetto wrote:

I think we don't need a std::optional here either, we could store First out of 
the loop, and start looping from IRMemLocation::FirstTarget + 1? 

https://github.com/llvm/llvm-project/pull/176968
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to