@@ -91,8 +91,9 @@ WasmDialect::WasmDialect()
91
91
m_functions[" i64.load" _yulstring].sideEffects .sideEffectFreeIfNoMSize = true ;
92
92
93
93
// Drop is actually overloaded for all types, but Yul does not support that.
94
- // We could introduce "i32.drop".
94
+ // Because of that, we introduce "i32.drop".
95
95
addFunction (" drop" , {i64}, {});
96
+ addFunction (" i32.drop" , {i32}, {});
96
97
97
98
addFunction (" nop" , {}, {});
98
99
addFunction (" unreachable" , {}, {}, false );
@@ -114,6 +115,22 @@ BuiltinFunction const* WasmDialect::builtin(YulString _name) const
114
115
return nullptr ;
115
116
}
116
117
118
+ BuiltinFunction const * WasmDialect::discardFunction (YulString _type) const
119
+ {
120
+ if (_type == " i32" _yulstring)
121
+ return builtin (" i32.drop" _yulstring);
122
+ yulAssert (_type == " i64" _yulstring, " " );
123
+ return builtin (" drop" _yulstring);
124
+ }
125
+
126
+ BuiltinFunction const * WasmDialect::equalityFunction (YulString _type) const
127
+ {
128
+ if (_type == " i32" _yulstring)
129
+ return builtin (" i32.eq" _yulstring);
130
+ yulAssert (_type == " i64" _yulstring, " " );
131
+ return builtin (" i64.eq" _yulstring);
132
+ }
133
+
117
134
WasmDialect const & WasmDialect::instance ()
118
135
{
119
136
static std::unique_ptr<WasmDialect> dialect;
0 commit comments