Use builtin iszero for for loop condition rewriting.

This commit is contained in:
chriseth
2019-09-12 10:26:16 +02:00
committed by Daniel Kirchner
parent 324cc71b13
commit 4f80117eef
12 changed files with 111 additions and 16 deletions
+1
View File
@@ -70,6 +70,7 @@ struct EVMDialect: public Dialect
BuiltinFunctionForEVM const* discardFunction() const override { return builtin("pop"_yulstring); }
BuiltinFunctionForEVM const* equalityFunction() const override { return builtin("eq"_yulstring); }
BuiltinFunctionForEVM const* booleanNegationFunction() const override { return builtin("iszero"_yulstring); }
static EVMDialect const& looseAssemblyForEVM(langutil::EVMVersion _version);
static EVMDialect const& strictAssemblyForEVM(langutil::EVMVersion _version);
+1
View File
@@ -47,6 +47,7 @@ struct WasmDialect: public Dialect
BuiltinFunction const* builtin(YulString _name) const override;
BuiltinFunction const* discardFunction() const override { return builtin("drop"_yulstring); }
BuiltinFunction const* equalityFunction() const override { return builtin("i64.eq"_yulstring); }
BuiltinFunction const* booleanNegationFunction() const override { return builtin("i64.eqz"_yulstring); }
std::set<YulString> fixedFunctionNames() const override { return {"main"_yulstring}; }