Debug Info: Move DIEDwarfExpression into DwarfExpression.h because it
[oota-llvm.git] / lib / CodeGen / Passes.cpp
index 5c3c3f56c73f80445d6329f1581a8d90c5afbf3d..e53e874cb17828d0449f1e954256a1f3d43d464d 100644 (file)
@@ -314,9 +314,12 @@ void TargetPassConfig::addPass(Pass *P, bool verifyAfter, bool printAfter) {
   AnalysisID PassID = P->getPassID();
 
   if (Started && !Stopped) {
+    std::string Banner;
+    // Construct banner message before PM->add() as that may delete the pass.
+    if (AddingMachinePasses && (printAfter || verifyAfter))
+      Banner = std::string("After ") + std::string(P->getPassName());
     PM->add(P);
     if (AddingMachinePasses) {
-      std::string Banner = std::string("After ")+std::string(P->getPassName());
       if (printAfter)
         addPrintPass(Banner);
       if (verifyAfter)
@@ -448,6 +451,7 @@ void TargetPassConfig::addPassesToHandleExceptions() {
   case ExceptionHandling::ItaniumWinEH:
     addPass(createDwarfEHPass(TM));
     break;
+  case ExceptionHandling::MSVC: // FIXME: Add preparation.
   case ExceptionHandling::None:
     addPass(createLowerInvokePass());
 
@@ -517,7 +521,7 @@ void TargetPassConfig::addMachinePasses() {
            .equals("option-unspecified")) {
     const PassRegistry *PR = PassRegistry::getPassRegistry();
     const PassInfo *TPI = PR->getPassInfo(PrintMachineInstrs.getValue());
-    const PassInfo *IPI = PR->getPassInfo(StringRef("print-machineinstrs"));
+    const PassInfo *IPI = PR->getPassInfo(StringRef("machineinstr-printer"));
     assert (TPI && IPI && "Pass ID not registered!");
     const char *TID = (const char *)(TPI->getTypeInfo());
     const char *IID = (const char *)(IPI->getTypeInfo());