bugpoint: Verify input files
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Thu, 26 Mar 2015 05:03:10 +0000 (05:03 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Thu, 26 Mar 2015 05:03:10 +0000 (05:03 +0000)
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

test/BugPoint/metadata.ll
tools/bugpoint/BugDriver.cpp

index 95d22a81f9ef3b7c519f76101e5bc73008dd1245..c706d9036d796c5c2f1f127bf6fc77c21dc13a06 100644 (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}
index d76e7d030ec7b95586acaaa29941429c7f0150f3..865cb513c55f507815de4562cb86706b38a08847 100644 (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()) {