1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/lib/Transforms/Utils
Anna Thomas 5f5dc1a4be [BasicBlockUtils] Check for unreachable preds before updating LI in UpdateAnalysisInformation
Summary:
We are incorrectly updating the LI when loop-simplify generates
dedicated exit blocks for a loop. The issue is that there's an implicit
assumption that the Preds passed into UpdateAnalysisInformation are
reachable. However, this is not true and breaks LI by incorrectly
updating the header of a loop.

One such case is when we generate dedicated exits when the exit block is
a landing pad (through SplitLandingPadPredecessors). There maybe other
cases as well, since we do not guarantee that Preds passed in are
reachable basic blocks.

The added test case shows how loop-simplify breaks LI for the outer loop (and DT in turn)
after we try to generate the LoopSimplifyForm.

Reviewers: davide, chandlerc, sanjoy

Reviewed By: davide

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D41519

llvm-svn: 321653
2018-01-02 16:25:50 +00:00
..
AddDiscriminators.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-17 21:27:42 +00:00
ASanStackFrameLayout.cpp [asan] Add a full redzone after every stack variable 2017-11-18 01:13:18 +00:00
BasicBlockUtils.cpp [BasicBlockUtils] Check for unreachable preds before updating LI in UpdateAnalysisInformation 2018-01-02 16:25:50 +00:00
BreakCriticalEdges.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
BuildLibCalls.cpp Add argmononly attribute to strlen and wcslen, i.e. they only read memory (string) passed to them. 2017-06-18 03:10:26 +00:00
BypassSlowDivision.cpp [BypassSlowDivision] Improve our handling of divisions by constants 2017-12-04 19:21:58 +00:00
CallPromotionUtils.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
CloneFunction.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
CloneModule.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
CMakeLists.txt [PGO] Make indirect call promotion a utility 2017-12-06 21:22:54 +00:00
CodeExtractor.cpp [CodeExtractor] Add debug locations for new call and branch instrs. 2017-12-08 21:49:03 +00:00
CtorUtils.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
DemoteRegToStack.cpp
EntryExitInstrumenter.cpp EntryExitInstrumenter: set DebugLocs on the inserted call instructions (PR35412) 2017-11-28 18:44:26 +00:00
EscapeEnumerator.cpp
Evaluator.cpp Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
FlattenCFG.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-26 00:55:39 +00:00
FunctionComparator.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-11 21:41:43 +00:00
FunctionImportUtils.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
GlobalStatus.cpp
ImportedFunctionsInliningStatistics.cpp
InlineFunction.cpp [InlineFunction] Set debug loc for call to forward varargs. 2017-12-09 14:25:33 +00:00
InstructionNamer.cpp
IntegerDivision.cpp
LCSSA.cpp Mark all library options as hidden. 2017-12-01 00:53:10 +00:00
LibCallsShrinkWrap.cpp
LLVMBuild.txt
Local.cpp [Utils/Local] Use auto when the type is obvious. NFCI. 2017-12-31 16:51:50 +00:00
LoopSimplify.cpp Use a BumpPtrAllocator for Loop objects 2017-09-28 02:45:42 +00:00
LoopUnroll.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
LoopUnrollPeel.cpp Add hasProfileData() to check if a function has profile data. NFC. 2017-12-22 01:33:52 +00:00
LoopUnrollRuntime.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
LoopUtils.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
LoopVersioning.cpp
LowerInvoke.cpp
LowerMemIntrinsics.cpp [Memcpy Loop Lowering] Remove the fixed int8 lowering. 2017-12-18 15:31:14 +00:00
LowerSwitch.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-21 00:57:46 +00:00
Mem2Reg.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-26 00:55:39 +00:00
MetaRenamer.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-27 01:09:08 +00:00
ModuleUtils.cpp ModuleUtils: Stop using comdat members to generate unique module ids. 2017-10-05 21:54:53 +00:00
NameAnonGlobals.cpp
OrderedInstructions.cpp Remove unneeded else from OrderedInstructions::dominates. 2017-06-29 17:01:03 +00:00
PredicateInfo.cpp [PredicateInfo] Add comment about why we require stable sort 2017-11-17 00:43:24 +00:00
PromoteMemoryToRegister.cpp This reverts commit r319096 and r319097. 2017-11-28 01:25:38 +00:00
SanitizerStats.cpp
SimplifyCFG.cpp [SimplifyCFG] Return to the pass manager the correct value. 2017-12-31 16:54:03 +00:00
SimplifyIndVar.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
SimplifyInstructions.cpp Rename OptimizationDiagnosticInfo.* to OptimizationRemarkEmitter.* 2017-10-09 23:19:02 +00:00
SimplifyLibCalls.cpp [SimplifyLibCalls] Inline calls to cabs when it's safe to do so 2017-12-16 01:26:25 +00:00
SplitModule.cpp Fix more inconsistent line endings. NFC. 2017-12-18 19:46:56 +00:00
SSAUpdater.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
StripGCRelocates.cpp
StripNonLineTableDebugInfo.cpp
SymbolRewriter.cpp Mark all library options as hidden. 2017-12-01 00:53:10 +00:00
UnifyFunctionExitNodes.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
Utils.cpp
ValueMapper.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-26 00:55:39 +00:00
VNCoercion.cpp [IR] Make use of Type::isPtrOrPtrVectorTy/isIntOrIntVectorTy/isFPOrFPVectorTy to shorten code. NFC 2017-07-09 07:04:00 +00:00