Skip to content
This repository has been archived by the owner on Apr 23, 2020. It is now read-only.

Commit

Permalink
Unify XDEBUG and EXPENSIVE_CHECKS (into the latter), and add an optio…
Browse files Browse the repository at this point in the history
…n to the cmake build to enable them.

Summary:
Historically, we had a switch in the Makefiles for turning on "expensive
checks". This has never been ported to the cmake build, but the
(dead-ish) code is still around.

This will also make it easier to turn it on in buildbots.

Reviewers: chandlerc

Subscribers: jyknight, mzolotukhin, RKSimon, gberry, llvm-commits

Differential Revision: http://reviews.llvm.org/D19723

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268050 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
filcab committed Apr 29, 2016
1 parent 55d3dc1 commit 2fd5434
Show file tree
Hide file tree
Showing 16 changed files with 26 additions and 19 deletions.
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,8 @@ else()
option(LLVM_ENABLE_ASSERTIONS "Enable assertions" ON)
endif()

option(LLVM_ENABLE_EXPENSIVE_CHECKS "Enable expensive checks" OFF)

set(LLVM_ABI_BREAKING_CHECKS "WITH_ASSERTS" CACHE STRING
"Enable abi-breaking checks. Can be WITH_ASSERTS, FORCE_ON or FORCE_OFF.")

Expand Down
5 changes: 5 additions & 0 deletions cmake/modules/HandleLLVMOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ if( LLVM_ENABLE_ASSERTIONS )
endif()
endif()

if(LLVM_ENABLE_EXPENSIVE_CHECKS)
add_definitions(-DEXPENSIVE_CHECKS)
add_definitions(-D_GLIBCXX_DEBUG)
endif()

string(TOUPPER "${LLVM_ABI_BREAKING_CHECKS}" uppercase_LLVM_ABI_BREAKING_CHECKS)

if( uppercase_LLVM_ABI_BREAKING_CHECKS STREQUAL "WITH_ASSERTS" )
Expand Down
6 changes: 3 additions & 3 deletions include/llvm/Analysis/RegionInfoImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -665,7 +665,7 @@ typename Tr::RegionT *RegionInfoBase<Tr>::createRegion(BlockT *entry,
new RegionT(entry, exit, static_cast<RegionInfoT *>(this), DT);
BBtoRegion.insert(std::make_pair(entry, region));

#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
region->verifyRegion();
#else
DEBUG(region->verifyRegion());
Expand Down Expand Up @@ -764,7 +764,7 @@ void RegionInfoBase<Tr>::buildRegionsTree(DomTreeNodeT *N, RegionT *region) {
}
}

#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
template <class Tr>
bool RegionInfoBase<Tr>::VerifyRegionInfo = true;
#else
Expand Down Expand Up @@ -798,7 +798,7 @@ void RegionInfoBase<Tr>::releaseMemory() {

template <class Tr>
void RegionInfoBase<Tr>::verifyAnalysis() const {
// Do only verify regions if explicitely activated using XDEBUG or
// Do only verify regions if explicitely activated using EXPENSIVE_CHECKS or
// -verify-region-info
if (!RegionInfoBase<Tr>::VerifyRegionInfo)
return;
Expand Down
2 changes: 1 addition & 1 deletion include/llvm/Support/GenericDomTree.h
Original file line number Diff line number Diff line change
Expand Up @@ -453,7 +453,7 @@ template <class NodeT> class DominatorTreeBase : public DominatorBase<NodeT> {

// Compare the result of the tree walk and the dfs numbers, if expensive
// checks are enabled.
#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
assert((!DFSInfoValid ||
(dominatedBySlowTreeWalk(A, B) == B->DominatedBy(A))) &&
"Tree walk disagrees with dfs numbers!");
Expand Down
2 changes: 1 addition & 1 deletion lib/Analysis/LoopInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ template class llvm::LoopBase<BasicBlock, Loop>;
template class llvm::LoopInfoBase<BasicBlock, Loop>;

// Always verify loopinfo if expensive checking is enabled.
#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
static bool VerifyLoopInfo = true;
#else
static bool VerifyLoopInfo = false;
Expand Down
2 changes: 1 addition & 1 deletion lib/Analysis/ScalarEvolution.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ MaxBruteForceIterations("scalar-evolution-max-iterations", cl::ReallyHidden,
"derived loop"),
cl::init(100));

// FIXME: Enable this with XDEBUG when the test suite is clean.
// FIXME: Enable this with EXPENSIVE_CHECKS when the test suite is clean.
static cl::opt<bool>
VerifySCEV("verify-scev",
cl::desc("Verify ScalarEvolution's backedge taken counts (slow)"));
Expand Down
4 changes: 2 additions & 2 deletions lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ bool DAGTypeLegalizer::run() {

// Now that we have a set of nodes to process, handle them all.
while (!Worklist.empty()) {
#ifndef XDEBUG
#ifndef EXPENSIVE_CHECKS
if (EnableExpensiveChecks)
#endif
PerformExpensiveChecks();
Expand Down Expand Up @@ -394,7 +394,7 @@ bool DAGTypeLegalizer::run() {
}
}

#ifndef XDEBUG
#ifndef EXPENSIVE_CHECKS
if (EnableExpensiveChecks)
#endif
PerformExpensiveChecks();
Expand Down
4 changes: 2 additions & 2 deletions lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7294,9 +7294,9 @@ void llvm::checkForCycles(const llvm::SDNode *N,
bool force) {
#ifndef NDEBUG
bool check = force;
#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
check = true;
#endif // XDEBUG
#endif // EXPENSIVE_CHECKS
if (check) {
assert(N && "Checking nonexistent SDNode");
SmallPtrSet<const SDNode*, 32> visited;
Expand Down
2 changes: 1 addition & 1 deletion lib/IR/Dominators.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
using namespace llvm;

// Always verify dominfo if expensive checking is enabled.
#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
static bool VerifyDomInfo = true;
#else
static bool VerifyDomInfo = false;
Expand Down
2 changes: 1 addition & 1 deletion lib/Target/ARM/ARMFrameLowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2155,7 +2155,7 @@ void ARMFrameLowering::adjustForSegmentedStacks(

PrevStackMBB->addSuccessor(McrMBB);

#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
MF.verify();
#endif
}
2 changes: 1 addition & 1 deletion lib/Target/Hexagon/HexagonCommonGEP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1298,7 +1298,7 @@ bool HexagonCommonGEP::runOnFunction(Function &F) {
materialize(Loc);
removeDeadCode();

#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
// Run this only when expensive checks are enabled.
verifyFunction(F);
#endif
Expand Down
2 changes: 1 addition & 1 deletion lib/Target/Sparc/SparcFrameLowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ void SparcFrameLowering::remapRegsForLeafProc(MachineFunction &MF) const {
}

assert(verifyLeafProcRegUse(&MRI));
#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
MF.verify(0, "After LeafProc Remapping");
#endif
}
Expand Down
4 changes: 2 additions & 2 deletions lib/Target/X86/X86FrameLowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2279,7 +2279,7 @@ void X86FrameLowering::adjustForSegmentedStacks(
checkMBB->addSuccessor(allocMBB);
checkMBB->addSuccessor(&PrologueMBB);

#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
MF.verify();
#endif
}
Expand Down Expand Up @@ -2423,7 +2423,7 @@ void X86FrameLowering::adjustForHiPEPrologue(
incStackMBB->addSuccessor(&PrologueMBB, {99, 100});
incStackMBB->addSuccessor(incStackMBB, {1, 100});
}
#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
MF.verify();
#endif
}
Expand Down
2 changes: 1 addition & 1 deletion lib/Transforms/ObjCARC/BlotMapVector.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ template <class KeyT, class ValueT> class BlotMapVector {
const_iterator begin() const { return Vector.begin(); }
const_iterator end() const { return Vector.end(); }

#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
~BlotMapVector() {
assert(Vector.size() >= Map.size()); // May differ due to blotting.
for (typename MapTy::const_iterator I = Map.begin(), E = Map.end(); I != E;
Expand Down
2 changes: 1 addition & 1 deletion lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ static cl::opt<unsigned>
RematerializationThreshold("spp-rematerialization-threshold", cl::Hidden,
cl::init(6));

#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
static bool ClobberNonLive = true;
#else
static bool ClobberNonLive = false;
Expand Down
2 changes: 1 addition & 1 deletion lib/Transforms/Utils/MemorySSA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -805,7 +805,7 @@ void CachingMemorySSAWalker::invalidateInfo(MemoryAccess *MA) {
CachedUpwardsClobberingAccess.clear();
}

#ifdef XDEBUG
#ifdef EXPENSIVE_CHECKS
// Run this only when expensive checks are enabled.
verifyRemoved(MA);
#endif
Expand Down

0 comments on commit 2fd5434

Please sign in to comment.