Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The biggest change here is the merger of ForwardLabel and SingleUseForwardLabel by adding a small-vector optimization for the former. In this new version, clang can elide unnecessary
std::vector
code in principle, but there is still a 0.13% Release binary size overhead since that doesn't always happen in practice.At runtime we still avoid any unnecessary heap-allocation, so maybe the simpler code is worth it (fewer templates + not having two classes that kinda do the same thing). If not I can take the patch out from the series too. (Arguably it would be handy to have a more generic SmallVector utility that we can use elsewhere too, though.)
The other patches should be uncontroversial.
Binary size changes: