llvm-6502/lib/Transforms/Scalar
David Majnemer 48e2671cb6 [Reassociate] Canonicalizing 'x [+-] (-Constant * y)' isn't always a win
Canonicalizing 'x [+-] (-Constant * y)' is not a win if we don't *know*
we will open up CSE opportunities.

If the multiply was 'nsw', then negating 'y' requires us to clear the
'nsw' flag.  If this is actually worth pursuing, it is probably more
appropriate to do so in GVN or EarlyCSE.

This fixes PR23675.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238397 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-28 06:16:39 +00:00
..
ADCE.cpp [ADCE] Don't indent inside an anonymous namespace 2015-02-16 18:08:00 +00:00
AlignmentFromAssumptions.cpp Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
BDCE.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
CMakeLists.txt Add a speculative execution pass 2015-05-15 17:54:48 +00:00
ConstantHoisting.cpp Re-sort includes with sort-includes.py and insert raw_ostream.h where it's used. 2015-03-23 19:32:43 +00:00
ConstantProp.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
CorrelatedValuePropagation.cpp CVP: Improve handling of Selects used as incoming PHI values 2015-05-12 22:31:47 +00:00
DCE.cpp
DeadStoreElimination.cpp [CallSite] Make construction from Value* (or Instruction*) explicit. 2015-04-10 14:50:08 +00:00
EarlyCSE.cpp Extend EarlyCSE to handle basic cases from JumpThreading and CVP 2015-05-22 23:53:24 +00:00
FlattenCFGPass.cpp
Float2Int.cpp Reapply r233175 and r233183: float2int. 2015-03-27 10:36:57 +00:00
GVN.cpp Extend EarlyCSE to handle basic cases from JumpThreading and CVP 2015-05-22 23:53:24 +00:00
InductiveRangeCheckElimination.cpp [IRCE] Fix how IRCE checks for no-sign-overflow. 2015-03-24 19:29:22 +00:00
IndVarSimplify.cpp indvars cruft: don't replace phi nodes for no reason. 2015-05-18 16:49:34 +00:00
JumpThreading.cpp [JumpThreading] Simplify comparisons when simplifying branches 2015-05-07 00:19:14 +00:00
LICM.cpp [LICM] Sinking doesn't involve the preheader 2015-05-22 02:14:05 +00:00
LLVMBuild.txt
LoadCombine.cpp Mark empty default constructors as =default if it makes the type POD 2015-04-11 18:57:14 +00:00
LoopDeletion.cpp
LoopDistribute.cpp [LoopDistribute] Remove a layer of pointer indirection. 2015-05-21 18:32:07 +00:00
LoopIdiomRecognize.cpp Simplify IRBuilder::CreateCall* by using ArrayRef+initializer_list/braced init only 2015-05-18 22:13:54 +00:00
LoopInstSimplify.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
LoopInterchange.cpp Fix LoopInterchange/reductions.ll test for debug builds 2015-04-24 17:39:16 +00:00
LoopRerollPass.cpp Re-sort includes with sort-includes.py and insert raw_ostream.h where it's used. 2015-03-23 19:32:43 +00:00
LoopRotation.cpp Re-sort includes with sort-includes.py and insert raw_ostream.h where it's used. 2015-03-23 19:32:43 +00:00
LoopStrengthReduce.cpp Use range-based for loops. NFC. 2015-05-25 20:01:18 +00:00
LoopUnrollPass.cpp [Unroll] Switch from an eagerly populated SCEV cache to one that is 2015-05-25 01:00:46 +00:00
LoopUnswitch.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
LowerAtomic.cpp
LowerExpectIntrinsic.cpp [PM] Port LowerExpectIntrinsic to the new pass manager. 2015-01-24 11:13:02 +00:00
Makefile
MemCpyOptimizer.cpp [MemCpyOpt] Do move the memset, but look at its dest's dependencies. 2015-05-21 01:43:39 +00:00
MergedLoadStoreMotion.cpp MergedLoadStoreMotion preserves MemoryDependenceAnalysis, it does not require it. 2015-05-22 00:13:05 +00:00
NaryReassociate.cpp [NaryReassociate] Run EarlyCSE after NaryReassociate 2015-05-28 04:56:52 +00:00
PartiallyInlineLibCalls.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
PlaceSafepoints.cpp [PlaceSafepoints] Entry safepoint location doesn't need to be a terminator 2015-05-26 21:16:42 +00:00
Reassociate.cpp [Reassociate] Canonicalizing 'x [+-] (-Constant * y)' isn't always a win 2015-05-28 06:16:39 +00:00
Reg2Mem.cpp
RewriteStatepointsForGC.cpp Reformat. 2015-05-25 01:43:34 +00:00
SampleProfile.cpp Add function entry counts from sample profiles. 2015-05-13 17:04:29 +00:00
Scalar.cpp Add a speculative execution pass 2015-05-15 17:54:48 +00:00
Scalarizer.cpp [opaque pointer type] More GEP IRBuilder API migrations 2015-04-03 23:03:54 +00:00
ScalarReplAggregates.cpp Change LoadAndStorePromoter to take ArrayRef instead of SmallVectorImpl&. 2015-05-13 01:12:16 +00:00
SCCP.cpp [opaque pointer type] API migration for GEP constant factories 2015-04-02 18:55:32 +00:00
SeparateConstOffsetFromGEP.cpp [ValueTracking] refactor: extract method haveNoCommonBitsSet 2015-05-14 23:53:19 +00:00
SimplifyCFGPass.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
Sink.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
SpeculativeExecution.cpp [Speculation] NFC: more header comments 2015-05-19 20:52:45 +00:00
SROA.cpp Construct ArrayRef<const T*> from vector<T> 2015-05-13 22:43:09 +00:00
StraightLineStrengthReduce.cpp [ScalarEvolution] refactor: extract interface getGEPExpr 2015-05-18 17:03:25 +00:00
StructurizeCFG.cpp Change range-based for-loops to be -Wrange-loop-analysis clean. 2015-04-15 01:21:15 +00:00
TailRecursionElimination.cpp Re-sort includes with sort-includes.py and insert raw_ostream.h where it's used. 2015-03-23 19:32:43 +00:00