Increase odds that this won't bork things
[oota-llvm.git] / tools / gccas / gccas.cpp
index 2172782ce9cc41b5710b3df581c748e397c41657..1cefa371b6ce6c1dba779986be23b09b2533844c 100644 (file)
@@ -23,9 +23,6 @@
 #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("-"));
 
@@ -69,12 +66,13 @@ void AddConfiguredTransformationPasses(PassManager &PM) {
   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
@@ -148,6 +146,9 @@ int main(int argc, char **argv) {
   //
   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.
   //