From 382616f0dc1eaa3b693e1eb95f5546393fba3fe5 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Tue, 2 May 2017 05:49:40 +0000 Subject: [PATCH] [APInt] Move the setBit and clearBit methods inline. This makes setBit/clearBit more consistent with setBits which is already inlined. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301900 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/APInt.h | 18 ++++++++++++++++-- lib/Support/APInt.cpp | 16 ---------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/include/llvm/ADT/APInt.h b/include/llvm/ADT/APInt.h index 26d4bbcdb8d..dd12d51e7bd 100644 --- a/include/llvm/ADT/APInt.h +++ b/include/llvm/ADT/APInt.h @@ -1352,7 +1352,14 @@ public: /// \brief Set a given bit to 1. /// /// Set the given bit to 1 whose position is given as "bitPosition". - void setBit(unsigned bitPosition); + void setBit(unsigned BitPosition) { + assert(BitPosition <= BitWidth && "BitPosition out of range"); + WordType Mask = maskBit(BitPosition); + if (isSingleWord()) + VAL |= Mask; + else + pVal[whichWord(BitPosition)] |= Mask; + } /// Set the sign bit to 1. void setSignBit() { @@ -1404,7 +1411,14 @@ public: /// \brief Set a given bit to 0. /// /// Set the given bit to 0 whose position is given as "bitPosition". - void clearBit(unsigned bitPosition); + void clearBit(unsigned BitPosition) { + assert(BitPosition <= BitWidth && "BitPosition out of range"); + WordType Mask = ~maskBit(BitPosition); + if (isSingleWord()) + VAL &= Mask; + else + pVal[whichWord(BitPosition)] &= Mask; + } /// Set the sign bit to 0. void clearSignBit() { diff --git a/lib/Support/APInt.cpp b/lib/Support/APInt.cpp index 7103007d8ca..e01e6f5e79f 100644 --- a/lib/Support/APInt.cpp +++ b/lib/Support/APInt.cpp @@ -392,13 +392,6 @@ int APInt::compareSigned(const APInt& RHS) const { return tcCompare(pVal, RHS.pVal, getNumWords()); } -void APInt::setBit(unsigned bitPosition) { - if (isSingleWord()) - VAL |= maskBit(bitPosition); - else - pVal[whichWord(bitPosition)] |= maskBit(bitPosition); -} - void APInt::setBitsSlowCase(unsigned loBit, unsigned hiBit) { unsigned loWord = whichWord(loBit); unsigned hiWord = whichWord(hiBit); @@ -426,15 +419,6 @@ void APInt::setBitsSlowCase(unsigned loBit, unsigned hiBit) { pVal[word] = WORD_MAX; } -/// Set the given bit to 0 whose position is given as "bitPosition". -/// @brief Set a given bit to 0. -void APInt::clearBit(unsigned bitPosition) { - if (isSingleWord()) - VAL &= ~maskBit(bitPosition); - else - pVal[whichWord(bitPosition)] &= ~maskBit(bitPosition); -} - /// @brief Toggle every bit to its opposite value. void APInt::flipAllBitsSlowCase() { tcComplement(pVal, getNumWords()); -- 2.11.0