bugpoint: Verify input files

Like r233229 for `llvm-link`, start verifying input files to `bugpoint`.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233253 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith 2015-03-26 05:03:10 +00:00
parent 6a62f78523
commit 7a1a3e909d
2 changed files with 10 additions and 4 deletions

View File

@ -6,9 +6,9 @@
; CHECK: call void @foo(), !dbg ![[LOC:[0-9]+]], !attach ![[CALL:[0-9]+]]
; CHECK: ![[LOC]] = !MDLocation(line: 104, column: 105, scope: ![[SCOPE:[0-9]+]])
; CHECK: ![[SCOPE]] = !MDCompileUnit(language: 0, file: ![[FILE:[0-9]+]], producer: "me", isOptimized: true, runtimeVersion: 0, emissionKind: 0, enums: ![[LIST:[0-9]+]], retainedTypes: ![[LIST]])
; CHECK: ![[SCOPE]] = !MDSubprogram(name: "test"
; CHECK-SAME: file: ![[FILE:[0-9]+]]
; CHECK: ![[FILE]] = !MDFile(filename: "source.c", directory: "/dir")
; CHECK: ![[LIST]] = !{i32 0}
; CHECK: ![[CALL]] = !{!"the call to foo"}
%rust_task = type {}
@ -31,12 +31,12 @@ declare void @foo()
!3 = !{!"noise"}
!4 = !{!"filler"}
!9 = !MDCompileUnit(language: 0, producer: "me", isOptimized: true, emissionKind: 0, file: !15, enums: !16, retainedTypes: !16)
!9 = !MDSubprogram(name: "test", file: !15)
!10 = !MDLocation(line: 100, column: 101, scope: !9)
!11 = !MDLocation(line: 102, column: 103, scope: !9)
!12 = !MDLocation(line: 104, column: 105, scope: !9)
!13 = !MDLocation(line: 106, column: 107, scope: !9)
!14 = !MDLocation(line: 108, column: 109, scope: !9)
!15 = !MDFile(filename: "source.c", directory: "/dir")
!16 = !{i32 0}
!16 = !{}
!17 = !{i32 1, !"Debug Info Version", i32 3}

View File

@ -16,6 +16,7 @@
#include "BugDriver.h"
#include "ToolRunner.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Verifier.h"
#include "llvm/IRReader/IRReader.h"
#include "llvm/Linker/Linker.h"
#include "llvm/Pass.h"
@ -91,6 +92,11 @@ std::unique_ptr<Module> llvm::parseInputFile(StringRef Filename,
return Result;
}
if (verifyModule(*Result, &errs())) {
errs() << "bugpoint: " << Filename << ": error: does not verify\n";
return std::unique_ptr<Module>();
}
// If we don't have an override triple, use the first one to configure
// bugpoint, or use the host triple if none provided.
if (TargetTriple.getTriple().empty()) {