OSDN Git Service

[ValueTracking] Introduce a version of computeKnownBits that returns a KnownBits...
authorCraig Topper <craig.topper@gmail.com>
Mon, 8 May 2017 16:22:48 +0000 (16:22 +0000)
committerCraig Topper <craig.topper@gmail.com>
Mon, 8 May 2017 16:22:48 +0000 (16:22 +0000)
commit3f38291e28ed7ebdba43dbd18a02659ab3188bbb
tree421c69cfbe4ccf3ad4ead8436f7dd46a356dd497
parenta594399826721877114d9e003e70d094c485cf66
[ValueTracking] Introduce a version of computeKnownBits that returns a KnownBits struct. Begin using it to replace internal usages of ComputeSignBit

This introduces a new interface for computeKnownBits that returns the KnownBits object instead of requiring it to be pre-constructed and passed in by reference.

This is a much more convenient interface as it doesn't require the caller to figure out the BitWidth to pre-construct the object. It's so convenient that I believe we can use this interface to remove the special ComputeSignBit flavor of computeKnownBits.

As a step towards that idea, this patch replaces all of the internal usages of ComputeSignBit with this new interface. As you can see from the patch there were a couple places where we called ComputeSignBit which really called computeKnownBits, and then called computeKnownBits again directly. I've reduced those places to only making one call to computeKnownBits. I bet there are probably external users that do it too.

A future patch will update the external users and remove the ComputeSignBit interface. I'll also working on moving more locations to the KnownBits returning interface for computeKnownBits.

Differential Revision: https://reviews.llvm.org/D32848

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302437 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/ValueTracking.h
lib/Analysis/ValueTracking.cpp