diff --git a/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp b/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp --- a/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp +++ b/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp @@ -385,7 +385,7 @@ if (BasicBlock *UniquePred = RI->getParent()->getUniquePredecessor()) if (SwitchInst *SI = dyn_cast(UniquePred->getTerminator())) if (SI->getCondition() == V) - return SI->getDefaultDest() != RI->getParent(); + return SI->findCaseDest(RI->getParent()) != nullptr; // Not a constant or immutable argument, we can't safely transform. return false;