Skip to content

Commit b202600

Browse files
committed
eof: Fix unintentionally reserved EOF identifiers in legacy
1 parent 887947b commit b202600

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

libyul/backends/evm/EVMDialect.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,13 @@ std::set<std::string, std::less<>> createReservedIdentifiers(langutil::EVMVersio
155155

156156
auto eofIdentifiersException = [&](evmasm::Instruction _instr) -> bool
157157
{
158-
solAssert(!_eofVersion.has_value() || _evmVersion >= langutil::EVMVersion::prague());
159-
return
160-
!_eofVersion.has_value() &&
161-
(
162-
_instr == evmasm::Instruction::EXTCALL ||
163-
_instr == evmasm::Instruction::EXTSTATICCALL ||
164-
_instr == evmasm::Instruction::EXTDELEGATECALL
165-
);
158+
solAssert(!_eofVersion.has_value() || (*_eofVersion == 1 && _evmVersion == langutil::EVMVersion::prague()));
159+
if (_eofVersion.has_value())
160+
// For EOF every instruction is reserved identifier.
161+
return false;
162+
else
163+
return langutil::EVMVersion::prague().hasOpcode(_instr, 1) &&
164+
!langutil::EVMVersion::prague().hasOpcode(_instr, std::nullopt);
166165
};
167166

168167
std::set<std::string, std::less<>> reserved;

0 commit comments

Comments
 (0)