Use IRReader.h in opt, to support reading of LLVM Assembly files directly.
authorDan Gohman <gohman@apple.com>
Thu, 3 Sep 2009 16:00:08 +0000 (16:00 +0000)
committerDan Gohman <gohman@apple.com>
Thu, 3 Sep 2009 16:00:08 +0000 (16:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80922 91177308-0d34-0410-b5e6-96231b3b80d8

tools/opt/CMakeLists.txt
tools/opt/Makefile
tools/opt/opt.cpp

index efcca80ddfc21bbb0c45b5c76c418857f2abb891..b75cda0e128bf3356f3e3c4a4a04cbedb08f5693 100644 (file)
@@ -1,5 +1,5 @@
 set(LLVM_REQUIRES_EH 1)
-set(LLVM_LINK_COMPONENTS bitreader bitwriter instrumentation scalaropts ipo)
+set(LLVM_LINK_COMPONENTS bitreader asmparser bitwriter instrumentation scalaropts ipo)
 
 add_llvm_tool(opt
   AnalysisWrappers.cpp
index 0afb0021757426e64f4d307a07870a43e11735da..b17be343a45abcd6124c5ddb5420072db0f31aee 100644 (file)
@@ -10,6 +10,6 @@ LEVEL = ../..
 TOOLNAME = opt
 REQUIRES_EH := 1
 
-LINK_COMPONENTS := bitreader bitwriter instrumentation scalaropts ipo
+LINK_COMPONENTS := bitreader bitwriter asmparser instrumentation scalaropts ipo
 
 include $(LEVEL)/Makefile.common
index d8bfd61c232779641e69bb3f37ad675ca8af22b6..b1f5c0803a53372297838e4b409a06fc1fa4e165 100644 (file)
@@ -26,6 +26,7 @@
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Support/PassNameParser.h"
 #include "llvm/System/Signals.h"
+#include "llvm/Support/IRReader.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/PluginLoader.h"
@@ -342,22 +343,14 @@ int main(int argc, char **argv) {
     // FIXME: The choice of target should be controllable on the command line.
     std::auto_ptr<TargetMachine> target;
 
-    std::string ErrorMessage;
+    SMDiagnostic Err;
 
     // Load the input module...
     std::auto_ptr<Module> M;
-    if (MemoryBuffer *Buffer
-          = MemoryBuffer::getFileOrSTDIN(InputFilename, &ErrorMessage)) {
-      M.reset(ParseBitcodeFile(Buffer, Context, &ErrorMessage));
-      delete Buffer;
-    }
+    M.reset(ParseIRFile(InputFilename, Err, Context));
 
     if (M.get() == 0) {
-      errs() << argv[0] << ": ";
-      if (ErrorMessage.size())
-        errs() << ErrorMessage << "\n";
-      else
-        errs() << "bitcode didn't read correctly.\n";
+      Err.Print(argv[0], errs());
       return 1;
     }