Don't call doFinalization from verifyFunction.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 13 Nov 2013 13:44:11 +0000 (13:44 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 13 Nov 2013 13:44:11 +0000 (13:44 +0000)
verifyFunction needs to call doInitialization to collect metadata and avoid
crashing when verifying debug info in a function.

But it should not call doFinalization since that is where the verifier will
check declarations, variables and aliases, which is not desirable when one
only wants to verify a function.

A possible cleanup would be to split the class into a ModuleVerifier and
FunctionVerifier.

Issue reported by Ilia Filippov. Patch by Michael Kruse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194574 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/Verifier.cpp

index 4255cd2553b778995b8167a9e7e9e14e5fc92c9b..1bb3e3423d49b61669fbb67d4f23f8cd238f9dcb 100644 (file)
@@ -2402,7 +2402,6 @@ bool llvm::verifyFunction(const Function &f, VerifierFailureAction action) {
   FPM.add(V);
   FPM.doInitialization();
   FPM.run(F);
-  FPM.doFinalization();
   return V->Broken;
 }