<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Wed, Jul 12, 2017 at 1:04 AM Serge Guelton via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: serge_sans_paille<br>
Date: Wed Jul 12 01:03:44 2017<br>
New Revision: 307762<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=307762&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=307762&view=rev</a><br>
Log:<br>
Have Module::createRNG return a unique_ptr<br>
<br>
Instead of a raw pointer, this makes memory management safer.<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/IR/Module.h<br>
    llvm/trunk/lib/IR/Module.cpp<br>
    llvm/trunk/unittests/IR/ModuleTest.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/IR/Module.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Module.h?rev=307762&r1=307761&r2=307762&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Module.h?rev=307762&r1=307761&r2=307762&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/IR/Module.h (original)<br>
+++ llvm/trunk/include/llvm/IR/Module.h Wed Jul 12 01:03:44 2017<br>
@@ -249,7 +249,7 @@ public:<br>
   /// when other randomness consuming passes are added or removed. In<br>
   /// addition, the random stream will be reproducible across LLVM<br>
   /// versions when the pass does not change.<br>
-  RandomNumberGenerator *createRNG(const Pass* P) const;<br>
+  std::unique_ptr<RandomNumberGenerator> createRNG(const Pass* P) const;<br>
<br>
 /// @}<br>
 /// @name Module Level Mutators<br>
<br>
Modified: llvm/trunk/lib/IR/Module.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Module.cpp?rev=307762&r1=307761&r2=307762&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Module.cpp?rev=307762&r1=307761&r2=307762&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/IR/Module.cpp (original)<br>
+++ llvm/trunk/lib/IR/Module.cpp Wed Jul 12 01:03:44 2017<br>
@@ -88,7 +88,7 @@ Module::~Module() {<br>
   delete static_cast<StringMap<NamedMDNode *> *>(NamedMDSymTab);<br>
 }<br>
<br>
-RandomNumberGenerator *Module::createRNG(const Pass* P) const {<br>
+std::unique_ptr<RandomNumberGenerator> Module::createRNG(const Pass* P) const {<br>
   SmallString<32> Salt(P->getPassName());<br>
<br>
   // This RNG is guaranteed to produce the same random stream only<br>
@@ -103,7 +103,7 @@ RandomNumberGenerator *Module::createRNG<br>
   // store salt metadata from the Module constructor.<br>
   Salt += sys::path::filename(getModuleIdentifier());<br>
<br>
-  return new RandomNumberGenerator(Salt);<br>
+  return std::unique_ptr<RandomNumberGenerator>{new RandomNumberGenerator(Salt)};<br></blockquote><div><br>Use () here when calling a ctor? (seems especially weird to use () for one ctor call but {} for the other)<br><br>& I guess you can't use llvm::make_unique here because the RandomNumberGenerator ctor is private?<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 }<br>
<br>
 /// getNamedValue - Return the first global value in the module with<br>
<br>
Modified: llvm/trunk/unittests/IR/ModuleTest.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/ModuleTest.cpp?rev=307762&r1=307761&r2=307762&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/ModuleTest.cpp?rev=307762&r1=307761&r2=307762&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/unittests/IR/ModuleTest.cpp (original)<br>
+++ llvm/trunk/unittests/IR/ModuleTest.cpp Wed Jul 12 01:03:44 2017<br>
@@ -63,7 +63,7 @@ TEST(ModuleTest, randomNumberGenerator)<br>
<br>
   std::array<int, NBCheck> RandomStreams[2];<br>
   for (auto &RandomStream : RandomStreams) {<br>
-    std::unique_ptr<RandomNumberGenerator> RNG{M.createRNG(&DP)};<br>
+    std::unique_ptr<RandomNumberGenerator> RNG = M.createRNG(&DP);<br>
     std::generate(RandomStream.begin(), RandomStream.end(),<br>
                   [&]() { return dist(*RNG); });<br>
   }<br>
<br>
<br>
_______________________________________________<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>
</blockquote></div></div>