Replace push_back(Constructor(foo)) with emplace_back(foo) for non-trivial types
If the type isn't trivially moveable emplace can skip a potentially
expensive move. It also saves a couple of characters.
Call sites were found with the ASTMatcher + some semi-automated cleanup.
memberCallExpr(
argumentCountIs(1), callee(methodDecl(hasName("push_back"))),
on(hasType(recordDecl(has(namedDecl(hasName("emplace_back")))))),
hasArgument(0, bindTemporaryExpr(
hasType(recordDecl(hasNonTrivialDestructor())),
has(constructExpr()))),
unless(isInTemplateInstantiation()))
No functional change intended.
llvm-svn: 238601
This commit is contained in:
@@ -220,10 +220,10 @@ void JSONCompilationDatabase::getCommands(
|
||||
for (int I = 0, E = CommandsRef.size(); I != E; ++I) {
|
||||
SmallString<8> DirectoryStorage;
|
||||
SmallString<1024> CommandStorage;
|
||||
Commands.push_back(CompileCommand(
|
||||
// FIXME: Escape correctly:
|
||||
CommandsRef[I].first->getValue(DirectoryStorage),
|
||||
unescapeCommandLine(CommandsRef[I].second->getValue(CommandStorage))));
|
||||
Commands.emplace_back(
|
||||
// FIXME: Escape correctly:
|
||||
CommandsRef[I].first->getValue(DirectoryStorage),
|
||||
unescapeCommandLine(CommandsRef[I].second->getValue(CommandStorage)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user