<div dir="ltr">Ooh, good call. Fixed in r328755. Thanks!</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 28, 2018 at 7:01 PM, Friedman, Eli <span dir="ltr"><<a href="mailto:efriedma@codeaurora.org" target="_blank">efriedma@codeaurora.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 3/28/2018 5:54 PM, George Burgess IV via llvm-commits wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: gbiv<br>
Date: Wed Mar 28 17:54:39 2018<br>
New Revision: 328748<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=328748&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=328748&view=rev</a><br>
Log:<br>
[MemorySSA] Consider callsite args for hashing and equality.<br>
<br>
We use a `DenseMap<MemoryLocOrCall, MemlocStackInfo>` to keep track of<br>
prior work when optimizing uses in MemorySSA. Because we weren't<br>
accounting for callsite arguments in either the hash code or equality<br>
tests for `MemoryLocOrCall`s, we optimized uses too aggressively in<br>
some rare cases.<br>
<br>
Fix by Daniel Berlin.<br>
<br>
Should fix PR36883.<br>
<br>
Added:<br>
     llvm/trunk/test/Analysis/Memo<wbr>rySSA/pr36883.ll<br>
Modified:<br>
     llvm/trunk/lib/Analysis/Memor<wbr>ySSA.cpp<br>
<br>
Modified: llvm/trunk/lib/Analysis/Memory<wbr>SSA.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemorySSA.cpp?rev=328748&r1=328747&r2=328748&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/lib/Analysis/<wbr>MemorySSA.cpp?rev=328748&r1=<wbr>328747&r2=328748&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Analysis/Memory<wbr>SSA.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/Memory<wbr>SSA.cpp Wed Mar 28 17:54:39 2018<br>
@@ -153,9 +153,14 @@ public:<br>
      if (IsCall != Other.IsCall)<br>
        return false;<br>
  -    if (IsCall)<br>
-      return CS.getCalledValue() == Other.CS.getCalledValue();<br>
-    return Loc == Other.Loc;<br>
+    if (!IsCall)<br>
+      return Loc == Other.Loc;<br>
+<br>
+    if (CS.getCalledValue() != Other.CS.getCalledValue())<br>
+      return false;<br>
+<br>
+    assert(CS.arg_size() == Other.CS.arg_size());<br>
</blockquote>
<br></div></div>
LLVM supports varargs functions... not sure you can assert this.<span class="HOEnZb"><font color="#888888"><br>
<br>
-Eli<br>
<br>
-- <br>
Employee of Qualcomm Innovation Center, Inc.<br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project<br>
<br>
</font></span></blockquote></div><br></div>