Lgtm<div><br><br><div class="gmail_quote"><div dir="ltr">On Fri, Aug 26, 2016, 9:07 AM Sebastian Pop <<a href="mailto:sebpop@gmail.com">sebpop@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">sebpop created this revision.<br>
sebpop added a reviewer: dberlin.<br>
sebpop added a subscriber: llvm-commits.<br>
<br>
Without invalidating the entries in the MD cache we would try to access instructions<br>
that were removed in previous iterations of hoisting.<br>
<br>
<a href="https://reviews.llvm.org/D23927" rel="noreferrer" target="_blank">https://reviews.llvm.org/D23927</a><br>
<br>
Files:<br>
  llvm/lib/Transforms/Scalar/GVNHoist.cpp<br>
<br>
Index: llvm/lib/Transforms/Scalar/GVNHoist.cpp<br>
===================================================================<br>
--- llvm/lib/Transforms/Scalar/GVNHoist.cpp<br>
+++ llvm/lib/Transforms/Scalar/GVNHoist.cpp<br>
@@ -847,6 +847,8 @@<br>
           Repl->intersectOptionalDataWith(I);<br>
           combineKnownMetadata(Repl, I);<br>
           I->replaceAllUsesWith(Repl);<br>
+          // Also invalidate the Alias Analysis cache.<br>
+          MD->removeInstruction(I);<br>
           I->eraseFromParent();<br>
         }<br>
<br>
<br>
<br>
</blockquote></div></div>