[llvm] r220645 - Revert "[PBQP] Unique-ptrify some PBQP Metadata structures. No functional change." (r220642)

Hans Wennborg hans at hanshq.net
Sun Oct 26 12:50:13 PDT 2014


Author: hans
Date: Sun Oct 26 14:50:13 2014
New Revision: 220645

URL: http://llvm.org/viewvc/llvm-project?rev=220645&view=rev
Log:
Revert "[PBQP] Unique-ptrify some PBQP Metadata structures. No functional change." (r220642)

It broke the Windows build:

  [1/19] Building CXX object lib\CodeGen\CMakeFiles\LLVMCodeGen.dir\RegAllocPBQP.cpp.obj
  C:\bb-win7\ninja-clang-i686-msc17-R\llvm-project\llvm\include\llvm/CodeGen/RegAllocPBQP.h(132) : error C2248: 'std::unique_ptr<_Ty>::unique_ptr' : cannot access private member declared in class 'std::unique_ptr<_Ty>'

     with
     [
         _Ty=unsigned int []
     ]
     D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\memory(1600) : see declaration of 'std::unique_ptr<_Ty>::unique_ptr'
     with
     [
         _Ty=unsigned int []
     ]
     This diagnostic occurred in the compiler generated function 'llvm::PBQP::RegAlloc::NodeMetadata::NodeMetadata(const llvm::PBQP::RegAlloc::NodeMetadata &)'

Modified:
    llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h

Modified: llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h?rev=220645&r1=220644&r2=220645&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h (original)
+++ llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h Sun Oct 26 14:50:13 2014
@@ -62,15 +62,20 @@ public:
     delete[] ColCounts;
   }
 
+  ~MatrixMetadata() {
+    delete[] UnsafeRows;
+    delete[] UnsafeCols;
+  }
+
   unsigned getWorstRow() const { return WorstRow; }
   unsigned getWorstCol() const { return WorstCol; }
-  const bool* getUnsafeRows() const { return UnsafeRows.get(); }
-  const bool* getUnsafeCols() const { return UnsafeCols.get(); }
+  const bool* getUnsafeRows() const { return UnsafeRows; }
+  const bool* getUnsafeCols() const { return UnsafeCols; }
 
 private:
   unsigned WorstRow, WorstCol;
-  std::unique_ptr<bool[]> UnsafeRows;
-  std::unique_ptr<bool[]> UnsafeCols;
+  bool* UnsafeRows;
+  bool* UnsafeCols;
 };
 
 class NodeMetadata {
@@ -83,6 +88,7 @@ public:
                  NotProvablyAllocatable } ReductionState;
 
   NodeMetadata() : RS(Unprocessed), DeniedOpts(0), OptUnsafeEdges(nullptr){}
+  ~NodeMetadata() { delete[] OptUnsafeEdges; }
 
   void setVReg(unsigned VReg) { this->VReg = VReg; }
   unsigned getVReg() const { return VReg; }
@@ -94,7 +100,7 @@ public:
 
   void setup(const Vector& Costs) {
     NumOpts = Costs.getLength() - 1;
-    OptUnsafeEdges = std::unique_ptr<unsigned[]>(new unsigned[NumOpts]());
+    OptUnsafeEdges = new unsigned[NumOpts]();
   }
 
   ReductionState getReductionState() const { return RS; }
@@ -118,15 +124,15 @@ public:
 
   bool isConservativelyAllocatable() const {
     return (DeniedOpts < NumOpts) ||
-      (std::find(&OptUnsafeEdges[0], &OptUnsafeEdges[NumOpts], 0) !=
-       &OptUnsafeEdges[NumOpts]);
+      (std::find(OptUnsafeEdges, OptUnsafeEdges + NumOpts, 0) !=
+       OptUnsafeEdges + NumOpts);
   }
 
 private:
   ReductionState RS;
   unsigned NumOpts;
   unsigned DeniedOpts;
-  std::unique_ptr<unsigned[]> OptUnsafeEdges;
+  unsigned* OptUnsafeEdges;
   unsigned VReg;
   OptionToRegMap OptionRegs;
 };





More information about the llvm-commits mailing list