llvm-6502/test/Transforms
Sanjoy Das 8d16a81c33 Bugfix: SCEVExpander incorrectly marks increment operations as no-wrap
When emitting the increment operation, SCEVExpander marks the
operation as nuw or nsw based on the flags on the preincrement SCEV.
This is incorrect because, for instance, it is possible that {-6,+,1}
is <nuw> while {-6,+,1}+1 = {-5,+,1} is not.

This change teaches SCEV to mark the increment as nuw/nsw only if it
can explicitly prove that the increment operation won't overflow.

Apart from the attached test case, another (more realistic) manifestation
of the bug can be seen in Transforms/IndVarSimplify/pr20680.ll.

NOTE: this change was landed with an incorrect commit message in
rL230275 and was reverted for that reason in rL230279.  This commit
message is the correct one.

Differential Revision: http://reviews.llvm.org/D7778



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230280 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-23 23:22:58 +00:00
..
ADCE
AddDiscriminators
AlignmentFromAssumptions
ArgumentPromotion FileCheck-ize a test to make it easier to migrate to typeless pointers 2015-02-15 04:14:00 +00:00
AtomicExpand/ARM
BBVectorize
BDCE [BDCE] Don't forget uses of root instructions seen before the instruction itself 2015-02-18 03:12:28 +00:00
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantHoisting
ConstantMerge
ConstProp Avoid conversion to float when creating ConstantDataArray/ConstantDataVector. 2015-02-19 16:08:20 +00:00
CorrelatedValuePropagation
DeadArgElim DeadArgElim: aggregate Return assessment properly. 2015-02-11 23:13:11 +00:00
DeadStoreElimination
EarlyCSE EarlyCSE: Add check lines for test added in r228760 2015-02-10 23:11:02 +00:00
FunctionAttrs
GCOVProfiling
GlobalDCE
GlobalOpt
GVN Allow PRE to insert no-cost phi nodes 2015-02-03 20:37:08 +00:00
IndVarSimplify Bugfix: SCEVExpander incorrectly marks increment operations as no-wrap 2015-02-23 23:22:58 +00:00
Inline Fix a crash in the assumption cache when inlining indirect function calls 2015-02-12 21:04:22 +00:00
InstCombine [InstCombine] Remove unnecessary variable indexing into single-element arrays 2015-02-20 03:05:53 +00:00
InstMerge Minor fix after 229495. 2015-02-18 08:09:28 +00:00
InstSimplify InstSimplify: simplify 0 / X if nnan and nsz 2015-02-23 18:30:25 +00:00
Internalize
IPConstantProp
IRCE IRCE: use SCEVs instead of llvm::Value's for intermediate 2015-02-21 22:07:32 +00:00
JumpThreading Update a test to make it easier to migrate to untyped pointers 2015-02-15 04:13:58 +00:00
LCSSA Update a test to use FileCheck so it's easier to migrate to future typeless pointer changes 2015-02-15 04:13:57 +00:00
LICM Teach isDereferenceablePointer() to look through bitcast constant expressions. 2015-02-05 09:15:37 +00:00
LoadCombine
LoopDeletion
LoopIdiom
LoopReroll [LoopReroll] Relax some assumptions a little. 2015-02-16 17:02:00 +00:00
LoopRotate LoopRotate: When reconstructing loop simplify form don't split edges from indirectbrs. 2015-02-20 20:49:25 +00:00
LoopSimplify Teach SplitBlockPredecessors how to handle landingpad blocks. 2015-01-28 23:06:47 +00:00
LoopStrengthReduce Bugfix: SCEVExpander incorrectly marks increment operations as no-wrap 2015-02-23 23:22:58 +00:00
LoopUnroll Partial fix for bug 22589 2015-02-18 19:32:25 +00:00
LoopUnswitch
LoopVectorize [x86,sdag] Two interrelated changes to the x86 and sdag code. 2015-02-19 10:36:19 +00:00
LowerAtomic
LowerBitSets Introduce bitset metadata format and bitset lowering pass. 2015-02-20 20:30:47 +00:00
LowerExpectIntrinsic [PM] Port LowerExpectIntrinsic to the new pass manager. 2015-01-24 11:13:02 +00:00
LowerInvoke
LowerSwitch LowerSwitch: replace unreachable default with popular case destination 2015-01-23 20:43:51 +00:00
Mem2Reg
MemCpyOpt ValueTracking: Make isBytewiseValue simpler and more powerful at the same time. 2015-02-07 19:29:02 +00:00
MergeFunc
MetaRenamer
ObjCARC [objc-arc-contract] We can not move retains over instructions which can not conservatively be proven to not decrement the retain's RCIdentity. 2015-02-20 00:02:49 +00:00
PartiallyInlineLibCalls
PhaseOrdering
PlaceSafepoints [PlaceSafepoints] Adjust enablement logic to default to off and be GC configurable per GC 2015-02-21 00:09:09 +00:00
PruneEH Fix invalid LLVM IR in PruneEH tests 2015-02-11 02:06:47 +00:00
Reassociate Reassociate: cannot negate a INT_MIN value 2015-02-11 19:54:44 +00:00
Reg2Mem
RewriteStatepointsForGC Bugfix for 229954 2015-02-20 18:56:14 +00:00
SampleProfile
Scalarizer
ScalarRepl
SCCP
SeparateConstOffsetFromGEP/NVPTX
SimplifyCFG Prevent hoisting fmul from THEN/ELSE to IF if there is fmsub/fmadd opportunity. 2015-02-23 19:15:16 +00:00
Sink
SLPVectorizer [slp] Fix a nasty bug in the SLP vectorizer that Joerg pointed out. 2015-02-12 02:30:56 +00:00
SROA
StraightLineStrengthReduce Add straight-line strength reduction to LLVM 2015-02-03 19:37:06 +00:00
StripSymbols
StructurizeCFG StructurizeCFG: Use a reverse post-order traversal 2015-02-04 20:49:44 +00:00
TailCallElim
TailDup
Util Correctly combine alias.scope metadata by a union instead of intersecting 2015-02-08 17:07:14 +00:00