Add handling for range metadata in ValueTracking isKnownNonZero
authorPhilip Reames <listmail@philipreames.com>
Thu, 30 Oct 2014 20:25:19 +0000 (20:25 +0000)
committerPhilip Reames <listmail@philipreames.com>
Thu, 30 Oct 2014 20:25:19 +0000 (20:25 +0000)
commit4cb4d3e0480addb5fff0356afdb455add1c90066
treec185a67fe71ee64ffaf1102f87bd4a28af56c6af
parentf9a94abd4e3eab4efc6f8479954b9eb885e850e7
Add handling for range metadata in ValueTracking isKnownNonZero

If we load from a location with range metadata, we can use information about the ranges of the loaded value for optimization purposes.  This helps to remove redundant checks and canonicalize checks for other optimization passes.  This particular patch checks whether a value is known to be non-zero from the range metadata.

Currently, these tests are against InstCombine.  In theory, all of these should be InstSimplify since we're not inserting any new instructions.  Moving the code may follow in a separate change.

Reviewed by: Hal
Differential Revision: http://reviews.llvm.org/D5947

llvm-svn: 220925
llvm/lib/Analysis/ValueTracking.cpp
llvm/test/Transforms/InstCombine/icmp-range.ll [new file with mode: 0644]