[NaryReassociate] enhances nsw by leveraging @llvm.assume
authorJingyue Wu <jingyue@google.com>
Wed, 1 Jul 2015 03:38:49 +0000 (03:38 +0000)
committerJingyue Wu <jingyue@google.com>
Wed, 1 Jul 2015 03:38:49 +0000 (03:38 +0000)
commit4015c5e2e49bbc3cc289afc48bc962df4fc257a9
tree282d8e2f481093177e37cf4fffad4a3ccc300fdb
parent60085fb9cd9a30653d78b5e717f06341e6e4e009
[NaryReassociate] enhances nsw by leveraging @llvm.assume

Summary:
nsw are flaky and can often be removed by optimizations. This patch enhances
nsw by leveraging @llvm.assume in the IR. Specifically, NaryReassociate now
understands that

    assume(a + b >= 0) && assume(a >= 0) ==> a +nsw b

As a result, it can split more sext(a + b) into sext(a) + sext(b) for CSE.

Test Plan: nary-gep.ll

Reviewers: broune, meheff

Subscribers: jholewinski, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241139 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/NaryReassociate.cpp
test/Transforms/NaryReassociate/NVPTX/nary-gep.ll