<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Aug 11, 2014 at 1:54 PM, Hans Wennborg <span dir="ltr"><<a href="mailto:hans@chromium.org" target="_blank">hans@chromium.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Mon, Aug 11, 2014 at 1:28 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>

> On Mon, Aug 11, 2014 at 9:05 AM, Hans Wennborg <<a href="mailto:hans@hanshq.net">hans@hanshq.net</a>> wrote:<br>
>> Author: hans<br>
>> Date: Mon Aug 11 11:05:54 2014<br>
>> New Revision: 215360<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=215360&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=215360&view=rev</a><br>
>> Log:<br>
>> Increase SmallVector<> size in DiagnosticsEngine::setSeverityForGroup<br>
>><br>
>> In a Clang bootstrap, this vector always held 129 elements.<br>
><br>
> Presumably this is because the largest diagnostic group has 129<br>
> elements. When you say "always held 129 elements" - you mean the<br>
> maximum for a given compilation was 129? Or on /every/ call it was<br>
> 129? I'd be surprised if it was the same count on every call.<br>
<br>
</div>It was 129 on every call. Maybe it was only getting called for a<br>
specific diagnostics group.</blockquote><div><br></div><div>At a guess, your build had only one -W flag, and that group has 129 diagnostics. Maybe it's -Wall?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="">
> & are we going to update this whenever the number of diagnostics in<br>
> the largest group changes?<br>
<br>
</div>I bumped it to 256 thinking that that "should be enough for everyone".<br>
<div class=""><br>
> (& my personal leaning being "if performance here doesn't matter,<br>
> perhaps we should have a default size or drop the small optimization<br>
> entirely so we don't have to wonder if it's right/needs updating in<br>
> the future")<br>
<br>
</div>I got samples from about 2000 small-optimized containers in my<br>
bootstrap. The vast majority of those are probably not important for<br>
performance, but if we switched all of them to non-small optimized<br>
containers I'm sure the impact would be visible.<br>
<span class="HOEnZb"><font color="#888888"><br>
 - Hans<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
>> Modified: cfe/trunk/lib/Basic/Diagnostic.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Diagnostic.cpp?rev=215360&r1=215359&r2=215360&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Diagnostic.cpp?rev=215360&r1=215359&r2=215360&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/lib/Basic/Diagnostic.cpp (original)<br>
>> +++ cfe/trunk/lib/Basic/Diagnostic.cpp Mon Aug 11 11:05:54 2014<br>
>> @@ -232,13 +232,13 @@ bool DiagnosticsEngine::setSeverityForGr<br>
>>                                              StringRef Group, diag::Severity Map,<br>
>>                                              SourceLocation Loc) {<br>
>>    // Get the diagnostics in this group.<br>
>> -  SmallVector<diag::kind, 8> GroupDiags;<br>
>> +  SmallVector<diag::kind, 256> GroupDiags;<br>
>>    if (Diags->getDiagnosticsInGroup(Flavor, Group, GroupDiags))<br>
>>      return true;<br>
>><br>
>>    // Set the mapping.<br>
>> -  for (unsigned i = 0, e = GroupDiags.size(); i != e; ++i)<br>
>> -    setSeverity(GroupDiags[i], Map, Loc);<br>
>> +  for (diag::kind Diag : GroupDiags)<br>
>> +    setSeverity(Diag, Map, Loc);<br>
>><br>
>>    return false;<br>
>>  }<br>
>><br>
>><br>
>> _______________________________________________<br>
>> cfe-commits mailing list<br>
>> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</div></div></blockquote></div><br></div></div>