1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/test/Transforms
Jingyue Wu 200cc080ad [SeparateConstOffsetFromGEP] sext(a)+sext(b) => sext(a+b) when a+b can't sign-overflow.
Summary:
This patch implements my promised optimization to reunites certain sexts from
operands after we extract the constant offset. See the header comment of
reuniteExts for its motivation.

One key building block that enables this optimization is Bjarke's poison value
analysis (D11212). That helps to prove "a +nsw b" can't overflow.

Reviewers: broune

Subscribers: jholewinski, sanjoy, llvm-commits

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

llvm-svn: 245003
2015-08-14 02:02:05 +00:00
..
ADCE Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
AddDiscriminators DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
AlignmentFromAssumptions
ArgumentPromotion DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
AtomicExpand Fix an alignment error in llvm::expandAtomicRMWToCmpXchg without breaking the build where X86 isn't enabled. 2015-08-06 16:55:03 +00:00
BBVectorize Changed renaming of local symbols by inserting a dot vefore the numeric suffix. 2015-05-12 16:47:30 +00:00
BDCE Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
BranchFolding Address post-commit review from r243378. 2015-08-11 00:20:24 +00:00
CodeExtractor Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
CodeGenPrepare AMDGPU: Fix some places missed in rename 2015-06-19 17:39:03 +00:00
ConstantHoisting
ConstantMerge
ConstProp Fix assert when inlining a constantexpr addrspacecast 2015-07-27 18:31:03 +00:00
CorrelatedValuePropagation [CVP] Don't assume Constants of type i1 can be known to be true or false 2015-06-06 04:56:51 +00:00
DeadArgElim DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
DeadStoreElimination [DeadStoreElimination] remove a redundant store even if the load is in a different block. 2015-08-13 15:36:11 +00:00
EarlyCSE Correct a mistaken comment from 238071 [NFC] 2015-05-23 00:05:43 +00:00
EliminateAvailableExternally Don't change the visibility when converting a definition to a declaration. 2015-07-13 14:18:22 +00:00
Float2Int
FunctionAttrs Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
GCOVProfiling DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
GlobalDCE
GlobalOpt DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
GVN [PHITransAddr] Don't assume that instruction operands are translatable 2015-08-09 15:43:02 +00:00
IndVarSimplify [IndVars] Fix PR24356. 2015-08-06 20:43:41 +00:00
Inline Emit argmemonly attribute for intrinsics. 2015-08-13 17:40:04 +00:00
InstCombine [SimplifyLibCalls] Correctly set the is_zero_undef flag for llvm.cttz 2015-08-13 20:34:26 +00:00
InstMerge
InstSimplify Fix a bunch of trivial cases of 'CHECK[^:]*$' in the tests. NFCI 2015-08-10 19:01:27 +00:00
Internalize Internalize: internalize comdat members as a group, and drop comdat on such members. 2015-07-16 17:42:21 +00:00
IPConstantProp Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
IRCE
JumpThreading Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
LCSSA Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
LICM DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
LoadCombine
LoopDeletion
LoopDistribute [LoopDist] Add test for missing coverage 2015-08-12 00:21:59 +00:00
LoopIdiom DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
LoopInterchange
LoopReroll Handle loop with negtive induction variable increment 2015-07-24 22:01:49 +00:00
LoopRotate DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
LoopSimplify [LoopSimplify] Set proper debug location in loop backedge blocks. 2015-06-29 21:30:14 +00:00
LoopStrengthReduce Revert "[LSR] Generate and use zero extends" 2015-08-04 01:52:05 +00:00
LoopUnroll Add new llvm.loop.unroll.enable metadata. 2015-08-10 17:28:08 +00:00
LoopUnswitch [LoopUnswitch] Preserve make.implicit metadata for unswitched conditions 2015-08-05 21:13:26 +00:00
LoopVectorize fix minsize detection: minsize attribute implies optimizing for size 2015-08-11 15:56:31 +00:00
LowerAtomic
LowerBitSets LowerBitSets: Ignore bitset entries that do not directly refer to a global. 2015-06-27 00:17:51 +00:00
LowerExpectIntrinsic
LowerInvoke Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
LowerSwitch [LowerSwitch] Fix a bug when LowerSwitch deletes the default block 2015-08-11 18:12:26 +00:00
Mem2Reg DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
MemCpyOpt Emit argmemonly attribute for intrinsics. 2015-08-13 17:40:04 +00:00
MergeFunc Fix a bunch of trivial cases of 'CHECK[^:]*$' in the tests. NFCI 2015-08-10 19:01:27 +00:00
MetaRenamer
NaryReassociate [NaryReassociate] enhances nsw by leveraging @llvm.assume 2015-07-01 03:38:49 +00:00
ObjCARC Emit argmemonly attribute for intrinsics. 2015-08-13 17:40:04 +00:00
PartiallyInlineLibCalls
PhaseOrdering Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
PlaceSafepoints [Statepoints] Let patchable statepoints have a symbolic call target. 2015-07-28 23:50:30 +00:00
PruneEH [PruneEH] A naked, noinline function can return via InlineAsm 2015-06-27 07:52:53 +00:00
Reassociate Fix a bunch of trivial cases of 'CHECK[^:]*$' in the tests. NFCI 2015-08-10 19:01:27 +00:00
Reg2Mem Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
RewriteStatepointsForGC [RewriteStatepointsForGC] Avoid using unrelocated pointers after safepoints 2015-08-12 22:11:45 +00:00
SafeStack SafeStack: Create the unsafe stack pointer on demand. 2015-06-22 20:26:54 +00:00
SampleProfile DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
Scalarizer Prevent the scalarizer from caching incorrect entries 2015-08-10 14:48:47 +00:00
ScalarRepl DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
SCCP [ConstantFolding] Support folding loads from a GlobalAlias 2015-07-22 22:29:30 +00:00
SeparateConstOffsetFromGEP [SeparateConstOffsetFromGEP] sext(a)+sext(b) => sext(a+b) when a+b can't sign-overflow. 2015-08-14 02:02:05 +00:00
SimplifyCFG [ConstantFoldTerminator] Preserve make.implicit metadata when converting SwitchInst to BranchInst 2015-08-07 19:30:12 +00:00
Sink Teach the IR Sink pass to (conservatively) respect convergent annotations. 2015-06-01 17:20:31 +00:00
SLPVectorizer DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
SpeculativeExecution Add a speculative execution pass 2015-05-15 17:54:48 +00:00
SROA [SROA] Fix a nasty pile of bugs to do with big-endian, different alloca 2015-07-22 03:32:42 +00:00
StraightLineStrengthReduce [SeparateConstOffsetFromGEP] strengthen the inbounds attribute 2015-08-13 18:48:49 +00:00
StripSymbols DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
StructurizeCFG
TailCallElim Fix a bunch of trivial cases of 'CHECK[^:]*$' in the tests. NFCI 2015-08-10 19:01:27 +00:00
TailDup
Util Changed renaming of local symbols by inserting a dot vefore the numeric suffix. 2015-05-12 16:47:30 +00:00