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

Lang Hames lhames at gmail.com
Sun Oct 26 13:36:42 PDT 2014


That's odd. It's just a unique_ptr to an array - that should be supported.
I'm going to try #including memory directly and recommit.

- Lang.

On Sun, Oct 26, 2014 at 12:50 PM, Hans Wennborg <hans at hanshq.net> wrote:

> 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;
>  };
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141026/de351add/attachment.html>


More information about the llvm-commits mailing list