mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238602 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1797,7 +1797,7 @@ static void emitConvertFuncs(CodeGenTarget &Target, StringRef ClassName,
|
||||
getEnumNameForToken(AsmMatchConverter));
|
||||
|
||||
// Add the converter row for this instruction.
|
||||
ConversionTable.push_back(std::vector<uint8_t>());
|
||||
ConversionTable.emplace_back();
|
||||
ConversionTable.back().push_back(KindID);
|
||||
ConversionTable.back().push_back(CVT_Done);
|
||||
|
||||
@@ -2161,8 +2161,7 @@ static void emitMatchTokenString(CodeGenTarget &Target,
|
||||
std::vector<StringMatcher::StringPair> Matches;
|
||||
for (const auto &CI : Infos) {
|
||||
if (CI.Kind == ClassInfo::Token)
|
||||
Matches.push_back(
|
||||
StringMatcher::StringPair(CI.ValueName, "return " + CI.Name + ";"));
|
||||
Matches.emplace_back(CI.ValueName, "return " + CI.Name + ";");
|
||||
}
|
||||
|
||||
OS << "static MatchClassKind matchTokenString(StringRef Name) {\n";
|
||||
@@ -2184,9 +2183,8 @@ static void emitMatchRegisterName(CodeGenTarget &Target, Record *AsmParser,
|
||||
if (Reg.TheDef->getValueAsString("AsmName").empty())
|
||||
continue;
|
||||
|
||||
Matches.push_back(
|
||||
StringMatcher::StringPair(Reg.TheDef->getValueAsString("AsmName"),
|
||||
"return " + utostr(Reg.EnumValue) + ";"));
|
||||
Matches.emplace_back(Reg.TheDef->getValueAsString("AsmName"),
|
||||
"return " + utostr(Reg.EnumValue) + ";");
|
||||
}
|
||||
|
||||
OS << "static unsigned MatchRegisterName(StringRef Name) {\n";
|
||||
|
||||
Reference in New Issue
Block a user