llvm-6502/lib/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
..
Hello [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-05 09:10:37 +00:00
InstCombine Recognize test for overflow in integer multiplication. 2014-04-13 18:23:41 +00:00
Instrumentation Implement depth_first and inverse_depth_first range factory functions. 2014-04-11 01:50:01 +00:00
IPO Add support for optimization reports. 2014-04-08 16:42:34 +00:00
ObjCARC Fix use_iterator crash in ObjCArc from r203364 2014-03-18 22:32:43 +00:00
Scalar Implement depth_first and inverse_depth_first range factory functions. 2014-04-11 01:50:01 +00:00
Utils Implement depth_first and inverse_depth_first range factory functions. 2014-04-11 01:50:01 +00:00
Vectorize Reapply "SLPVectorizer: Ignore users that are insertelements we can reschedule them" 2014-04-10 13:41:35 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile