1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 11:33:24 +02:00

[APInt] Move operator=(uint64_t) inline as its pretty simple and is often used with small constants that the compiler can optimize.

While there recognize that we only need to clearUnusedBits on the single word case.

llvm-svn: 298881
This commit is contained in:
Craig Topper 2017-03-27 20:07:31 +00:00
parent 675af18292
commit 6146e01ab1
2 changed files with 10 additions and 11 deletions

View File

@ -676,7 +676,16 @@ public:
/// than 64, the value is zero filled in the unspecified high order bits.
///
/// \returns *this after assignment of RHS value.
APInt &operator=(uint64_t RHS);
APInt &operator=(uint64_t RHS) {
if (isSingleWord()) {
VAL = RHS;
clearUnusedBits();
} else {
pVal[0] = RHS;
memset(pVal+1, 0, (getNumWords() - 1) * APINT_WORD_SIZE);
}
return *this;
}
/// \brief Bitwise AND assignment operator.
///

View File

@ -157,16 +157,6 @@ APInt& APInt::AssignSlowCase(const APInt& RHS) {
return clearUnusedBits();
}
APInt& APInt::operator=(uint64_t RHS) {
if (isSingleWord())
VAL = RHS;
else {
pVal[0] = RHS;
memset(pVal+1, 0, (getNumWords() - 1) * APINT_WORD_SIZE);
}
return clearUnusedBits();
}
/// This method 'profiles' an APInt for use with FoldingSet.
void APInt::Profile(FoldingSetNodeID& ID) const {
ID.AddInteger(BitWidth);