[silgen] Create CleanupManager::dump and the relevant dump methods to dump the current cleanups.

This is useful to discover when a specific cleanup is being eliminated while
debugging. The implementation is compiled out when assertions are disabled.

rdar://29791263
This commit is contained in:
Michael Gottesman
2017-01-28 19:14:41 -08:00
parent d81d37694d
commit e192b56a88
9 changed files with 143 additions and 1 deletions

View File

@@ -405,6 +405,12 @@ namespace {
void emit(SILGenFunction &SGF, CleanupLocation l) override {
assert(false && "Sema didn't catch exit out of a defer?");
}
void dump() const override {
#ifndef NDEBUG
llvm::errs() << "DeferEscapeCheckerCleanup\n"
<< "State: " << getState() << "\n";
#endif
}
};
} // end anonymous namespace
@@ -425,6 +431,12 @@ namespace {
if (SGF.B.hasValidInsertionPoint())
SGF.Cleanups.setCleanupState(TheCleanup, CleanupState::Dead);
}
void dump() const override {
#ifndef NDEBUG
llvm::errs() << "DeferCleanup\n"
<< "State: " << getState() << "\n";
#endif
}
};
} // end anonymous namespace