diff options
author | Fedor Sergeev <fedor.sergeev@azul.com> | 2018-12-11 19:05:35 +0000 |
---|---|---|
committer | Fedor Sergeev <fedor.sergeev@azul.com> | 2018-12-11 19:05:35 +0000 |
commit | a1d95c3fc426f1fc54758866d8a0e8718a82a745 (patch) | |
tree | b74bc92ef0ca2ebbd6bee333fde390a3c362635c /llvm/lib/Transforms/Scalar/LoopPassManager.cpp | |
parent | 8876dac50aafa5a265c1fb1a9d4e38f97b83dfb6 (diff) | |
download | bcm5719-llvm-a1d95c3fc426f1fc54758866d8a0e8718a82a745.tar.gz bcm5719-llvm-a1d95c3fc426f1fc54758866d8a0e8718a82a745.zip |
[NewPM] fixing asserts on deleted loop in -print-after-all
IR-printing AfterPass instrumentation might be called on a loop
that has just been invalidated. We should skip printing it to
avoid spurious asserts.
Reviewed By: chandlerc, philip.pfaffe
Differential Revision: https://reviews.llvm.org/D54740
llvm-svn: 348887
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LoopPassManager.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/LoopPassManager.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopPassManager.cpp b/llvm/lib/Transforms/Scalar/LoopPassManager.cpp index 6759bd2537c..774ad7b945a 100644 --- a/llvm/lib/Transforms/Scalar/LoopPassManager.cpp +++ b/llvm/lib/Transforms/Scalar/LoopPassManager.cpp @@ -44,7 +44,11 @@ PassManager<Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, PreservedAnalyses PassPA = Pass->run(L, AM, AR, U); - PI.runAfterPass<Loop>(*Pass, L); + // do not pass deleted Loop into the instrumentation + if (U.skipCurrentLoop()) + PI.runAfterPassInvalidated<Loop>(*Pass); + else + PI.runAfterPass<Loop>(*Pass, L); // If the loop was deleted, abort the run and return to the outer walk. if (U.skipCurrentLoop()) { |