#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>
// 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;
}
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;
}
}
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;
}