mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #5240 from ethereum/limitDispenserSize
[Yul] Limit name length created by dispenser
This commit is contained in:
@@ -106,8 +106,7 @@ bool YulOptimizerTest::run(ostream& _stream, string const& _linePrefix, bool con
|
||||
}
|
||||
else if (m_optimizerStep == "expressionSplitter")
|
||||
{
|
||||
NameDispenser nameDispenser;
|
||||
nameDispenser.m_usedNames = NameCollector(*m_ast).names();
|
||||
NameDispenser nameDispenser(*m_ast);
|
||||
ExpressionSplitter{nameDispenser}(*m_ast);
|
||||
}
|
||||
else if (m_optimizerStep == "functionGrouper")
|
||||
@@ -130,8 +129,7 @@ bool YulOptimizerTest::run(ostream& _stream, string const& _linePrefix, bool con
|
||||
disambiguate();
|
||||
(FunctionHoister{})(*m_ast);
|
||||
(FunctionGrouper{})(*m_ast);
|
||||
NameDispenser nameDispenser;
|
||||
nameDispenser.m_usedNames = NameCollector(*m_ast).names();
|
||||
NameDispenser nameDispenser(*m_ast);
|
||||
ExpressionSplitter{nameDispenser}(*m_ast);
|
||||
FullInliner(*m_ast).run();
|
||||
ExpressionJoiner::run(*m_ast);
|
||||
@@ -155,8 +153,7 @@ bool YulOptimizerTest::run(ostream& _stream, string const& _linePrefix, bool con
|
||||
else if (m_optimizerStep == "fullSimplify")
|
||||
{
|
||||
disambiguate();
|
||||
NameDispenser nameDispenser;
|
||||
nameDispenser.m_usedNames = NameCollector(*m_ast).names();
|
||||
NameDispenser nameDispenser(*m_ast);
|
||||
ExpressionSplitter{nameDispenser}(*m_ast);
|
||||
CommonSubexpressionEliminator{}(*m_ast);
|
||||
ExpressionSimplifier::run(*m_ast);
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
// yul
|
||||
{ { let aanteuhdaoneudbrgkjiuaothduiathudaoeuh:u256 } { let aanteuhdaoneudbrgkjiuaothduiathudaoeuh:u256 } }
|
||||
// ----
|
||||
// disambiguator
|
||||
// {
|
||||
// {
|
||||
// let aanteuhdaoneudbrgkjiuaothduiathudaoeuh:u256
|
||||
// }
|
||||
// {
|
||||
// let aanteuhdaoneudbrgkjiuaothduiathudaoeuh_1:u256
|
||||
// }
|
||||
// }
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
function verylongfunctionname(verylongvariablename) -> verylongvariablename2 {
|
||||
verylongvariablename2 := add(verylongvariablename, verylongvariablename)
|
||||
}
|
||||
// same long name
|
||||
let verylongvariablename2 := 3
|
||||
mstore(0, verylongfunctionname(verylongvariablename2))
|
||||
mstore(1, verylongvariablename2)
|
||||
}
|
||||
// ----
|
||||
// fullInliner
|
||||
// {
|
||||
// {
|
||||
// let verylongvariablename2_1 := 3
|
||||
// let verylongfu_verylongvariablename := verylongvariablename2_1
|
||||
// let verylongfu_verylongvariablename2
|
||||
// verylongfu_verylongvariablename2 := add(verylongfu_verylongvariablename, verylongfu_verylongvariablename)
|
||||
// mstore(0, verylongfu_verylongvariablename2)
|
||||
// mstore(1, verylongvariablename2_1)
|
||||
// }
|
||||
// function verylongfunctionname(verylongvariablename) -> verylongvariablename2
|
||||
// {
|
||||
// verylongvariablename2 := add(verylongvariablename, verylongvariablename)
|
||||
// }
|
||||
// }
|
||||
Reference in New Issue
Block a user