#include <fstream>
namespace {
- // FIXME: This should eventually be parameterized...
- TargetData TD("gccas target");
-
cl::opt<std::string>
InputFilename(cl::Positional,cl::desc("<input llvm assembly>"),cl::init("-"));
addPass(PM, createGlobalDCEPass()); // Kill unused uinit g-vars
addPass(PM, createDeadTypeEliminationPass()); // Eliminate dead types
addPass(PM, createConstantMergePass()); // Merge dup global constants
- addPass(PM, createVerifierPass()); // Verify that input is correct
addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
+ addPass(PM, createVerifierPass()); // Verify that input is correct
addPass(PM, createDeadInstEliminationPass()); // Remove Dead code/vars
addPass(PM, createRaiseAllocationsPass()); // call %malloc -> malloc inst
+ addPass(PM, createInstructionCombiningPass()); // Cleanup code for raise
addPass(PM, createIndVarSimplifyPass()); // Simplify indvars
- addPass(PM, createRaisePointerReferencesPass(TD));// Recover type information
+ addPass(PM, createRaisePointerReferencesPass());// Recover type information
addPass(PM, createInstructionCombiningPass()); // Combine silly seq's
addPass(PM, createPromoteMemoryToRegister()); // Promote alloca's to regs
addPass(PM, createReassociatePass()); // Reassociate expressions
//
PassManager Passes;
+ // Add an appropriate TargetData instance for this module...
+ Passes.add(new TargetData("gccas", M.get()));
+
// Add all of the transformation passes to the pass manager to do the cleanup
// and optimization of the GCC output.
//