[llvm] r264383 - StringMap: reserve appropriate size when initializing from an initializer list

Mehdi Amini via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 25 08:59:13 PDT 2016


It would, it is just hard to write :)

Usually the pattern is that the client side has two statements: 1 for the allocation and 1 for the insertion. So you can get the number of buckets between the allocation and the insertion, and verify that it is the same after. Here everything happens in the constructor...

-- 
Mehdi

> On Mar 25, 2016, at 7:11 AM, David Blaikie <dblaikie at gmail.com> wrote:
> 
> Worth a test?
> 
> On Mar 24, 2016 11:02 PM, "Mehdi Amini via llvm-commits" <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>> wrote:
> Author: mehdi_amini
> Date: Fri Mar 25 00:57:47 2016
> New Revision: 264383
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=264383&view=rev <http://llvm.org/viewvc/llvm-project?rev=264383&view=rev>
> Log:
> StringMap: reserve appropriate size when initializing from an initializer list
> 
> From: Mehdi Amini <mehdi.amini at apple.com <mailto: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=264383&r1=264382&r2=264383&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringMap.h?rev=264383&r1=264382&r2=264383&view=diff>
> ==============================================================================
> --- llvm/trunk/include/llvm/ADT/StringMap.h (original)
> +++ llvm/trunk/include/llvm/ADT/StringMap.h Fri Mar 25 00:57:47 2016
> @@ -233,7 +233,7 @@ public:
>        Allocator(A) {}
> 
>    StringMap(std::initializer_list<std::pair<StringRef, ValueTy>> List)
> -      : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) {
> +      : StringMapImpl(List.size(), static_cast<unsigned>(sizeof(MapEntryTy))) {
>      for (const auto &P : List) {
>        insert(P);
>      }
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <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/6cfdf7bd/attachment.html>


More information about the llvm-commits mailing list