[PATCH] GVN: merge overflow intrinsics with non-overflow instructions.

Erik Verbruggen erik.verbruggen at me.com
Fri Feb 28 02:07:08 PST 2014


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.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-GVN-merge-overflow-intrinsics-with-non-overflow-inst.patch
Type: application/octet-stream
Size: 11794 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140228/3c5c5a76/attachment.obj>


More information about the llvm-commits mailing list