[llvm] r264391 - Fix perfect forwarding for StringMap

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 25 07:09:25 PDT 2016


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/37823f9c/attachment.html>


More information about the llvm-commits mailing list