Author: hans Date: Tue Jan 17 22:56:54 2017 New Revision: 292340 URL: http://llvm.org/viewvc/llvm-project?rev=292340&view=rev Log: Merging r291966: ------------------------------------------------------------------------ r291966 | majnemer | 2017-01-13 14:24:27 -0800 (Fri, 13 Jan 2017) | 6 lines
[LoopStrengthReduce] Don't bother rewriting PHIs in catchswitch blocks The catchswitch instruction cannot be split, don't bother trying to rewrite it. This fixes PR31627. ------------------------------------------------------------------------ Added: llvm/branches/release_40/test/Transforms/LoopStrengthReduce/pr31627.ll - copied unchanged from r291966, llvm/trunk/test/Transforms/LoopStrengthReduce/pr31627.ll Modified: llvm/branches/release_40/ (props changed) llvm/branches/release_40/lib/Transforms/Scalar/LoopStrengthReduce.cpp Propchange: llvm/branches/release_40/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Jan 17 22:56:54 2017 @@ -1,3 +1,3 @@ /llvm/branches/Apple/Pertwee:110850,110961 /llvm/branches/type-system-rewrite:133420-134817 -/llvm/trunk:155241,291863,291875,291968,291979,292133,292242,292255 +/llvm/trunk:155241,291863,291875,291966,291968,291979,292133,292242,292255 Modified: llvm/branches/release_40/lib/Transforms/Scalar/LoopStrengthReduce.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Transforms/Scalar/LoopStrengthReduce.cpp?rev=292340&r1=292339&r2=292340&view=diff ============================================================================== --- llvm/branches/release_40/lib/Transforms/Scalar/LoopStrengthReduce.cpp (original) +++ llvm/branches/release_40/lib/Transforms/Scalar/LoopStrengthReduce.cpp Tue Jan 17 22:56:54 2017 @@ -3163,6 +3163,9 @@ LSRInstance::CollectLoopInvariantFixupsA // Don't bother if the instruction is in a BB which ends in an EHPad. if (UseBB->getTerminator()->isEHPad()) continue; + // Don't bother rewriting PHIs in catchswitch blocks. + if (isa<CatchSwitchInst>(UserInst->getParent()->getTerminator())) + continue; // Ignore uses which are part of other SCEV expressions, to avoid // analyzing them multiple times. if (SE.isSCEVable(UserInst->getType())) { @@ -4672,7 +4675,8 @@ void LSRInstance::RewriteForPHI(PHINode // is the canonical backedge for this loop, which complicates post-inc // users. if (e != 1 && BB->getTerminator()->getNumSuccessors() > 1 && - !isa<IndirectBrInst>(BB->getTerminator())) { + !isa<IndirectBrInst>(BB->getTerminator()) && + !isa<CatchSwitchInst>(BB->getTerminator())) { BasicBlock *Parent = PN->getParent(); Loop *PNLoop = LI.getLoopFor(Parent); if (!PNLoop || Parent != PNLoop->getHeader()) { _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits