diff options
author | Craig Topper <craig.topper@intel.com> | 2017-10-21 16:35:39 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2017-10-21 16:35:39 +0000 |
commit | b98ee58511415ffce8400a9caf5ac89bcc5adb35 (patch) | |
tree | c486dc457214453e8dc4ba11a0726e5a83ae02d7 /llvm/lib/Analysis/ValueTracking.cpp | |
parent | c739affc439d57e18a57f0f2c4d113ffc492cb24 (diff) | |
download | llvm-b98ee58511415ffce8400a9caf5ac89bcc5adb35.zip llvm-b98ee58511415ffce8400a9caf5ac89bcc5adb35.tar.gz llvm-b98ee58511415ffce8400a9caf5ac89bcc5adb35.tar.bz2 |
[ValueTracking] Simplify the known bits code for constant vectors a little.
Neither of these cases really require a temporary APInt outside the loop. For the ConstantDataSequential case the APInt will never be larger than 64-bits so its fine to just call getElementAsAPInt. For ConstantVector we can get the APInt by reference and only make a copy where the inversion is needed.
llvm-svn: 316265
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 750e6bd..244bc7d 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -1507,9 +1507,8 @@ void computeKnownBits(const Value *V, KnownBits &Known, unsigned Depth, // We know that CDS must be a vector of integers. Take the intersection of // each element. Known.Zero.setAllBits(); Known.One.setAllBits(); - APInt Elt(BitWidth, 0); for (unsigned i = 0, e = CDS->getNumElements(); i != e; ++i) { - Elt = CDS->getElementAsInteger(i); + APInt Elt = CDS->getElementAsAPInt(i); Known.Zero &= ~Elt; Known.One &= Elt; } @@ -1520,7 +1519,6 @@ void computeKnownBits(const Value *V, KnownBits &Known, unsigned Depth, // We know that CV must be a vector of integers. Take the intersection of // each element. Known.Zero.setAllBits(); Known.One.setAllBits(); - APInt Elt(BitWidth, 0); for (unsigned i = 0, e = CV->getNumOperands(); i != e; ++i) { Constant *Element = CV->getAggregateElement(i); auto *ElementCI = dyn_cast_or_null<ConstantInt>(Element); @@ -1528,7 +1526,7 @@ void computeKnownBits(const Value *V, KnownBits &Known, unsigned Depth, Known.resetAll(); return; } - Elt = ElementCI->getValue(); + const APInt &Elt = ElementCI->getValue(); Known.Zero &= ~Elt; Known.One &= Elt; } |