[llvm] r264391 - Fix perfect forwarding for StringMap

Mehdi Amini via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 25 07:19:18 PDT 2016


Build failure on gcc bots. Not sure how to test?

Sent from my iPhone

> On Mar 25, 2016, at 7:09 AM, David Blaikie <dblaikie at gmail.com> wrote:
> 
> Test case?
> 
>> On Mar 25, 2016 12:16 AM, "Mehdi Amini via llvm-commits" <llvm-commits at lists.llvm.org> wrote:
>> Author: mehdi_amini
>> Date: Fri Mar 25 02:11:31 2016
>> New Revision: 264391
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=264391&view=rev
>> Log:
>> Fix perfect forwarding for StringMap
>> 
>> From: Mehdi Amini <mehdi.amini at apple.com>
>> 
>> Modified:
>>     llvm/trunk/include/llvm/ADT/StringMap.h
>> 
>> Modified: llvm/trunk/include/llvm/ADT/StringMap.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringMap.h?rev=264391&r1=264390&r2=264391&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/ADT/StringMap.h (original)
>> +++ llvm/trunk/include/llvm/ADT/StringMap.h Fri Mar 25 02:11:31 2016
>> @@ -123,9 +123,9 @@ public:
>> 
>>    explicit StringMapEntry(unsigned strLen)
>>      : StringMapEntryBase(strLen), second() {}
>> -  template <class InitTy>
>> -  StringMapEntry(unsigned strLen, InitTy &&V)
>> -      : StringMapEntryBase(strLen), second(std::forward<InitTy>(V)) {}
>> +  template <typename... InitTy>
>> +  StringMapEntry(unsigned strLen, InitTy &&... InitVals)
>> +      : StringMapEntryBase(strLen), second(std::forward<InitTy>(InitVals)...) {}
>> 
>>    StringRef getKey() const {
>>      return StringRef(getKeyData(), getKeyLength());
>> @@ -145,9 +145,9 @@ public:
>> 
>>    /// Create a StringMapEntry for the specified key construct the value using
>>    /// \p InitiVals.
>> -  template <typename AllocatorTy, typename... InitTypes>
>> +  template <typename AllocatorTy, typename... InitTy>
>>    static StringMapEntry *Create(StringRef Key, AllocatorTy &Allocator,
>> -                                InitTypes &&... InitVals) {
>> +                                InitTy &&... InitVals) {
>>      unsigned KeyLength = Key.size();
>> 
>>      // Allocate a new item with space for the string at the end and a null
>> @@ -160,8 +160,7 @@ public:
>>        static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
>> 
>>      // Construct the value.
>> -    new (NewItem)
>> -        StringMapEntry(KeyLength, std::forward<InitTypes>(InitVals)...);
>> +    new (NewItem) StringMapEntry(KeyLength, std::forward<InitTy>(InitVals)...);
>> 
>>      // Copy the string information.
>>      char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
>> @@ -172,10 +171,10 @@ public:
>>    }
>> 
>>    /// Create - Create a StringMapEntry with normal malloc/free.
>> -  template<typename InitType>
>> -  static StringMapEntry *Create(StringRef Key, InitType &&InitVal) {
>> +  template <typename... InitType>
>> +  static StringMapEntry *Create(StringRef Key, InitType &&... InitVal) {
>>      MallocAllocator A;
>> -    return Create(Key, A, std::forward<InitType>(InitVal));
>> +    return Create(Key, A, std::forward<InitType>(InitVal)...);
>>    }
>> 
>>    static StringMapEntry *Create(StringRef Key) {
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160325/a854268c/attachment.html>


More information about the llvm-commits mailing list