Make use of make_vector where possible.

This commit is contained in:
Daniel Kirchner 2019-05-17 09:41:22 +02:00
parent 2046e61c26
commit 05c210772a
3 changed files with 40 additions and 54 deletions

View File

@ -72,11 +72,7 @@ OptionalStatements reduceNoCaseSwitch(Switch& _switchStmt)
auto loc = locationOf(*_switchStmt.expression); auto loc = locationOf(*_switchStmt.expression);
OptionalStatements s = vector<Statement>{}; return make_vector<Statement>(makePopExpressionStatement(loc, std::move(*_switchStmt.expression)));
s->emplace_back(makePopExpressionStatement(loc, std::move(*_switchStmt.expression)));
return s;
} }
OptionalStatements reduceSingleCaseSwitch(Switch& _switchStmt) OptionalStatements reduceSingleCaseSwitch(Switch& _switchStmt)
@ -86,26 +82,20 @@ OptionalStatements reduceSingleCaseSwitch(Switch& _switchStmt)
auto& switchCase = _switchStmt.cases.front(); auto& switchCase = _switchStmt.cases.front();
auto loc = locationOf(*_switchStmt.expression); auto loc = locationOf(*_switchStmt.expression);
if (switchCase.value) if (switchCase.value)
{ return make_vector<Statement>(If{
OptionalStatements s = vector<Statement>{}; std::move(_switchStmt.location),
s->emplace_back(If{ make_unique<Expression>(FunctionalInstruction{
std::move(_switchStmt.location), std::move(loc),
make_unique<Expression>(FunctionalInstruction{ dev::eth::Instruction::EQ,
std::move(loc), {std::move(*switchCase.value), std::move(*_switchStmt.expression)}
dev::eth::Instruction::EQ, }),
{std::move(*switchCase.value), std::move(*_switchStmt.expression)} std::move(switchCase.body)
}),
std::move(switchCase.body)
}); });
return s;
}
else else
{ return make_vector<Statement>(
OptionalStatements s = vector<Statement>{}; makePopExpressionStatement(loc, std::move(*_switchStmt.expression)),
s->emplace_back(makePopExpressionStatement(loc, std::move(*_switchStmt.expression))); std::move(switchCase.body)
s->emplace_back(std::move(switchCase.body)); );
return s;
}
} }
} }

View File

@ -56,20 +56,18 @@ void SSAReverser::operator()(Block& _block)
identifier && identifier &&
identifier->name == varDecl->variables.front().name identifier->name == varDecl->variables.front().name
) )
{ return make_vector<Statement>(
vector<Statement> result; Assignment{
result.emplace_back(Assignment{ std::move(assignment->location),
std::move(assignment->location), assignment->variableNames,
assignment->variableNames, std::move(varDecl->value)
std::move(varDecl->value) },
}); VariableDeclaration{
result.emplace_back(VariableDeclaration{ std::move(varDecl->location),
std::move(varDecl->location), std::move(varDecl->variables),
std::move(varDecl->variables), std::make_unique<Expression>(std::move(assignment->variableNames.front()))
std::make_unique<Expression>(std::move(assignment->variableNames.front())) }
}); );
return { std::move(result) };
}
} }
// Replaces // Replaces
// let a_1 := E // let a_1 := E
@ -89,22 +87,22 @@ void SSAReverser::operator()(Block& _block)
) )
) )
{ {
vector<Statement> result;
auto varIdentifier2 = std::make_unique<Expression>(Identifier{ auto varIdentifier2 = std::make_unique<Expression>(Identifier{
varDecl2->variables.front().location, varDecl2->variables.front().location,
varDecl2->variables.front().name varDecl2->variables.front().name
}); });
result.emplace_back(VariableDeclaration{ return make_vector<Statement>(
std::move(varDecl2->location), VariableDeclaration{
std::move(varDecl2->variables), std::move(varDecl2->location),
std::move(varDecl->value) std::move(varDecl2->variables),
}); std::move(varDecl->value)
result.emplace_back(VariableDeclaration{ },
std::move(varDecl->location), VariableDeclaration{
std::move(varDecl->variables), std::move(varDecl->location),
std::move(varIdentifier2) std::move(varDecl->variables),
}); std::move(varIdentifier2)
return { std::move(result) }; }
);
} }
} }

View File

@ -51,12 +51,10 @@ OptionalStatements replaceConstArgSwitch(Switch& _switchStmt, u256 const& _const
if (!matchingCaseBlock && defaultCase) if (!matchingCaseBlock && defaultCase)
matchingCaseBlock = &defaultCase->body; matchingCaseBlock = &defaultCase->body;
OptionalStatements s = vector<Statement>{};
if (matchingCaseBlock) if (matchingCaseBlock)
s->emplace_back(std::move(*matchingCaseBlock)); return make_vector<Statement>(std::move(*matchingCaseBlock));
else
return s; return {{}};
} }
} }