mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
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
This commit is contained in:
@@ -410,6 +410,7 @@ bool ReduceCrashingInstructions::TestInsts(std::vector<const Instruction*>
|
||||
// Verify that this is still valid.
|
||||
PassManager Passes;
|
||||
Passes.add(createVerifierPass());
|
||||
Passes.add(createDebugInfoVerifierPass());
|
||||
Passes.run(*M);
|
||||
|
||||
// Try running on the hacked up program...
|
||||
|
||||
@@ -713,6 +713,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
PassManager Passes;
|
||||
Passes.add(createVerifierPass());
|
||||
Passes.add(createDebugInfoVerifierPass());
|
||||
Passes.add(createPrintModulePass(Out->os()));
|
||||
Passes.run(*M.get());
|
||||
Out->keep();
|
||||
|
||||
+15
-3
@@ -191,7 +191,10 @@ static inline void addPass(PassManagerBase &PM, Pass *P) {
|
||||
PM.add(P);
|
||||
|
||||
// If we are verifying all of the intermediate steps, add the verifier...
|
||||
if (VerifyEach) PM.add(createVerifierPass());
|
||||
if (VerifyEach) {
|
||||
PM.add(createVerifierPass());
|
||||
PM.add(createDebugInfoVerifierPass());
|
||||
}
|
||||
}
|
||||
|
||||
/// AddOptimizationPasses - This routine adds optimization passes
|
||||
@@ -201,7 +204,8 @@ static inline void addPass(PassManagerBase &PM, Pass *P) {
|
||||
/// OptLevel - Optimization Level
|
||||
static void AddOptimizationPasses(PassManagerBase &MPM,FunctionPassManager &FPM,
|
||||
unsigned OptLevel, unsigned SizeLevel) {
|
||||
FPM.add(createVerifierPass()); // Verify that input is correct
|
||||
FPM.add(createVerifierPass()); // Verify that input is correct
|
||||
MPM.add(createDebugInfoVerifierPass()); // Verify that debug info is correct
|
||||
|
||||
PassManagerBuilder Builder;
|
||||
Builder.OptLevel = OptLevel;
|
||||
@@ -240,6 +244,9 @@ static void AddStandardCompilePasses(PassManagerBase &PM) {
|
||||
if (StripDebug)
|
||||
addPass(PM, createStripSymbolsPass(true));
|
||||
|
||||
// Verify debug info only after it's (possibly) stripped.
|
||||
PM.add(createDebugInfoVerifierPass());
|
||||
|
||||
if (DisableOptimizations) return;
|
||||
|
||||
// -std-compile-opts adds the same module passes as -O3.
|
||||
@@ -257,6 +264,9 @@ static void AddStandardLinkPasses(PassManagerBase &PM) {
|
||||
if (StripDebug)
|
||||
addPass(PM, createStripSymbolsPass(true));
|
||||
|
||||
// Verify debug info only after it's (possibly) stripped.
|
||||
PM.add(createDebugInfoVerifierPass());
|
||||
|
||||
if (DisableOptimizations) return;
|
||||
|
||||
PassManagerBuilder Builder;
|
||||
@@ -600,8 +610,10 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
|
||||
// Check that the module is well formed on completion of optimization
|
||||
if (!NoVerify && !VerifyEach)
|
||||
if (!NoVerify && !VerifyEach) {
|
||||
Passes.add(createVerifierPass());
|
||||
Passes.add(createDebugInfoVerifierPass());
|
||||
}
|
||||
|
||||
// Write bitcode or assembly to the output as the last step...
|
||||
if (!NoOutput && !AnalyzeOnly) {
|
||||
|
||||
Reference in New Issue
Block a user