Avoid a dangling pointer dereference, PassManager::add can delete the Pass.
authorBenjamin Kramer <benny.kra@googlemail.com>
Thu, 18 Feb 2010 12:57:05 +0000 (12:57 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Thu, 18 Feb 2010 12:57:05 +0000 (12:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96576 91177308-0d34-0410-b5e6-96231b3b80d8

tools/opt/opt.cpp

index 520018005f12f535a5f8f7fef21e295be7dcac14..b123d54eeeaacfd05f3dd1e33a7b8c34dab5a48a 100644 (file)
@@ -475,10 +475,11 @@ int main(int argc, char **argv) {
       errs() << argv[0] << ": cannot create pass: "
              << PassInf->getPassName() << "\n";
     if (P) {
+      PassKind Kind = P->getPassKind();
       addPass(Passes, P);
 
       if (AnalyzeOnly) {
-        switch (P->getPassKind()) {
+        switch (Kind) {
         case PT_BasicBlock:
           Passes.add(new BasicBlockPassPrinter(PassInf));
           break;