From a1d95c3fc426f1fc54758866d8a0e8718a82a745 Mon Sep 17 00:00:00 2001 From: Fedor Sergeev Date: Tue, 11 Dec 2018 19:05:35 +0000 Subject: [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 --- llvm/lib/Transforms/Scalar/LoopPassManager.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'llvm/lib/Transforms/Scalar/LoopPassManager.cpp') 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 @@ PassManagerrun(L, AM, AR, U); - PI.runAfterPass(*Pass, L); + // do not pass deleted Loop into the instrumentation + if (U.skipCurrentLoop()) + PI.runAfterPassInvalidated(*Pass); + else + PI.runAfterPass(*Pass, L); // If the loop was deleted, abort the run and return to the outer walk. if (U.skipCurrentLoop()) { -- cgit v1.2.3