llvm-project/llvm/lib/Transforms/Utils
Max Kazantsev b9edcbcb1d Re-enable "[IndVars] Canonicalize comparisons between non-negative values and indvars"
The patch was reverted due to a bug. The bug was that if the IV is the 2nd operand of the icmp
instruction, then the "Pred" variable gets swapped and differs from the instruction's predicate.
In this patch we use the original predicate to do the transformation.

Also added a test case that exercises this situation.

Differentian Revision: https://reviews.llvm.org/D35107

llvm-svn: 307477
2017-07-08 17:17:30 +00:00
..
ASanStackFrameLayout.cpp [asan] Replace std::to_string with llvm::to_string 2016-10-19 00:16:56 +00:00
AddDiscriminators.cpp [AddDiscriminators] Assign discriminators to MemIntrinsic calls. 2017-04-11 19:07:30 +00:00
BasicBlockUtils.cpp Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
BreakCriticalEdges.cpp [PM] Port BreakCriticalEdges to the new PM. 2016-07-22 18:04:25 +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 [KnownBits] Add bit counting methods to KnownBits struct and use them where possible 2017-05-12 17:20:30 +00:00
CMakeLists.txt Add a dominanance check interface that uses caching for instructions within same basic block. 2017-06-06 02:34:41 +00:00
CloneFunction.cpp [cloning] Do not duplicate types when cloning functions 2017-07-07 18:24:20 +00:00
CloneModule.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
CmpInstAnalysis.cpp [Constants] If we already have a ConstantInt*, prefer to use isZero/isOne/isMinusOne instead of isNullValue/isOneValue/isAllOnesValue inherited from Constant. NFCI 2017-07-06 18:39:47 +00:00
CodeExtractor.cpp [CodeExtractor] Remove unneded and commented out debugging stmts. 2017-07-02 00:07:18 +00:00
CtorUtils.cpp [CtorUtils] Modernize. No functional changes intended. 2016-10-22 01:21:24 +00:00
DemoteRegToStack.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
EscapeEnumerator.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:13 +00:00
Evaluator.cpp [Constants] If we already have a ConstantInt*, prefer to use isZero/isOne/isMinusOne instead of isNullValue/isOneValue/isAllOnesValue inherited from Constant. NFCI 2017-07-06 18:39:47 +00:00
FlattenCFG.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
FunctionComparator.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
FunctionImportUtils.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
GlobalStatus.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ImportedFunctionsInliningStatistics.cpp [ThinLTO] Correct counting of functions in inliner stats 2017-03-24 17:59:06 +00:00
InlineFunction.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +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 [LCSSA] Don't insert tokens into the worklist at all. 2017-04-17 14:32:05 +00:00
LLVMBuild.txt
LibCallsShrinkWrap.cpp [LibCallsShrinkWrap] Remove an unnecessary class member variable. 2017-04-26 21:28:40 +00:00
Local.cpp [Local] Update the comment for removeUnreachableBlocks. 2017-07-07 18:54:14 +00:00
LoopSimplify.cpp [LoopSimplify] Re-instate r306081 with a bug fix w.r.t. indirectbr. 2017-06-25 22:45:31 +00:00
LoopUnroll.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
LoopUnrollPeel.cpp [LoopPeeling] Get rid of Phis that become invariant after N steps 2017-04-17 09:52:02 +00:00
LoopUnrollRuntime.cpp [LoopUnrollRuntime] Support multiple exit blocks unrolling when prolog remainder generated 2017-07-07 20:12:32 +00:00
LoopUtils.cpp [LV] Sink casts to unravel first order recurrence 2017-06-30 21:05:06 +00:00
LoopVersioning.cpp [LoopVersioning] Require loop-simplify form for loop versioning. 2016-12-19 17:13:37 +00:00
LowerInvoke.cpp [PM] Port LowerInvoke to the new pass manager 2016-08-12 17:28:27 +00:00
LowerMemIntrinsics.cpp Extend memcpy expansion in Transform/Utils to handle wider operand types. 2017-07-07 02:00:06 +00:00
LowerSwitch.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
Mem2Reg.cpp [Mem2Reg] Remove AliasSetTracker updating logic from the pass. 2017-04-09 20:47:14 +00:00
MetaRenamer.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ModuleUtils.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:13 +00:00
NameAnonGlobals.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
OrderedInstructions.cpp Remove unneeded else from OrderedInstructions::dominates. 2017-06-29 17:01:03 +00:00
PredicateInfo.cpp Remove useless header. NFC 2017-06-29 17:48:12 +00:00
PromoteMemoryToRegister.cpp Kill off the old SimplifyInstruction API by converting remaining users. 2017-04-28 19:55:38 +00:00
SSAUpdater.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SanitizerStats.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SimplifyCFG.cpp [SimplifyCFG] Move a portion of an if statement that should already be implied to an assert 2017-07-06 16:29:43 +00:00
SimplifyIndVar.cpp Re-enable "[IndVars] Canonicalize comparisons between non-negative values and indvars" 2017-07-08 17:17:30 +00:00
SimplifyInstructions.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SimplifyLibCalls.cpp [Constants] If we already have a ConstantInt*, prefer to use isZero/isOne/isMinusOne instead of isNullValue/isOneValue/isAllOnesValue inherited from Constant. NFCI 2017-07-06 18:39:47 +00:00
SplitModule.cpp
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 Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
UnifyFunctionExitNodes.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
Utils.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
VNCoercion.cpp [GVN] Fix a crash on encountering non-integral pointers 2017-05-09 21:07:20 +00:00
ValueMapper.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:13 +00:00