On Mon, Aug 11, 2014 at 1:28 PM, David Blaikie <[email protected]> wrote: > On Mon, Aug 11, 2014 at 9:05 AM, Hans Wennborg <[email protected]> wrote: >> Author: hans >> Date: Mon Aug 11 11:05:54 2014 >> New Revision: 215360 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=215360&view=rev >> Log: >> Increase SmallVector<> size in DiagnosticsEngine::setSeverityForGroup >> >> In a Clang bootstrap, this vector always held 129 elements. > > Presumably this is because the largest diagnostic group has 129 > elements. When you say "always held 129 elements" - you mean the > maximum for a given compilation was 129? Or on /every/ call it was > 129? I'd be surprised if it was the same count on every call.
It was 129 on every call. Maybe it was only getting called for a specific diagnostics group. > & are we going to update this whenever the number of diagnostics in > the largest group changes? I bumped it to 256 thinking that that "should be enough for everyone". > (& my personal leaning being "if performance here doesn't matter, > perhaps we should have a default size or drop the small optimization > entirely so we don't have to wonder if it's right/needs updating in > the future") I got samples from about 2000 small-optimized containers in my bootstrap. The vast majority of those are probably not important for performance, but if we switched all of them to non-small optimized containers I'm sure the impact would be visible. - Hans >> Modified: cfe/trunk/lib/Basic/Diagnostic.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Diagnostic.cpp?rev=215360&r1=215359&r2=215360&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Basic/Diagnostic.cpp (original) >> +++ cfe/trunk/lib/Basic/Diagnostic.cpp Mon Aug 11 11:05:54 2014 >> @@ -232,13 +232,13 @@ bool DiagnosticsEngine::setSeverityForGr >> StringRef Group, diag::Severity >> Map, >> SourceLocation Loc) { >> // Get the diagnostics in this group. >> - SmallVector<diag::kind, 8> GroupDiags; >> + SmallVector<diag::kind, 256> GroupDiags; >> if (Diags->getDiagnosticsInGroup(Flavor, Group, GroupDiags)) >> return true; >> >> // Set the mapping. >> - for (unsigned i = 0, e = GroupDiags.size(); i != e; ++i) >> - setSeverity(GroupDiags[i], Map, Loc); >> + for (diag::kind Diag : GroupDiags) >> + setSeverity(Diag, Map, Loc); >> >> return false; >> } >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
