diff --git a/libsolidity/codegen/ir/IRGeneratorForStatements.cpp b/libsolidity/codegen/ir/IRGeneratorForStatements.cpp index 8e07edd75..c26012e17 100644 --- a/libsolidity/codegen/ir/IRGeneratorForStatements.cpp +++ b/libsolidity/codegen/ir/IRGeneratorForStatements.cpp @@ -1767,32 +1767,11 @@ void IRGeneratorForStatements::endVisit(MemberAccess const& _memberAccess) auto const& type = dynamic_cast(*_memberAccess.expression().annotation().type); if (member == "length") - { - if (!type.isDynamicallySized()) - define(_memberAccess) << type.length() << "\n"; - else - switch (type.location()) - { - case DataLocation::CallData: - define(_memberAccess, IRVariable(_memberAccess.expression()).part("length")); - break; - case DataLocation::Storage: - { - define(_memberAccess) << - m_utils.arrayLengthFunction(type) << - "(" << - IRVariable(_memberAccess.expression()).commaSeparatedList() << - ")\n"; - break; - } - case DataLocation::Memory: - define(_memberAccess) << - "mload(" << - IRVariable(_memberAccess.expression()).commaSeparatedList() << - ")\n"; - break; - } - } + define(_memberAccess) << + m_utils.arrayLengthFunction(type) << + "(" << + IRVariable(_memberAccess.expression()).commaSeparatedList() << + ")\n"; else if (member == "pop" || member == "push") { solAssert(type.location() == DataLocation::Storage, "");