[llvm-commits] CVS: llvm-java/tools/class2llvm/class2llvm.cpp
Alkis Evlogimenos
alkis at cs.uiuc.edu
Wed Nov 17 15:53:59 PST 2004
Changes in directory llvm-java/tools/class2llvm:
class2llvm.cpp updated: 1.17 -> 1.18
---
Log message:
Make tool take a '-o' option for the output filename.
---
Diffs of the changes: (+15 -1)
Index: llvm-java/tools/class2llvm/class2llvm.cpp
diff -u llvm-java/tools/class2llvm/class2llvm.cpp:1.17 llvm-java/tools/class2llvm/class2llvm.cpp:1.18
--- llvm-java/tools/class2llvm/class2llvm.cpp:1.17 Wed Sep 29 16:02:08 2004
+++ llvm-java/tools/class2llvm/class2llvm.cpp Wed Nov 17 17:53:49 2004
@@ -21,6 +21,7 @@
#include <llvm/System/Signals.h>
#include <cstddef>
+#include <fstream>
#include <iostream>
using namespace llvm;
@@ -28,24 +29,37 @@
static cl::opt<std::string>
InputClass(cl::Positional, cl::desc("<input class>"));
+static cl::opt<std::string>
+OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename"));
+
int main(int argc, char* argv[])
{
sys::PrintStackTraceOnErrorSignal();
cl::ParseCommandLineOptions(argc, argv,
"classfile to llvm utility");
+ std::ostream* out = &std::cout;
+ if (!OutputFilename.empty()) {
+ sys::RemoveFileOnSignal(sys::Path(OutputFilename));
+ out = new std::ofstream(OutputFilename.c_str());
+ }
+
try {
std::auto_ptr<Module> module = Java::compile(InputClass);
PassManager passes;
passes.add(createVerifierPass());
- passes.add(new WriteBytecodePass(&std::cout));
+ passes.add(new WriteBytecodePass(out));
passes.run(*module);
}
catch (std::exception& e) {
std::cerr << e.what() << '\n';
+ sys::Path(OutputFilename).destroyFile();
return EXIT_FAILURE;
}
+ if (!OutputFilename.empty())
+ delete out;
+
return EXIT_SUCCESS;
}
More information about the llvm-commits
mailing list