*** empty log message ***
[oota-llvm.git] / tools / as / as.cpp
index c66dd598b9bb8f4f4cab59f367136ad4571be2dd..c9bd3b4e08c05a6d7bc5ebb71b66a1fdb40d5216 100644 (file)
 #include "llvm/Module.h"
 #include "llvm/Assembly/Parser.h"
 #include "llvm/Bytecode/Writer.h"
+#include "llvm/Analysis/Verifier.h"
 #include "Support/CommandLine.h"
 #include "Support/Signals.h"
 #include <fstream>
 #include <memory>
 using std::cerr;
+using std::string;
 
 static cl::opt<string> 
 InputFilename(cl::Positional, cl::desc("<input .llvm file>"), cl::init("-"));
@@ -39,16 +41,23 @@ int main(int argc, char **argv) {
     // Parse the file now...
     std::auto_ptr<Module> M(ParseAssemblyFile(InputFilename));
     if (M.get() == 0) {
-      cerr << "assembly didn't read correctly.\n";
+      cerr << argv[0] << ": assembly didn't read correctly.\n";
       return 1;
     }
+
+    if (verifyModule(*M.get())) {
+      cerr << argv[0] << ": assembly parsed, but does not verify as correct!\n";
+      return 1;
+    }
+
   
     if (DumpAsm) cerr << "Here's the assembly:\n" << M.get();
 
     if (OutputFilename != "") {   // Specified an output filename?
       if (!Force && std::ifstream(OutputFilename.c_str())) {
         // If force is not specified, make sure not to overwrite a file!
-        cerr << "Error opening '" << OutputFilename << "': File exists!\n"
+        cerr << argv[0] << ": error opening '" << OutputFilename
+             << "': file exists!\n"
              << "Use -f command line argument to force output\n";
         return 1;
       }
@@ -70,7 +79,8 @@ int main(int argc, char **argv) {
 
         if (!Force && std::ifstream(OutputFilename.c_str())) {
           // If force is not specified, make sure not to overwrite a file!
-          cerr << "Error opening '" << OutputFilename << "': File exists!\n"
+          cerr << argv[0] << ": error opening '" << OutputFilename
+               << "': file exists!\n"
                << "Use -f command line argument to force output\n";
           return 1;
         }
@@ -83,13 +93,13 @@ int main(int argc, char **argv) {
     }
   
     if (!Out->good()) {
-      cerr << "Error opening " << OutputFilename << "!\n";
+      cerr << argv[0] << ": error opening " << OutputFilename << "!\n";
       return 1;
     }
    
     WriteBytecodeToFile(M.get(), *Out);
   } catch (const ParseException &E) {
-    cerr << E.getMessage() << std::endl;
+    cerr << argv[0] << ": " << E.getMessage() << "\n";
     return 1;
   }