From 13d2beb14d0eceb9421bf3a8f4ea761e6afcef09 Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Thu, 31 Aug 2017 18:27:47 +0000 Subject: [ObjCARC] Pass the correct BasicBlock to fix assertion failure. The BasicBlock passed to FindPredecessorRetainWithSafePath should be the parent block of Autorelease. This fixes a crash that occurs in FindDependencies when StartInst is not in StartBB. rdar://problem/33866381 llvm-svn: 312266 --- llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'llvm/lib/Transforms') diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp b/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp index 8f3a33f66c7..8c0a90843ef 100644 --- a/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp +++ b/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp @@ -2027,7 +2027,8 @@ void ObjCARCOpt::OptimizeReturns(Function &F) { continue; CallInst *Retain = FindPredecessorRetainWithSafePath( - Arg, &BB, Autorelease, DependingInstructions, Visited, PA); + Arg, Autorelease->getParent(), Autorelease, DependingInstructions, + Visited, PA); DependingInstructions.clear(); Visited.clear(); -- cgit v1.2.3