<div dir="ltr">(but otherwise, assuming you are adding const, LGTM)</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 28, 2016 at 10:30 AM, Daniel Berlin <span dir="ltr"><<a href="mailto:dberlin@dberlin.org" target="_blank">dberlin@dberlin.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This patch looks reversed<div class="HOEnZb"><div class="h5"><br><br><div class="gmail_quote"><div dir="ltr">On Fri, Oct 28, 2016, 10:20 AM bryant <<a href="mailto:3.14472%2Breviews.llvm.org@gmail.com" target="_blank">3.14472+reviews.llvm.org@<wbr>gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">bryant created this revision.<br class="m_5621811052311682073gmail_msg">
bryant added reviewers: george.burgess.iv, dberlin.<br class="m_5621811052311682073gmail_msg">
bryant added a subscriber: llvm-commits.<br class="m_5621811052311682073gmail_msg">
bryant set the repository for this revision to rL LLVM.<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
>From what I understand so far, `getClobberingMemoryAccess` isn't supposed to modify its `MemoryLocation` argument. Making this argument const permits callers to pass xvalues, such as:<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
  MemoryAccess *Start;<br class="m_5621811052311682073gmail_msg">
  MemCpyInst *M;<br class="m_5621811052311682073gmail_msg">
  ...<br class="m_5621811052311682073gmail_msg">
  MSSA->getWalker()-><wbr>getClobberingMemoryAccess(<wbr>Start, MemoryLocation::getForSource(<wbr>M));<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
Repository:<br class="m_5621811052311682073gmail_msg">
  rL LLVM<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
<a href="https://reviews.llvm.org/D26086" rel="noreferrer" class="m_5621811052311682073gmail_msg" target="_blank">https://reviews.llvm.org/<wbr>D26086</a><br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
Files:<br class="m_5621811052311682073gmail_msg">
  include/llvm/Transforms/Utils/<wbr>MemorySSA.h<br class="m_5621811052311682073gmail_msg">
  lib/Transforms/Utils/<wbr>MemorySSA.cpp<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
Index: lib/Transforms/Utils/<wbr>MemorySSA.cpp<br class="m_5621811052311682073gmail_msg">
==============================<wbr>==============================<wbr>=======<br class="m_5621811052311682073gmail_msg">
--- lib/Transforms/Utils/<wbr>MemorySSA.cpp<br class="m_5621811052311682073gmail_msg">
+++ lib/Transforms/Utils/<wbr>MemorySSA.cpp<br class="m_5621811052311682073gmail_msg">
@@ -1097,7 +1097,7 @@<br class="m_5621811052311682073gmail_msg">
   using MemorySSAWalker::<wbr>getClobberingMemoryAccess;<br class="m_5621811052311682073gmail_msg">
   MemoryAccess *getClobberingMemoryAccess(<wbr>MemoryAccess *) override;<br class="m_5621811052311682073gmail_msg">
   MemoryAccess *getClobberingMemoryAccess(<wbr>MemoryAccess *,<br class="m_5621811052311682073gmail_msg">
-                                          const MemoryLocation &) override;<br class="m_5621811052311682073gmail_msg">
+                                          MemoryLocation &) override;<br class="m_5621811052311682073gmail_msg">
   void invalidateInfo(MemoryAccess *) override;<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
   /// Whether we call resetClobberWalker() after each time we *actually* walk to<br class="m_5621811052311682073gmail_msg">
@@ -2163,7 +2163,7 @@<br class="m_5621811052311682073gmail_msg">
 }<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
 MemoryAccess *MemorySSA::CachingWalker::<wbr>getClobberingMemoryAccess(<br class="m_5621811052311682073gmail_msg">
-    MemoryAccess *StartingAccess, const MemoryLocation &Loc) {<br class="m_5621811052311682073gmail_msg">
+    MemoryAccess *StartingAccess, MemoryLocation &Loc) {<br class="m_5621811052311682073gmail_msg">
   if (isa<MemoryPhi>(<wbr>StartingAccess))<br class="m_5621811052311682073gmail_msg">
     return StartingAccess;<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
@@ -2266,7 +2266,7 @@<br class="m_5621811052311682073gmail_msg">
 }<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
 MemoryAccess *DoNothingMemorySSAWalker::<wbr>getClobberingMemoryAccess(<br class="m_5621811052311682073gmail_msg">
-    MemoryAccess *StartingAccess, const MemoryLocation &) {<br class="m_5621811052311682073gmail_msg">
+    MemoryAccess *StartingAccess, MemoryLocation &) {<br class="m_5621811052311682073gmail_msg">
   if (auto *Use = dyn_cast<MemoryUseOrDef>(<wbr>StartingAccess))<br class="m_5621811052311682073gmail_msg">
     return Use->getDefiningAccess();<br class="m_5621811052311682073gmail_msg">
   return StartingAccess;<br class="m_5621811052311682073gmail_msg">
Index: include/llvm/Transforms/Utils/<wbr>MemorySSA.h<br class="m_5621811052311682073gmail_msg">
==============================<wbr>==============================<wbr>=======<br class="m_5621811052311682073gmail_msg">
--- include/llvm/Transforms/Utils/<wbr>MemorySSA.h<br class="m_5621811052311682073gmail_msg">
+++ include/llvm/Transforms/Utils/<wbr>MemorySSA.h<br class="m_5621811052311682073gmail_msg">
@@ -783,7 +783,7 @@<br class="m_5621811052311682073gmail_msg">
   /// will return that MemoryDef, whereas the above would return the clobber<br class="m_5621811052311682073gmail_msg">
   /// starting from the use side of  the memory def.<br class="m_5621811052311682073gmail_msg">
   virtual MemoryAccess *getClobberingMemoryAccess(<wbr>MemoryAccess *,<br class="m_5621811052311682073gmail_msg">
-                                                  const MemoryLocation &) = 0;<br class="m_5621811052311682073gmail_msg">
+                                                  MemoryLocation &) = 0;<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
   /// \brief Given a memory access, invalidate anything this walker knows about<br class="m_5621811052311682073gmail_msg">
   /// that access.<br class="m_5621811052311682073gmail_msg">
@@ -809,7 +809,7 @@<br class="m_5621811052311682073gmail_msg">
   using MemorySSAWalker::<wbr>getClobberingMemoryAccess;<br class="m_5621811052311682073gmail_msg">
   MemoryAccess *getClobberingMemoryAccess(<wbr>MemoryAccess *) override;<br class="m_5621811052311682073gmail_msg">
   MemoryAccess *getClobberingMemoryAccess(<wbr>MemoryAccess *,<br class="m_5621811052311682073gmail_msg">
-                                          const MemoryLocation &) override;<br class="m_5621811052311682073gmail_msg">
+                                          MemoryLocation &) override;<br class="m_5621811052311682073gmail_msg">
 };<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
 using MemoryAccessPair = std::pair<MemoryAccess *, MemoryLocation>;<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
<br class="m_5621811052311682073gmail_msg">
</blockquote></div></div></div></blockquote></div><br></div>