llvm-6502/test/Transforms
Serge Pavlov ea0ea63773 Recognize test for overflow in integer multiplication.
If multiplication involves zero-extended arguments and the result is
compared as in the patterns:

    %mul32 = trunc i64 %mul64 to i32
    %zext = zext i32 %mul32 to i64
    %overflow = icmp ne i64 %mul64, %zext
or
    %overflow = icmp ugt i64 %mul64 , 0xffffffff

then the multiplication may be replaced by call to umul.with.overflow.
This change fixes PR4917 and PR4918.

Differential Revision: http://llvm-reviews.chandlerc.com/D2814


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206137 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-13 18:23:41 +00:00
..
ADCE
AddDiscriminators Pass to emit DWARF path discriminators. 2014-03-03 20:06:11 +00:00
ArgumentPromotion Update optimization passes to handle inalloca arguments 2014-01-28 02:38:36 +00:00
BBVectorize Change math intrinsic attributes from readonly to readnone. These 2014-03-06 00:18:15 +00:00
BranchFolding Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
CodeExtractor
CodeGenPrepare CodeGenPrep: sink extends of illegal types into use block. 2014-03-13 13:36:25 +00:00
ConstantHoisting [ARM64] Never hoist the shift value of a shift instruction. 2014-04-12 02:53:51 +00:00
ConstantMerge Remove the linker_private and linker_private_weak linkages. 2014-03-13 23:18:37 +00:00
ConstProp
CorrelatedValuePropagation
DeadArgElim IR: Change inalloca's grammar a bit 2014-03-09 06:41:58 +00:00
DeadStoreElimination Update optimization passes to handle inalloca arguments 2014-01-28 02:38:36 +00:00
DebugIR
EarlyCSE
FunctionAttrs Update optimization passes to handle inalloca arguments 2014-01-28 02:38:36 +00:00
GCOVProfiling Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
GlobalDCE
GlobalMerge ARM64: initial backend import 2014-03-29 10:18:08 +00:00
GlobalOpt Prevent alias from pointing to weak aliases. 2014-03-27 15:26:56 +00:00
GVN Revert "GVN: merge overflow intrinsics with non-overflow instructions." 2014-03-28 14:42:34 +00:00
IndVarSimplify [LPM] Fix PR18642, a pretty nasty bug in IndVars that "never mattered" 2014-01-29 04:40:19 +00:00
Inline Handle vlas during inline cost computation if they'll be turned 2014-04-07 13:36:21 +00:00
InstCombine Recognize test for overflow in integer multiplication. 2014-04-13 18:23:41 +00:00
InstSimplify InstSimplify: Make shift, select and GEP simplifications vector-aware. 2014-01-24 17:09:53 +00:00
Internalize Correct word hyphenations 2013-12-05 05:44:44 +00:00
IPConstantProp
JumpThreading
LCSSA
LICM [LPM] Switch LICM to actively use LCSSA in addition to preserving it. 2014-02-11 12:52:27 +00:00
LoopDeletion
LoopIdiom Debug Info: update testing cases to specify the debug info version number. 2013-11-23 01:16:29 +00:00
LoopReroll Fix loop rerolling pass failure with non-consant loop lower bound 2014-01-03 17:20:01 +00:00
LoopRotate [LPM] Fix PR18643, another scary place where loop transforms failed to 2014-01-29 13:16:53 +00:00
LoopSimplify [LPM] Switch LICM to actively use LCSSA in addition to preserving it. 2014-02-11 12:52:27 +00:00
LoopStrengthReduce Add the ability to use GEPs for address sinking in CGP 2014-04-12 00:59:48 +00:00
LoopUnroll Implement X86TTI::getUnrollingPreferences 2014-04-01 18:50:34 +00:00
LoopUnswitch
LoopVectorize [LoopVectorizer] Count dependencies of consecutive pointers as uniforms 2014-04-02 02:34:49 +00:00
LowerAtomic IR: add a second ordering operand to cmpxhg for failure 2014-03-11 10:48:52 +00:00
LowerExpectIntrinsic Lower llvm.expect intrinsic correctly for i1 2014-02-02 22:43:55 +00:00
LowerInvoke Remove LowerInvoke's obsolete "-enable-correct-eh-support" option 2014-03-20 19:54:47 +00:00
LowerSwitch
Mem2Reg Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
MemCpyOpt Treat lifetime.start'd memory like we treat freshly alloca'd memory. Patch by Björn Steinbrink! 2014-03-26 23:45:15 +00:00
MergeFunc PR17925 bugfix. 2013-11-26 16:11:03 +00:00
MetaRenamer Reject alias to undefined symbols in the verifier. 2014-03-12 20:15:49 +00:00
ObjCARC Fix use_iterator crash in ObjCArc from r203364 2014-03-18 22:32:43 +00:00
PhaseOrdering
PruneEH
Reassociate
Reg2Mem
SampleProfile Tolerate unmangled names in sample profiles. 2014-03-18 12:03:12 +00:00
Scalarizer Fix Scalarizer insertion point when replacing PHIs with insertelements 2013-12-23 14:51:56 +00:00
ScalarRepl Fix PR18800. llvm intrinsic memcpy takes 5 arguments void @llvm.memcpy.p0i8.p0i8.i32(i8* <dest>, i8* <src>, i32 <len>, i32 <align>, i1 <isvolatile>).The test case incorrectly uses the old format resulting in isVolatile function in MemIntrinsic to crash during SROA transformation.Modified the test case to use correct signature of memcpy and memset. 2014-03-13 04:50:29 +00:00
SCCP
SimplifyCFG Allow switch-to-lookup table for tables with holes by adding bitmask check 2014-03-12 18:35:40 +00:00
Sink Sink: Don't sink static allocas from the entry block 2014-03-21 15:51:51 +00:00
SLPVectorizer Reapply "SLPVectorizer: Ignore users that are insertelements we can reschedule them" 2014-04-10 13:41:35 +00:00
SROA [SROA] Use the correct index integer size in GEPs through non-default 2014-02-26 10:08:16 +00:00
StripSymbols Add a debug info code generation level to the compile unit metadata 2014-02-27 01:24:56 +00:00
StructurizeCFG StructurizeCFG: Fix verification failure with some loops. 2013-11-22 19:24:39 +00:00
TailCallElim
TailDup