mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-15 16:09:02 +00:00
Verifier: Don't call debug info verifier if the module is broken
If `Verifier` has already found a failure, don't call `DebugInfoVerifier`. The latter sometimes crashes in `DebugInfoFinder` when the former would give a nice message. The only two cases I found it crashing are explicit verifier tests I've added: - test/Verifier/llvm.dbg.declare-expression.ll - test/Verifier/llvm.dbg.value-expression.ll However, I assume frontends with bugs will create invalid IR as well. IMO, the `DebugInfoVerifier` should never crash (instead, it should fail to verify), but subtleties like that will be easier to work out once it's enabled again. This is part of PR22777. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232418 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bee74a3ad4
commit
9b4250d309
@ -3113,8 +3113,13 @@ bool llvm::verifyModule(const Module &M, raw_ostream *OS) {
|
||||
|
||||
// Note that this function's return value is inverted from what you would
|
||||
// expect of a function called "verify".
|
||||
if (!V.verify(M) || Broken)
|
||||
return true;
|
||||
|
||||
// Run the debug info verifier only if the regular verifier succeeds, since
|
||||
// sometimes checks that have already failed will cause crashes here.
|
||||
DebugInfoVerifier DIV(OS ? *OS : NullStr);
|
||||
return !V.verify(M) || !DIV.verify(M) || Broken;
|
||||
return !DIV.verify(M);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
Loading…
Reference in New Issue
Block a user