diff --git a/lib/CodeGen/BackendUtil.cpp b/lib/CodeGen/BackendUtil.cpp
index 69efe43..82b4b50 100644
--- a/lib/CodeGen/BackendUtil.cpp
+++ b/lib/CodeGen/BackendUtil.cpp
@@ -42,14 +42,14 @@
 
   Timer CodeGenerationTime;
 
-  mutable FunctionPassManager *CodeGenPasses;
+  mutable PassManager *CodeGenPasses;
   mutable PassManager *PerModulePasses;
   mutable FunctionPassManager *PerFunctionPasses;
 
 private:
-  FunctionPassManager *getCodeGenPasses() const {
+  PassManager *getCodeGenPasses() const {
     if (!CodeGenPasses) {
-      CodeGenPasses = new FunctionPassManager(TheModule);
+      CodeGenPasses = new PassManager();
       CodeGenPasses->add(new TargetData(TheModule));
     }
     return CodeGenPasses;
@@ -248,7 +248,7 @@
     TM->setMCRelaxAll(true);
 
   // Create the code generator passes.
-  FunctionPassManager *PM = getCodeGenPasses();
+  PassManager *PM = getCodeGenPasses();
   CodeGenOpt::Level OptLevel = CodeGenOpt::Default;
 
   switch (CodeGenOpts.OptimizationLevel) {
@@ -320,13 +320,7 @@
 
   if (CodeGenPasses) {
     PrettyStackTraceString CrashInfo("Code generation");
-
-    CodeGenPasses->doInitialization();
-    for (Module::iterator I = TheModule->begin(),
-           E = TheModule->end(); I != E; ++I)
-      if (!I->isDeclaration())
-        CodeGenPasses->run(*I);
-    CodeGenPasses->doFinalization();
+    CodeGenPasses->run(*TheModule);
   }
 }
 
