llvm-6502/lib/Transforms/Scalar
Jingyue Wu 19eda5312a [ValueTracking] refactor: extract method haveNoCommonBitsSet
Summary:
Extract method haveNoCommonBitsSet so that we don't have to duplicate this logic in
InstCombine and SeparateConstOffsetFromGEP.

This patch also makes SeparateConstOffsetFromGEP more precise by passing
DominatorTree to computeKnownBits.

Test Plan: value-tracking-domtree.ll that tests ValueTracking indeed leverages dominating conditions

Reviewers: broune, meheff, majnemer

Reviewed By: majnemer

Subscribers: jholewinski, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237407 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-14 23:53:19 +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 New Loop Distribution pass 2015-05-14 12:05:18 +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 Re-sort includes with sort-includes.py and insert raw_ostream.h where it's used. 2015-03-23 19:32:43 +00:00
FlattenCFGPass.cpp
Float2Int.cpp Reapply r233175 and r233183: float2int. 2015-03-27 10:36:57 +00:00
GVN.cpp [opaque pointer type] API migration for GEP constant factories 2015-04-02 18:55:32 +00:00
InductiveRangeCheckElimination.cpp [IRCE] Fix how IRCE checks for no-sign-overflow. 2015-03-24 19:29:22 +00:00
IndVarSimplify.cpp [SCEV] Refactor out isHighCostExpansion. NFCI. 2015-04-14 03:20:28 +00:00
JumpThreading.cpp [JumpThreading] Simplify comparisons when simplifying branches 2015-05-07 00:19:14 +00:00
LICM.cpp Construct ArrayRef<const T*> from vector<T> 2015-05-13 22:43:09 +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 Attempt to fix MSVC bots 2015-05-14 12:33:32 +00:00
LoopIdiomRecognize.cpp Don't rely on implicit pointerness of 'auto'. 2015-05-14 21:52:12 +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 [LSR][NFC] Remove a stale comment. 2015-04-21 20:42:50 +00:00
LoopUnrollPass.cpp [Unrolling] Refactor the start and step offsets to simplify overflow 2015-05-12 23:32:56 +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
Makefile
MemCpyOptimizer.cpp [MemCpyOpt] Look at any dependency -not just source- for memset+memcpy. 2015-05-11 23:09:46 +00:00
MergedLoadStoreMotion.cpp Another set of missing raw_ostream.h. Still no functional change. 2015-03-23 18:45:56 +00:00
NaryReassociate.cpp [NaryReassociate] avoid running forever 2015-05-13 18:12:24 +00:00
PartiallyInlineLibCalls.cpp
PlaceSafepoints.cpp [PlaceSafepoints] New attributes for patchable statepoints. 2015-05-13 20:11:31 +00:00
Reassociate.cpp don't repeat function names in comments; NFC 2015-04-22 18:04:46 +00:00
Reg2Mem.cpp
RewriteStatepointsForGC.cpp [RewriteStatepointsForGC] Extend base pointer to handle more cases w/vectors 2015-05-12 22:19:52 +00:00
SampleProfile.cpp Add function entry counts from sample profiles. 2015-05-13 17:04:29 +00:00
Scalar.cpp New Loop Distribution pass 2015-05-14 12:05:18 +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
SROA.cpp Construct ArrayRef<const T*> from vector<T> 2015-05-13 22:43:09 +00:00
StraightLineStrengthReduce.cpp [SLSR] handles non-canonicalized Mul candidates 2015-05-13 00:03:17 +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