OSDN Git Service

[SCEV] See through op.with.overflow intrinsics (re-apply)
authorSanjoy Das <sanjoy@playingwithpointers.com>
Sun, 29 May 2016 00:34:42 +0000 (00:34 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Sun, 29 May 2016 00:34:42 +0000 (00:34 +0000)
commit09cfc1ebb1352608bc2c62840e0b238d1f5fbbc3
tree9870b315cfcefa976c4f8286afa20b6d77c661df
parent11ed8edc198ce69ede38baeb6b11b1efea752db6
[SCEV] See through op.with.overflow intrinsics (re-apply)

Summary:
This change teaches SCEV to see reduce `(extractvalue
0 (op.with.overflow X Y))` into `op X Y` (with a no-wrap tag if
possible).

This was first checked in at r265912 but reverted in r265950 because it
exposed some issues around how SCEV handled post-inc add recurrences.
Those issues have now been fixed.

Reviewers: atrick, regehr

Subscribers: mcrosier, mzolotukhin, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271152 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/ValueTracking.h
lib/Analysis/ScalarEvolution.cpp
lib/Analysis/ValueTracking.cpp
test/Analysis/ScalarEvolution/overflow-intrinsics.ll [new file with mode: 0644]