Merge pull request #8220 from ethereum/remove-var-name-cleaner-from-optimiser-suite-step-list

Remove var name cleaner from optimiser suite step list
This commit is contained in:
chriseth 2020-01-30 17:58:43 +01:00 committed by GitHub
commit 2afcfec77b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 5 deletions

View File

@ -308,9 +308,7 @@ void OptimiserSuite::run(
if (ast.statements.size() > 1 && std::get<Block>(ast.statements.front()).statements.empty())
ast.statements.erase(ast.statements.begin());
}
suite.runSequence({
VarNameCleaner::name
}, ast);
VarNameCleaner::run(suite.m_context, ast);
*_object.analysisInfo = AsmAnalyzer::analyzeStrictAssertCorrect(_dialect, _object);
}
@ -366,9 +364,9 @@ map<string, unique_ptr<OptimiserStep>> const& OptimiserSuite::allSteps()
SSATransform,
StructuralSimplifier,
UnusedPruner,
VarDeclInitializer,
VarNameCleaner
VarDeclInitializer
>();
// Does not include VarNameCleaner because it destroys the property of unique names.
return instance;
}

View File

@ -39,6 +39,10 @@ struct Dialect;
* renumbered by their base name.
* Function names are not modified.
*
* NOTE: This step destroys the promise of the Disambiguator and thus cannot
* be used in the main loop of the optimizer without running the disambiguator again.
* Because of that, it is not included in the step list of the Optimizer Suite.
*
* Prerequisites: Disambiguator, FunctionHoister, FunctionGrouper
*/
class VarNameCleaner: public ASTModifier

View File

@ -180,6 +180,8 @@ public:
break;
case 'l':
VarNameCleaner::run(context, *m_ast);
// VarNameCleaner destroys the unique names guarantee of the disambiguator.
disambiguated = false;
break;
case 'x':
ExpressionSplitter::run(context, *m_ast);