teak-llvm/llvm/lib/Transforms/Utils
Serguei Katkov 66182d6c38 [SimplifyCFG] Re-apply Relax restriction for folding unconditional branches
The commit rL308422 introduces a restriction for folding unconditional
branches. Specifically if empty block with unconditional branch leads to
header of the loop then elimination of this basic block is prohibited.
However it seems this condition is redundantly strict.
If elimination of this basic block does not introduce more back edges
then we can eliminate this block.

The patch implements this relax of restriction.

The test profile/Linux/counter_promo_nest.c in compiler-rt project
is updated to meet this change.

Reviewers: efriedma, mcrosier, pacxx, hsung, davidxl	
Reviewed By: pacxx
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D42691

llvm-svn: 324572
2018-02-08 07:16:29 +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 Utils: Fix DomTree update for entry block 2018-01-31 22:54:37 +00:00
BreakCriticalEdges.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
BuildLibCalls.cpp [InstCombine] Missed optimization in math expression: sin(x) / cos(x) => tan(x) 2018-01-11 06:33:00 +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 Add a ProfileCount class to represent entry counts. 2018-01-17 22:24:23 +00:00
CtorUtils.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
DemoteRegToStack.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
EntryExitInstrumenter.cpp EntryExitInstrumenter: set DebugLocs on the inserted call instructions (PR35412) 2017-11-28 18:44:26 +00:00
EscapeEnumerator.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:13 +00:00
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 LTO: Include dso-local bit in ThinLTO cache key. 2018-02-05 17:17:51 +00:00
GlobalStatus.cpp [GlobalOpt] Fix exponential compile-time with selects. 2018-01-31 20:42:25 +00:00
ImportedFunctionsInliningStatistics.cpp
InlineFunction.cpp [InlineFunction] Update deprecated use of IRBuilder CreateMemCpy (NFC) 2018-02-06 19:14:31 +00:00
InstructionNamer.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
IntegerDivision.cpp
LCSSA.cpp Revert r323472 "[Debug] Add dbg.value intrinsics for PHIs created during LCSSA." 2018-02-05 16:10:42 +00:00
LibCallsShrinkWrap.cpp [LibCallsShrinkWrap] Remove an unnecessary class member variable. 2017-04-26 21:28:40 +00:00
LLVMBuild.txt
Local.cpp [Debug] LCSSA: Insert dbg.value at the first available insertion point 2018-01-25 23:48:29 +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 [NFC] fix trivial typos in comments 2018-01-19 10:55:29 +00:00
LoopUnrollRuntime.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
LoopUtils.cpp [LV] Use Demanded Bits and ValueTracking for reduction type-shrinking 2018-02-04 15:42:24 +00:00
LoopVersioning.cpp
LowerInvoke.cpp
LowerMemIntrinsics.cpp [LowerMemIntrinsics] Update uses of deprecated MemIntrinsic::getAlignment API (NFC) 2018-02-05 22:23:58 +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 Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SimplifyCFG.cpp [SimplifyCFG] Re-apply Relax restriction for folding unconditional branches 2018-02-08 07:16:29 +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] Update from deprecated IRBuilder API for creating memory intrinsics (NFC) 2018-02-05 21:23:22 +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 Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
StripNonLineTableDebugInfo.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
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 Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ValueMapper.cpp Teach ValueMapper to use ODR uniqued types when available 2018-01-30 20:16:32 +00:00
VNCoercion.cpp [IR] Make use of Type::isPtrOrPtrVectorTy/isIntOrIntVectorTy/isFPOrFPVectorTy to shorten code. NFC 2017-07-09 07:04:00 +00:00