[llvm] r229477 - [PBQP] NDEBUG guards added around code needed for assert.
Jonas Paulsson
jonas.paulsson at ericsson.com
Mon Feb 16 23:45:06 PST 2015
Author: jonpa
Date: Tue Feb 17 01:45:06 2015
New Revision: 229477
URL: http://llvm.org/viewvc/llvm-project?rev=229477&view=rev
Log:
[PBQP] NDEBUG guards added around code needed for assert.
wasConservativelyAllocatable() is only called to assert that a conservatively
allocatable node wasn't forced to spill.
Modified:
llvm/trunk/include/llvm/CodeGen/PBQP/ReductionRules.h
llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h
Modified: llvm/trunk/include/llvm/CodeGen/PBQP/ReductionRules.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/PBQP/ReductionRules.h?rev=229477&r1=229476&r2=229477&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/PBQP/ReductionRules.h (original)
+++ llvm/trunk/include/llvm/CodeGen/PBQP/ReductionRules.h Tue Feb 17 01:45:06 2015
@@ -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 <typename VectorT>
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);
Modified: llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h?rev=229477&r1=229476&r2=229477&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h (original)
+++ llvm/trunk/include/llvm/CodeGen/RegAllocPBQP.h Tue Feb 17 01:45:06 2015
@@ -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<unsigned[]> OptUnsafeEdges;
unsigned VReg;
GraphMetadata::AllowedRegVecRef AllowedRegs;
+
+#ifndef NDEBUG
bool everConservativelyAllocatable;
+#endif
};
class RegAllocSolverImpl {
More information about the llvm-commits
mailing list