diff --git a/llvm/include/llvm/CodeGen/PBQP/ReductionRules.h b/llvm/include/llvm/CodeGen/PBQP/ReductionRules.h index 8f54ec93dd21..d4a544bfe721 100644 --- a/llvm/include/llvm/CodeGen/PBQP/ReductionRules.h +++ b/llvm/include/llvm/CodeGen/PBQP/ReductionRules.h @@ -144,6 +144,7 @@ namespace PBQP { // TODO: Try to normalize newly added/modified edge. } +#ifndef NDEBUG // Does this Cost vector have any register options ? template bool hasRegisterOptions(const VectorT &V) { @@ -161,6 +162,7 @@ namespace PBQP { return false; } +#endif // \brief Find a solution to a fully reduced graph by backpropagation. // @@ -187,12 +189,14 @@ namespace PBQP { RawVector v = G.getNodeCosts(NId); +#ifndef NDEBUG // Although a conservatively allocatable node can be allocated to a register, // spilling it may provide a lower cost solution. Assert here that spilling // is done by choice, not because there were no register available. if (G.getNodeMetadata(NId).wasConservativelyAllocatable()) assert(hasRegisterOptions(v) && "A conservatively allocatable node " "must have available register options"); +#endif for (auto EId : G.adjEdgeIds(NId)) { const Matrix& edgeCosts = G.getEdgeCosts(EId); diff --git a/llvm/include/llvm/CodeGen/RegAllocPBQP.h b/llvm/include/llvm/CodeGen/RegAllocPBQP.h index a117eb070f07..827c4c909253 100644 --- a/llvm/include/llvm/CodeGen/RegAllocPBQP.h +++ b/llvm/include/llvm/CodeGen/RegAllocPBQP.h @@ -192,7 +192,11 @@ public: NodeMetadata() : RS(Unprocessed), NumOpts(0), DeniedOpts(0), OptUnsafeEdges(nullptr), - VReg(0), everConservativelyAllocatable(false) {} + VReg(0) +#ifndef NDEBUG + , everConservativelyAllocatable(false) +#endif + {} // FIXME: Re-implementing default behavior to work around MSVC. Remove once // MSVC synthesizes move constructors properly. @@ -257,10 +261,12 @@ public: assert(RS >= this->RS && "A node's reduction state can not be downgraded"); this->RS = RS; +#ifndef NDEBUG // Remember this state to assert later that a non-infinite register // option was available. if (RS == ConservativelyAllocatable) everConservativelyAllocatable = true; +#endif } @@ -286,9 +292,11 @@ public: &OptUnsafeEdges[NumOpts]); } +#ifndef NDEBUG bool wasConservativelyAllocatable() const { return everConservativelyAllocatable; } +#endif private: ReductionState RS; @@ -297,7 +305,10 @@ private: std::unique_ptr OptUnsafeEdges; unsigned VReg; GraphMetadata::AllowedRegVecRef AllowedRegs; + +#ifndef NDEBUG bool everConservativelyAllocatable; +#endif }; class RegAllocSolverImpl {