<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 26, 2014 at 11:50 AM, Lang Hames <span dir="ltr"><<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: lhames<br>
Date: Sun Oct 26 13:50:52 2014<br>
New Revision: 220642<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=220642&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=220642&view=rev</a><br>
Log:<br>
[PBQP] Unique-ptrify some PBQP Metadata structures. No functional change.<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h<br>
<br>
Modified: llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h?rev=220642&r1=220641&r2=220642&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h?rev=220642&r1=220641&r2=220642&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h (original)<br>
+++ llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h Sun Oct 26 13:50:52 2014<br>
@@ -62,20 +62,15 @@ public:<br>
     delete[] ColCounts;<br>
   }<br>
<br>
-  ~MatrixMetadata() {<br>
-    delete[] UnsafeRows;<br>
-    delete[] UnsafeCols;<br>
-  }<br>
-<br>
   unsigned getWorstRow() const { return WorstRow; }<br>
   unsigned getWorstCol() const { return WorstCol; }<br>
-  const bool* getUnsafeRows() const { return UnsafeRows; }<br>
-  const bool* getUnsafeCols() const { return UnsafeCols; }<br>
+  const bool* getUnsafeRows() const { return UnsafeRows.get(); }<br>
+  const bool* getUnsafeCols() const { return UnsafeCols.get(); }<br>
<br>
 private:<br>
   unsigned WorstRow, WorstCol;<br>
-  bool* UnsafeRows;<br>
-  bool* UnsafeCols;<br>
+  std::unique_ptr<bool[]> UnsafeRows;<br>
+  std::unique_ptr<bool[]> UnsafeCols;<br></blockquote><div><br></div><div>arrays of bool are a bit sparse (8 bits per bool) - you might find a BitVector more suitable.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 };<br>
<br>
 class NodeMetadata {<br>
@@ -88,7 +83,6 @@ public:<br>
                  NotProvablyAllocatable } ReductionState;<br>
<br>
   NodeMetadata() : RS(Unprocessed), DeniedOpts(0), OptUnsafeEdges(nullptr){}<br>
-  ~NodeMetadata() { delete[] OptUnsafeEdges; }<br>
<br>
   void setVReg(unsigned VReg) { this->VReg = VReg; }<br>
   unsigned getVReg() const { return VReg; }<br>
@@ -100,7 +94,7 @@ public:<br>
<br>
   void setup(const Vector& Costs) {<br>
     NumOpts = Costs.getLength() - 1;<br>
-    OptUnsafeEdges = new unsigned[NumOpts]();<br>
+    OptUnsafeEdges = std::unique_ptr<unsigned[]>(new unsigned[NumOpts]());<br></blockquote><div><br></div><div>(I'd just use reset here, since there's no make_unique for arrays)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
   }<br>
<br>
   ReductionState getReductionState() const { return RS; }<br>
@@ -124,15 +118,15 @@ public:<br>
<br>
   bool isConservativelyAllocatable() const {<br>
     return (DeniedOpts < NumOpts) ||<br>
-      (std::find(OptUnsafeEdges, OptUnsafeEdges + NumOpts, 0) !=<br>
-       OptUnsafeEdges + NumOpts);<br>
+      (std::find(&OptUnsafeEdges[0], &OptUnsafeEdges[NumOpts], 0) !=<br></blockquote><div><br>I don't /think/ you can index past the end of an array, so you'll have to do it as OptUnsafeEdges.get() + NumOpts (& similarly for the beginning, if the sequence can be zero-length).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+       &OptUnsafeEdges[NumOpts]);<br>
   }<br>
<br>
 private:<br>
   ReductionState RS;<br>
   unsigned NumOpts;<br>
   unsigned DeniedOpts;<br>
-  unsigned* OptUnsafeEdges;<br>
+  std::unique_ptr<unsigned[]> OptUnsafeEdges;<br>
   unsigned VReg;<br>
   OptionToRegMap OptionRegs;<br>
 };<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>