llvm-6502/lib/Transforms
Erik Verbruggen cf5240642b GVN: merge overflow intrinsics with non-overflow instructions.
When an overflow intrinsic is followed by a non-overflow instruction,
replace the latter with an extract. For example:

  %sadd = tail call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %a, i32 %b)
  %sadd3 = add i32 %a, %b

Here the add statement will be replaced by an extract.

When an overflow intrinsic follows a non-overflow instruction, a clone
of the intrinsic is inserted before the normal instruction, which makes
it the same as the previous case. Subsequent runs of GVN can then clean
up the duplicate instructions and insert the extract.

This fixes PR8817.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203553 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-11 09:36:48 +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 [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
Instrumentation Cleanup whitespace 2014-03-11 02:44:45 +00:00
IPO [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
ObjCARC [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
Scalar GVN: merge overflow intrinsics with non-overflow instructions. 2014-03-11 09:36:48 +00:00
Utils Follow up to r203488. Code clean up to eliminate a lot of copy+paste. 2014-03-11 00:24:20 +00:00
Vectorize Fix build break. 2014-03-09 03:50:36 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile