Kill ModuleProvider and ghost linkage by inverting the relationship between
[oota-llvm.git] / tools / opt / opt.cpp
index f7fd5c02b55e5ef5bd71d54d9c68b7788f25e1c8..520018005f12f535a5f8f7fef21e295be7dcac14 100644 (file)
@@ -14,7 +14,6 @@
 
 #include "llvm/LLVMContext.h"
 #include "llvm/Module.h"
-#include "llvm/ModuleProvider.h"
 #include "llvm/PassManager.h"
 #include "llvm/CallGraphSCCPass.h"
 #include "llvm/Bitcode/ReaderWriter.h"
@@ -427,7 +426,7 @@ int main(int argc, char **argv) {
 
   FunctionPassManager *FPasses = NULL;
   if (OptLevelO1 || OptLevelO2 || OptLevelO3) {
-    FPasses = new FunctionPassManager(new ExistingModuleProvider(M.get()));
+    FPasses = new FunctionPassManager(M.get());
     if (TD)
       FPasses->add(new TargetData(*TD));
   }
@@ -479,16 +478,23 @@ int main(int argc, char **argv) {
       addPass(Passes, P);
 
       if (AnalyzeOnly) {
-        if (dynamic_cast<BasicBlockPass*>(P))
+        switch (P->getPassKind()) {
+        case PT_BasicBlock:
           Passes.add(new BasicBlockPassPrinter(PassInf));
-        else if (dynamic_cast<LoopPass*>(P))
+          break;
+        case PT_Loop:
           Passes.add(new LoopPassPrinter(PassInf));
-        else if (dynamic_cast<FunctionPass*>(P))
+          break;
+        case PT_Function:
           Passes.add(new FunctionPassPrinter(PassInf));
-        else if (dynamic_cast<CallGraphSCCPass*>(P))
+          break;
+        case PT_CallGraphSCC:
           Passes.add(new CallGraphSCCPassPrinter(PassInf));
-        else
+          break;
+        default:
           Passes.add(new ModulePassPrinter(PassInf));
+          break;
+        }
       }
     }