[llvm-commits] [llvm] r73846 - /llvm/trunk/tools/llvm-mc/llvm-mc.cpp

Chris Lattner sabre at nondot.org
Sat Jun 20 22:22:38 PDT 2009


Author: lattner
Date: Sun Jun 21 00:22:37 2009
New Revision: 73846

URL: http://llvm.org/viewvc/llvm-project?rev=73846&view=rev
Log:
start wiring up support for asm parsing.

Modified:
    llvm/trunk/tools/llvm-mc/llvm-mc.cpp

Modified: llvm/trunk/tools/llvm-mc/llvm-mc.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mc/llvm-mc.cpp?rev=73846&r1=73845&r2=73846&view=diff

==============================================================================
--- llvm/trunk/tools/llvm-mc/llvm-mc.cpp (original)
+++ llvm/trunk/tools/llvm-mc/llvm-mc.cpp Sun Jun 21 00:22:37 2009
@@ -16,6 +16,7 @@
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/PrettyStackTrace.h"
+#include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/System/Signals.h"
 using namespace llvm;
@@ -27,31 +28,63 @@
 OutputFilename("o", cl::desc("Output filename"),
                cl::value_desc("filename"));
 
-int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal();
-  PrettyStackTraceProgram X(argc, argv);
-  
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
-
-  cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n");
+static cl::list<std::string>
+IncludeDirs("I", cl::desc("Directory of include files"),
+            cl::value_desc("directory"), cl::Prefix);
+
+enum ActionType {
+  AC_Assemble
+};
+
+static cl::opt<ActionType>
+Action(cl::desc("Action to perform:"),
+       cl::values(clEnumValN(AC_Assemble, "assemble",
+                             "Assemble a .s file (default)"),
+                  clEnumValEnd));
 
+static int AssembleInput(const char *ProgName) {
   std::string ErrorMessage;
-  
-  MemoryBuffer *Buffer
-    = MemoryBuffer::getFileOrSTDIN(InputFilename, &ErrorMessage);
-
+  MemoryBuffer *Buffer = MemoryBuffer::getFileOrSTDIN(InputFilename,
+                                                      &ErrorMessage);
   if (Buffer == 0) {
-    errs() << argv[0] << ": ";
+    errs() << ProgName << ": ";
     if (ErrorMessage.size())
       errs() << ErrorMessage << "\n";
     else
       errs() << "input file didn't read correctly.\n";
     return 1;
   }
+
+  SourceMgr SrcMgr;
+  
+  // Tell SrcMgr about this buffer, which is what TGParser will pick up.
+  SrcMgr.AddNewSourceBuffer(Buffer, SMLoc());
+  
+  // Record the location of the include directories so that the lexer can find
+  // it later.
+  SrcMgr.setIncludeDirs(IncludeDirs);
   
+  //TGParser Parser(SrcMgr);
+  //return Parser.ParseFile();
   
   
+  return 1;
+}
+
+
+int main(int argc, char **argv) {
+  // Print a stack trace if we signal out.
+  sys::PrintStackTraceOnErrorSignal();
+  PrettyStackTraceProgram X(argc, argv);
+  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
+  cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n");
+
+  switch (Action) {
+  default:
+  case AC_Assemble:
+    return AssembleInput(argv[0]);
+  }
+  
   return 0;
 }
 





More information about the llvm-commits mailing list