This is an archive of the discontinued LLVM Phabricator instance.

[ValueTracking] Introduce a version of computeKnownBits that returns a KnownBits struct. Begin using it to replace internal usages of ComputeSignBit
ClosedPublic

Authored by craig.topper on May 4 2017, 12:06 AM.

Details

Summary

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.

Diff Detail

Repository
rL LLVM

Event Timeline

craig.topper created this revision.May 4 2017, 12:06 AM
RKSimon accepted this revision.May 8 2017, 6:09 AM

LGTM, although I don't know the exact rules regarding removal of existing methods

This revision is now accepted and ready to land.May 8 2017, 6:09 AM
This revision was automatically updated to reflect the committed changes.