diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-04-15 16:27:38 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-04-15 16:27:38 +0000 |
commit | 32791b02facda5b879f2bcf7dd3f1faea1e4782d (patch) | |
tree | 1fe8ec4d917295d0a54e8d538006088bb6b781e3 /include | |
parent | abf483ba524027caa3c5cd3de452d9feb11170d3 (diff) | |
download | llvm-32791b02facda5b879f2bcf7dd3f1faea1e4782d.tar.gz llvm-32791b02facda5b879f2bcf7dd3f1faea1e4782d.tar.bz2 llvm-32791b02facda5b879f2bcf7dd3f1faea1e4782d.tar.xz |
verify-di: Implement DebugInfoVerifier
Implement DebugInfoVerifier, which steals verification relying on
DebugInfoFinder from Verifier.
- Adds LegacyDebugInfoVerifierPassPass, a ModulePass which wraps
DebugInfoVerifier. Uses -verify-di command-line flag.
- Change verifyModule() to invoke DebugInfoVerifier as well as
Verifier.
- Add a call to createDebugInfoVerifierPass() wherever there was a
call to createVerifierPass().
This implementation as a module pass should sidestep efficiency issues,
allowing us to turn debug info verification back on.
<rdar://problem/15500563>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206300 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/IR/Verifier.h | 13 | ||||
-rw-r--r-- | include/llvm/InitializePasses.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/include/llvm/IR/Verifier.h b/include/llvm/IR/Verifier.h index 68caa96f18..0272e206f3 100644 --- a/include/llvm/IR/Verifier.h +++ b/include/llvm/IR/Verifier.h @@ -28,6 +28,7 @@ namespace llvm { class Function; class FunctionPass; +class ModulePass; class Module; class PreservedAnalyses; class raw_ostream; @@ -58,6 +59,18 @@ bool verifyModule(const Module &M, raw_ostream *OS = nullptr); /// Note that this creates a pass suitable for the legacy pass manager. It has nothing to do with \c VerifierPass. FunctionPass *createVerifierPass(bool FatalErrors = true); +/// \brief Create a debug-info verifier pass. +/// +/// Check a module for validity of debug info. This is essentially a pass +/// wrapped around the debug-info parts of \a verifyModule(). When the pass +/// detects a verification error it is always printed to stderr, and by default +/// they are fatal. You can override that by passing \c false to \p +/// FatalErrors. +/// +/// Note that this creates a pass suitable for the legacy pass manager. It has +/// nothing to do with \c VerifierPass. +ModulePass *createDebugInfoVerifierPass(bool FatalErrors = true); + class VerifierPass { bool FatalErrors; diff --git a/include/llvm/InitializePasses.h b/include/llvm/InitializePasses.h index 9b9f2345ad..bfa5530522 100644 --- a/include/llvm/InitializePasses.h +++ b/include/llvm/InitializePasses.h @@ -103,6 +103,7 @@ void initializeDAHPass(PassRegistry&); void initializeDCEPass(PassRegistry&); void initializeDSEPass(PassRegistry&); void initializeDebugIRPass(PassRegistry&); +void initializeDebugInfoVerifierLegacyPassPass(PassRegistry &); void initializeDeadInstEliminationPass(PassRegistry&); void initializeDeadMachineInstructionElimPass(PassRegistry&); void initializeDelinearizationPass(PassRegistry &); |