<div dir="ltr">I'm kinda surprised nothing asserts here, even in debug mode.<div>But I'll fix if George's fixes didn't do it already.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 2, 2016 at 2:44 AM, Mikael Holmén <span dir="ltr"><<a href="mailto:mikael.holmen@ericsson.com" target="_blank">mikael.holmen@ericsson.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
There seems to be a problem in the MemorySSA.cpp test case:<br>
<br>
First a Function is built<br>
<br>
  std::unique_ptr<Function> F(Function::Create(<br>
      FunctionType::get(B.getVoidTy(), {B.getInt8PtrTy()}, false),<br>
      GlobalValue::ExternalLinkage, "F"));<br>
<br>
Note that we don't pass any Module to the Function:<br>
<br>
  static Function *Create(FunctionType *Ty, LinkageTypes Linkage,<br>
                          const Twine &N = "", Module *M = nullptr)<br>
<br>
o the Function's Module will be nullptr.<br>
<br>
However, throughout the code there are places where it is assumed that the Module can be fetched, e.g. in<br>
<br>
MemoryLocation MemoryLocation::get(const LoadInst *LI) {<br>
  AAMDNodes AATags;<br>
  LI->getAAMetadata(AATags);<br>
  const auto &DL = LI->getModule()->getDataLayout();<br>
<br>
  return MemoryLocation(LI->getPointerOperand(),<br>
                        DL.getTypeStoreSize(LI->getType()), AATags);<br>
}<br>
<br>
which in the MemorySSA test indeed gets called:<br>
<br>
#3  0x00000000006b3886 in llvm::MemoryLocation::get (Inst=0xda03f8) at include/llvm/Analysis/MemoryLocation.h:72<br>
#4  0x00000000006b2c84 in llvm::CachingMemorySSAWalker::getClobberingMemoryAccess (this=0xda1bf0, I=0xda03f8)<br>
    at lib/Transforms/Utils/MemorySSA.cpp:1047<br>
#5  0x00000000006aff7a in llvm::MemorySSA::buildMemorySSA (this=0xda0440, AA=0xda16c0, DT=0xda04c0)<br>
    at lib/Transforms/Utils/MemorySSA.cpp:346<br>
#6  0x000000000042786f in MemorySSA_RemoveMemoryAccess_Test::TestBody (this=0xd9a920) at unittests/Transforms/Utils/MemorySSA.cpp:55<br>
<br>
So I suppose a Module should be created as well to setup the test properly.<br>
<br>
Regards,<br>
Mikael<div><div class="h5"><br>
<br>
<br>
On 03/01/2016 07:51 PM, Phabricator via llvm-commits wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
This revision was automatically updated to reflect the committed changes.<br>
Closed by commit rL262362: Add the beginnings of an update API for preserving MemorySSA (authored by dannyb).<br>
<br>
Changed prior to commit:<br>
   <a href="http://reviews.llvm.org/D17157?vs=47855&id=49511#toc" rel="noreferrer" target="_blank">http://reviews.llvm.org/D17157?vs=47855&id=49511#toc</a><br>
<br>
Repository:<br>
   rL LLVM<br>
<br>
<a href="http://reviews.llvm.org/D17157" rel="noreferrer" target="_blank">http://reviews.llvm.org/D17157</a><br>
<br>
Files:<br>
   llvm/trunk/include/llvm/Transforms/Utils/MemorySSA.h<br>
   llvm/trunk/lib/Transforms/Utils/MemorySSA.cpp<br>
   llvm/trunk/unittests/Transforms/Utils/CMakeLists.txt<br>
   llvm/trunk/unittests/Transforms/Utils/MemorySSA.cpp<br>
<br>
<br>
<br></div></div>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
<br>
</blockquote>
</blockquote></div><br></div>