diff options
author | Chris Lattner <sabre@nondot.org> | 2002-01-22 03:30:46 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-01-22 03:30:46 +0000 |
commit | 3dc67dd95b07f8e16b61a1d7d087867068597ec2 (patch) | |
tree | 4f476da524714522bc154141cb0f39406ee22c3c /tools/gccas | |
parent | 12f985a1db899610939fc2e5e9243546315e5c2a (diff) | |
download | external_llvm-3dc67dd95b07f8e16b61a1d7d087867068597ec2.zip external_llvm-3dc67dd95b07f8e16b61a1d7d087867068597ec2.tar.gz external_llvm-3dc67dd95b07f8e16b61a1d7d087867068597ec2.tar.bz2 |
Misc cleanups. Allocate ofstream statically, and use a pass to write out the bytecode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1529 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/gccas')
-rw-r--r-- | tools/gccas/gccas.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/tools/gccas/gccas.cpp b/tools/gccas/gccas.cpp index fffcdab..ae0320c 100644 --- a/tools/gccas/gccas.cpp +++ b/tools/gccas/gccas.cpp @@ -1,11 +1,11 @@ -//===------------------------------------------------------------------------=== +//===----------------------------------------------------------------------===// // LLVM 'GCCAS' UTILITY // // This utility is designed to be used by the GCC frontend for creating // bytecode files from it's intermediate llvm assembly. The requirements for // this utility are thus slightly different than that of the standard as util. // -//===------------------------------------------------------------------------=== +//===----------------------------------------------------------------------===// #include "llvm/Module.h" #include "llvm/Assembly/Parser.h" @@ -16,7 +16,7 @@ #include "llvm/Transforms/Scalar/DCE.h" #include "llvm/Transforms/Scalar/IndVarSimplify.h" #include "llvm/Transforms/Scalar/InstructionCombining.h" -#include "llvm/Bytecode/Writer.h" +#include "llvm/Bytecode/WriteBytecodePass.h" #include "Support/CommandLine.h" #include <memory> #include <fstream> @@ -29,7 +29,6 @@ cl::String OutputFilename("o", "Override output filename", cl::NoFlags, ""); int main(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv, " llvm .s -> .o assembler for GCC\n"); - ostream *Out = 0; std::auto_ptr<Module> M; try { // Parse the file now... @@ -55,8 +54,8 @@ int main(int argc, char **argv) { OutputFilename += ".o"; } - Out = new std::ofstream(OutputFilename.c_str(), ios::out); - if (!Out->good()) { + std::ofstream Out(OutputFilename.c_str(), ios::out); + if (!Out.good()) { cerr << "Error opening " << OutputFilename << "!\n"; return 1; } @@ -73,13 +72,10 @@ int main(int argc, char **argv) { Passes.add(new ConstantMerge()); // Merge dup global consts Passes.add(new InstructionCombining()); // Combine silly seq's Passes.add(new DeadCodeElimination()); // Remove Dead code/vars + Passes.add(new WriteBytecodePass(&Out)); // Write bytecode to file... - // Run our queue of passes all at once now, efficiently. This form of - // runAllPasses frees the Pass objects after runAllPasses completes. - // + // Run our queue of passes all at once now, efficiently. Passes.run(M.get()); - - WriteBytecodeToFile(M.get(), *Out); return 0; } |