[llvm-commits] [PATCH] Add APInt(numBits, ArrayRef<uint64_t> bigVal) constructor (issue4749046)
Eli Friedman
eli.friedman at gmail.com
Mon Jul 18 11:33:16 PDT 2011
On Mon, Jul 18, 2011 at 9:57 AM, Jeffrey Yasskin <jyasskin at google.com> wrote:
> Here's the patch.
>
> On Sat, Jul 16, 2011 at 10:51 PM, <jyasskin at gmail.com> wrote:
>> Reviewers: eli.friedman_gmail.com,
>>
>> Message:
>> Initial diff at
>> http://codereview.appspot.com/download/issue4749046_1.diff
>>
>> Description:
>> Add APInt(numBits, ArrayRef<uint64_t> bigVal) constructor to prevent
>> future ambiguity errors like the one corrected by r135261. Migrate all
>> LLVM callers of the old constructor to the new one.
>>
>>
>> Please review this at http://codereview.appspot.com/4749046/
>>
>> Affected files:
>> M include/llvm/ADT/APInt.h
>> M lib/AsmParser/LLLexer.cpp
>> M lib/Bitcode/Reader/BitcodeReader.cpp
>> M lib/CodeGen/SelectionDAG/FastISel.cpp
>> M lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
>> M lib/CodeGen/SelectionDAG/SelectionDAG.cpp
>> M lib/ExecutionEngine/ExecutionEngine.cpp
>> M lib/Support/APFloat.cpp
>> M lib/Support/APInt.cpp
>> M lib/VMCore/ConstantFold.cpp
>> M lib/VMCore/Core.cpp
>> M unittests/ADT/APIntTest.cpp
@@ -342,7 +353,8 @@ public:
if (isSingleWord())
return isUIntN(N, VAL);
- return APInt(N, getNumWords(), pVal).zext(getBitWidth()) == (*this);
+ return APInt(N, ArrayRef<uint64_t>(pVal,
getNumWords())).zext(getBitWidth())
+ == (*this);
}
/// @brief Check if this APInt has an N-bits signed integer value.
makeArrayRef just landed; use it. :) Same in a couple other places.
Otherwise, looks fine.
As a followup, could you eliminate both the "APInt(unsigned numBits,
unsigned numWords, const uint64_t bigVal[])" and the "APInt(unsigned
numBits, uint64_t val, bool isSigned = false)" constructors? (It
should just require ArrayRef-izing and adding an
"APInt::getSigned(unsigned numBits, uint64_t val)" helper.)
-Eli
More information about the llvm-commits
mailing list