diff options
author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2015-10-16 01:00:47 +0000 |
---|---|---|
committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2015-10-16 01:00:47 +0000 |
commit | 37e87c2023821ded5c35096d794bbb55c9cc5899 (patch) | |
tree | dea4ff599d2a428ec335eb4948a800cbe3d5ca8b /llvm/lib/Transforms/Utils | |
parent | 472840a3d38cb4f2f2c4d59618e9fd7a6adcc9eb (diff) | |
download | bcm5719-llvm-37e87c2023821ded5c35096d794bbb55c9cc5899.tar.gz bcm5719-llvm-37e87c2023821ded5c35096d794bbb55c9cc5899.zip |
[IndVars] Have `cloneArithmeticIVUser` guess better
Summary:
`cloneArithmeticIVUser` currently trips over expression like `add %iv,
-1` when `%iv` is being zero extended -- it tries to construct the
widened use as `add %iv.zext, zext(-1)` and (correctly) fails to prove
equivalence to `zext(add %iv, -1)` (here the SCEV for `%iv` is
`{1,+,1}`).
This change teaches `IndVars` to try sign extending the non-IV operand
if that makes the newly constructed IV use equivalent to the widened
narrow IV use.
Reviewers: atrick, hfinkel, reames
Subscribers: sanjoy, llvm-commits
Differential Revision: http://reviews.llvm.org/D13717
llvm-svn: 250483
Diffstat (limited to 'llvm/lib/Transforms/Utils')
0 files changed, 0 insertions, 0 deletions