Coverage Report

Created: 2026-09-14 06:38

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/solidity/libyul/optimiser/SyntacticalEquality.cpp
Line
Count
Source
1
/*
2
  This file is part of solidity.
3
4
  solidity is free software: you can redistribute it and/or modify
5
  it under the terms of the GNU General Public License as published by
6
  the Free Software Foundation, either version 3 of the License, or
7
  (at your option) any later version.
8
9
  solidity is distributed in the hope that it will be useful,
10
  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
  GNU General Public License for more details.
13
14
  You should have received a copy of the GNU General Public License
15
  along with solidity.  If not, see <http://www.gnu.org/licenses/>.
16
*/
17
/**
18
 * Component that can compare ASTs for equality on a syntactic basis.
19
 */
20
21
#include <libyul/optimiser/SyntacticalEquality.h>
22
23
#include <libyul/AST.h>
24
#include <libyul/Utilities.h>
25
#include <libyul/Exceptions.h>
26
27
#include <libsolutil/CommonData.h>
28
#include <libsolutil/Visitor.h>
29
30
using namespace solidity;
31
using namespace solidity::yul;
32
33
bool SyntacticallyEqual::operator()(Expression const& _lhs, Expression const& _rhs)
34
169M
{
35
169M
  return std::visit([this](auto&& _lhsExpr, auto&& _rhsExpr) -> bool {
36
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
37
169M
    return this->expressionEqual(_lhsExpr, _rhsExpr);
38
169M
  }, _lhs, _rhs);
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&, std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::$_0::operator()<solidity::yul::FunctionCall const&, solidity::yul::FunctionCall const&>(solidity::yul::FunctionCall const&, solidity::yul::FunctionCall const&) const
Line
Count
Source
35
2.27M
  return std::visit([this](auto&& _lhsExpr, auto&& _rhsExpr) -> bool {
36
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
37
2.27M
    return this->expressionEqual(_lhsExpr, _rhsExpr);
38
2.27M
  }, _lhs, _rhs);
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&, std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::$_0::operator()<solidity::yul::FunctionCall const&, solidity::yul::Identifier const&>(solidity::yul::FunctionCall const&, solidity::yul::Identifier const&) const
Line
Count
Source
35
374k
  return std::visit([this](auto&& _lhsExpr, auto&& _rhsExpr) -> bool {
36
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
37
374k
    return this->expressionEqual(_lhsExpr, _rhsExpr);
38
374k
  }, _lhs, _rhs);
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&, std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::$_0::operator()<solidity::yul::FunctionCall const&, solidity::yul::Literal const&>(solidity::yul::FunctionCall const&, solidity::yul::Literal const&) const
Line
Count
Source
35
564k
  return std::visit([this](auto&& _lhsExpr, auto&& _rhsExpr) -> bool {
36
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
37
564k
    return this->expressionEqual(_lhsExpr, _rhsExpr);
38
564k
  }, _lhs, _rhs);
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&, std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::$_0::operator()<solidity::yul::Identifier const&, solidity::yul::FunctionCall const&>(solidity::yul::Identifier const&, solidity::yul::FunctionCall const&) const
Line
Count
Source
35
205k
  return std::visit([this](auto&& _lhsExpr, auto&& _rhsExpr) -> bool {
36
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
37
205k
    return this->expressionEqual(_lhsExpr, _rhsExpr);
38
205k
  }, _lhs, _rhs);
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&, std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::$_0::operator()<solidity::yul::Identifier const&, solidity::yul::Identifier const&>(solidity::yul::Identifier const&, solidity::yul::Identifier const&) const
Line
Count
Source
35
40.1M
  return std::visit([this](auto&& _lhsExpr, auto&& _rhsExpr) -> bool {
36
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
37
40.1M
    return this->expressionEqual(_lhsExpr, _rhsExpr);
38
40.1M
  }, _lhs, _rhs);
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&, std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::$_0::operator()<solidity::yul::Identifier const&, solidity::yul::Literal const&>(solidity::yul::Identifier const&, solidity::yul::Literal const&) const
Line
Count
Source
35
1.09M
  return std::visit([this](auto&& _lhsExpr, auto&& _rhsExpr) -> bool {
36
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
37
1.09M
    return this->expressionEqual(_lhsExpr, _rhsExpr);
38
1.09M
  }, _lhs, _rhs);
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&, std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::$_0::operator()<solidity::yul::Literal const&, solidity::yul::FunctionCall const&>(solidity::yul::Literal const&, solidity::yul::FunctionCall const&) const
Line
Count
Source
35
482k
  return std::visit([this](auto&& _lhsExpr, auto&& _rhsExpr) -> bool {
36
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
37
482k
    return this->expressionEqual(_lhsExpr, _rhsExpr);
38
482k
  }, _lhs, _rhs);
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&, std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::$_0::operator()<solidity::yul::Literal const&, solidity::yul::Identifier const&>(solidity::yul::Literal const&, solidity::yul::Identifier const&) const
Line
Count
Source
35
1.49M
  return std::visit([this](auto&& _lhsExpr, auto&& _rhsExpr) -> bool {
36
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
37
1.49M
    return this->expressionEqual(_lhsExpr, _rhsExpr);
38
1.49M
  }, _lhs, _rhs);
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&, std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::$_0::operator()<solidity::yul::Literal const&, solidity::yul::Literal const&>(solidity::yul::Literal const&, solidity::yul::Literal const&) const
Line
Count
Source
35
122M
  return std::visit([this](auto&& _lhsExpr, auto&& _rhsExpr) -> bool {
36
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
37
122M
    return this->expressionEqual(_lhsExpr, _rhsExpr);
38
122M
  }, _lhs, _rhs);
39
169M
}
40
41
bool SyntacticallyEqual::operator()(Statement const& _lhs, Statement const& _rhs)
42
1.62M
{
43
1.62M
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
1.62M
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
1.62M
  }, _lhs, _rhs);
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::ExpressionStatement const&>(solidity::yul::ExpressionStatement const&, solidity::yul::ExpressionStatement const&) const
Line
Count
Source
43
194k
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
194k
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
194k
  }, _lhs, _rhs);
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::Assignment const&>(solidity::yul::ExpressionStatement const&, solidity::yul::Assignment const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::VariableDeclaration const&>(solidity::yul::ExpressionStatement const&, solidity::yul::VariableDeclaration const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::FunctionDefinition const&>(solidity::yul::ExpressionStatement const&, solidity::yul::FunctionDefinition const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::If const&>(solidity::yul::ExpressionStatement const&, solidity::yul::If const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::Switch const&>(solidity::yul::ExpressionStatement const&, solidity::yul::Switch const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::ForLoop const&>(solidity::yul::ExpressionStatement const&, solidity::yul::ForLoop const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::Break const&>(solidity::yul::ExpressionStatement const&, solidity::yul::Break const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::Continue const&>(solidity::yul::ExpressionStatement const&, solidity::yul::Continue const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::Leave const&>(solidity::yul::ExpressionStatement const&, solidity::yul::Leave const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ExpressionStatement const&, solidity::yul::Block const&>(solidity::yul::ExpressionStatement const&, solidity::yul::Block const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::ExpressionStatement const&>(solidity::yul::Assignment const&, solidity::yul::ExpressionStatement const&) const
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::Assignment const&>(solidity::yul::Assignment const&, solidity::yul::Assignment const&) const
Line
Count
Source
43
93.8k
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
93.8k
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
93.8k
  }, _lhs, _rhs);
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::VariableDeclaration const&>(solidity::yul::Assignment const&, solidity::yul::VariableDeclaration const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::FunctionDefinition const&>(solidity::yul::Assignment const&, solidity::yul::FunctionDefinition const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::If const&>(solidity::yul::Assignment const&, solidity::yul::If const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::Switch const&>(solidity::yul::Assignment const&, solidity::yul::Switch const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::ForLoop const&>(solidity::yul::Assignment const&, solidity::yul::ForLoop const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::Break const&>(solidity::yul::Assignment const&, solidity::yul::Break const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::Continue const&>(solidity::yul::Assignment const&, solidity::yul::Continue const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::Leave const&>(solidity::yul::Assignment const&, solidity::yul::Leave const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Assignment const&, solidity::yul::Block const&>(solidity::yul::Assignment const&, solidity::yul::Block const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::ExpressionStatement const&>(solidity::yul::VariableDeclaration const&, solidity::yul::ExpressionStatement const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::Assignment const&>(solidity::yul::VariableDeclaration const&, solidity::yul::Assignment const&) const
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::VariableDeclaration const&>(solidity::yul::VariableDeclaration const&, solidity::yul::VariableDeclaration const&) const
Line
Count
Source
43
1.14M
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
1.14M
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
1.14M
  }, _lhs, _rhs);
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::FunctionDefinition const&>(solidity::yul::VariableDeclaration const&, solidity::yul::FunctionDefinition const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::If const&>(solidity::yul::VariableDeclaration const&, solidity::yul::If const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::Switch const&>(solidity::yul::VariableDeclaration const&, solidity::yul::Switch const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::ForLoop const&>(solidity::yul::VariableDeclaration const&, solidity::yul::ForLoop const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::Break const&>(solidity::yul::VariableDeclaration const&, solidity::yul::Break const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::Continue const&>(solidity::yul::VariableDeclaration const&, solidity::yul::Continue const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::Leave const&>(solidity::yul::VariableDeclaration const&, solidity::yul::Leave const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::VariableDeclaration const&, solidity::yul::Block const&>(solidity::yul::VariableDeclaration const&, solidity::yul::Block const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::ExpressionStatement const&>(solidity::yul::FunctionDefinition const&, solidity::yul::ExpressionStatement const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::Assignment const&>(solidity::yul::FunctionDefinition const&, solidity::yul::Assignment const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::VariableDeclaration const&>(solidity::yul::FunctionDefinition const&, solidity::yul::VariableDeclaration const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::FunctionDefinition const&>(solidity::yul::FunctionDefinition const&, solidity::yul::FunctionDefinition const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::If const&>(solidity::yul::FunctionDefinition const&, solidity::yul::If const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::Switch const&>(solidity::yul::FunctionDefinition const&, solidity::yul::Switch const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::ForLoop const&>(solidity::yul::FunctionDefinition const&, solidity::yul::ForLoop const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::Break const&>(solidity::yul::FunctionDefinition const&, solidity::yul::Break const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::Continue const&>(solidity::yul::FunctionDefinition const&, solidity::yul::Continue const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::Leave const&>(solidity::yul::FunctionDefinition const&, solidity::yul::Leave const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::FunctionDefinition const&, solidity::yul::Block const&>(solidity::yul::FunctionDefinition const&, solidity::yul::Block const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::ExpressionStatement const&>(solidity::yul::If const&, solidity::yul::ExpressionStatement const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::Assignment const&>(solidity::yul::If const&, solidity::yul::Assignment const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::VariableDeclaration const&>(solidity::yul::If const&, solidity::yul::VariableDeclaration const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::FunctionDefinition const&>(solidity::yul::If const&, solidity::yul::FunctionDefinition const&) const
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::If const&>(solidity::yul::If const&, solidity::yul::If const&) const
Line
Count
Source
43
42.7k
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
42.7k
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
42.7k
  }, _lhs, _rhs);
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::Switch const&>(solidity::yul::If const&, solidity::yul::Switch const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::ForLoop const&>(solidity::yul::If const&, solidity::yul::ForLoop const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::Break const&>(solidity::yul::If const&, solidity::yul::Break const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::Continue const&>(solidity::yul::If const&, solidity::yul::Continue const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::Leave const&>(solidity::yul::If const&, solidity::yul::Leave const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::If const&, solidity::yul::Block const&>(solidity::yul::If const&, solidity::yul::Block const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::ExpressionStatement const&>(solidity::yul::Switch const&, solidity::yul::ExpressionStatement const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::Assignment const&>(solidity::yul::Switch const&, solidity::yul::Assignment const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::VariableDeclaration const&>(solidity::yul::Switch const&, solidity::yul::VariableDeclaration const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::FunctionDefinition const&>(solidity::yul::Switch const&, solidity::yul::FunctionDefinition const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::If const&>(solidity::yul::Switch const&, solidity::yul::If const&) const
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::Switch const&>(solidity::yul::Switch const&, solidity::yul::Switch const&) const
Line
Count
Source
43
10.8k
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
10.8k
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
10.8k
  }, _lhs, _rhs);
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::ForLoop const&>(solidity::yul::Switch const&, solidity::yul::ForLoop const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::Break const&>(solidity::yul::Switch const&, solidity::yul::Break const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::Continue const&>(solidity::yul::Switch const&, solidity::yul::Continue const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::Leave const&>(solidity::yul::Switch const&, solidity::yul::Leave const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Switch const&, solidity::yul::Block const&>(solidity::yul::Switch const&, solidity::yul::Block const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::ExpressionStatement const&>(solidity::yul::ForLoop const&, solidity::yul::ExpressionStatement const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::Assignment const&>(solidity::yul::ForLoop const&, solidity::yul::Assignment const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::VariableDeclaration const&>(solidity::yul::ForLoop const&, solidity::yul::VariableDeclaration const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::FunctionDefinition const&>(solidity::yul::ForLoop const&, solidity::yul::FunctionDefinition const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::If const&>(solidity::yul::ForLoop const&, solidity::yul::If const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::Switch const&>(solidity::yul::ForLoop const&, solidity::yul::Switch const&) const
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::ForLoop const&>(solidity::yul::ForLoop const&, solidity::yul::ForLoop const&) const
Line
Count
Source
43
71.1k
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
71.1k
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
71.1k
  }, _lhs, _rhs);
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::Break const&>(solidity::yul::ForLoop const&, solidity::yul::Break const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::Continue const&>(solidity::yul::ForLoop const&, solidity::yul::Continue const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::Leave const&>(solidity::yul::ForLoop const&, solidity::yul::Leave const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::ForLoop const&, solidity::yul::Block const&>(solidity::yul::ForLoop const&, solidity::yul::Block const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::ExpressionStatement const&>(solidity::yul::Break const&, solidity::yul::ExpressionStatement const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::Assignment const&>(solidity::yul::Break const&, solidity::yul::Assignment const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::VariableDeclaration const&>(solidity::yul::Break const&, solidity::yul::VariableDeclaration const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::FunctionDefinition const&>(solidity::yul::Break const&, solidity::yul::FunctionDefinition const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::If const&>(solidity::yul::Break const&, solidity::yul::If const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::Switch const&>(solidity::yul::Break const&, solidity::yul::Switch const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::ForLoop const&>(solidity::yul::Break const&, solidity::yul::ForLoop const&) const
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::Break const&>(solidity::yul::Break const&, solidity::yul::Break const&) const
Line
Count
Source
43
35.3k
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
35.3k
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
35.3k
  }, _lhs, _rhs);
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::Continue const&>(solidity::yul::Break const&, solidity::yul::Continue const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::Leave const&>(solidity::yul::Break const&, solidity::yul::Leave const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Break const&, solidity::yul::Block const&>(solidity::yul::Break const&, solidity::yul::Block const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::ExpressionStatement const&>(solidity::yul::Continue const&, solidity::yul::ExpressionStatement const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::Assignment const&>(solidity::yul::Continue const&, solidity::yul::Assignment const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::VariableDeclaration const&>(solidity::yul::Continue const&, solidity::yul::VariableDeclaration const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::FunctionDefinition const&>(solidity::yul::Continue const&, solidity::yul::FunctionDefinition const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::If const&>(solidity::yul::Continue const&, solidity::yul::If const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::Switch const&>(solidity::yul::Continue const&, solidity::yul::Switch const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::ForLoop const&>(solidity::yul::Continue const&, solidity::yul::ForLoop const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::Break const&>(solidity::yul::Continue const&, solidity::yul::Break const&) const
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::Continue const&>(solidity::yul::Continue const&, solidity::yul::Continue const&) const
Line
Count
Source
43
5.12k
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
5.12k
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
5.12k
  }, _lhs, _rhs);
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::Leave const&>(solidity::yul::Continue const&, solidity::yul::Leave const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Continue const&, solidity::yul::Block const&>(solidity::yul::Continue const&, solidity::yul::Block const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::ExpressionStatement const&>(solidity::yul::Leave const&, solidity::yul::ExpressionStatement const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::Assignment const&>(solidity::yul::Leave const&, solidity::yul::Assignment const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::VariableDeclaration const&>(solidity::yul::Leave const&, solidity::yul::VariableDeclaration const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::FunctionDefinition const&>(solidity::yul::Leave const&, solidity::yul::FunctionDefinition const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::If const&>(solidity::yul::Leave const&, solidity::yul::If const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::Switch const&>(solidity::yul::Leave const&, solidity::yul::Switch const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::ForLoop const&>(solidity::yul::Leave const&, solidity::yul::ForLoop const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::Break const&>(solidity::yul::Leave const&, solidity::yul::Break const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::Continue const&>(solidity::yul::Leave const&, solidity::yul::Continue const&) const
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::Leave const&>(solidity::yul::Leave const&, solidity::yul::Leave const&) const
Line
Count
Source
43
22.0k
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
22.0k
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
22.0k
  }, _lhs, _rhs);
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Leave const&, solidity::yul::Block const&>(solidity::yul::Leave const&, solidity::yul::Block const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::ExpressionStatement const&>(solidity::yul::Block const&, solidity::yul::ExpressionStatement const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::Assignment const&>(solidity::yul::Block const&, solidity::yul::Assignment const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::VariableDeclaration const&>(solidity::yul::Block const&, solidity::yul::VariableDeclaration const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::FunctionDefinition const&>(solidity::yul::Block const&, solidity::yul::FunctionDefinition const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::If const&>(solidity::yul::Block const&, solidity::yul::If const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::Switch const&>(solidity::yul::Block const&, solidity::yul::Switch const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::ForLoop const&>(solidity::yul::Block const&, solidity::yul::ForLoop const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::Break const&>(solidity::yul::Block const&, solidity::yul::Break const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::Continue const&>(solidity::yul::Block const&, solidity::yul::Continue const&) const
Unexecuted instantiation: SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::Leave const&>(solidity::yul::Block const&, solidity::yul::Leave const&) const
SyntacticalEquality.cpp:bool solidity::yul::SyntacticallyEqual::operator()(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&, std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::$_0::operator()<solidity::yul::Block const&, solidity::yul::Block const&>(solidity::yul::Block const&, solidity::yul::Block const&) const
Line
Count
Source
43
1.39k
  return std::visit([this](auto&& _lhsStmt, auto&& _rhsStmt) -> bool {
44
    // ``this->`` is redundant, but required to work around a bug present in gcc 6.x.
45
1.39k
    return this->statementEqual(_lhsStmt, _rhsStmt);
46
1.39k
  }, _lhs, _rhs);
47
1.62M
}
48
49
bool SyntacticallyEqual::expressionEqual(FunctionCall const& _lhs, FunctionCall const& _rhs)
50
2.27M
{
51
2.27M
  return
52
2.27M
    expressionEqual(_lhs.functionName, _rhs.functionName) &&
53
2.65M
    util::containerEqual(_lhs.arguments, _rhs.arguments, [this](Expression const& _lhsExpr, Expression const& _rhsExpr) -> bool {
54
2.65M
      return (*this)(_lhsExpr, _rhsExpr);
55
2.65M
    });
56
2.27M
}
57
58
bool SyntacticallyEqual::expressionEqual(FunctionName const& _lhs, FunctionName const& _rhs)
59
2.27M
{
60
2.27M
  return std::visit(util::GenericVisitor{
61
2.27M
    [&](BuiltinName const& _builtin) { return std::holds_alternative<BuiltinName>(_rhs) && _builtin.handle == std::get<BuiltinName>(_rhs).handle; },
62
2.27M
    [&](Identifier const& _identifier) { return std::holds_alternative<Identifier>(_rhs) && expressionEqual(_identifier, std::get<Identifier>(_rhs)); },
63
2.27M
  }, _lhs);
64
2.27M
}
65
66
bool SyntacticallyEqual::expressionEqual(Identifier const& _lhs, Identifier const& _rhs)
67
40.3M
{
68
40.3M
  auto lhsIt = m_identifiersLHS.find(_lhs.name);
69
40.3M
  auto rhsIt = m_identifiersRHS.find(_rhs.name);
70
40.3M
  return
71
40.3M
    (lhsIt == m_identifiersLHS.end() && rhsIt == m_identifiersRHS.end() && _lhs.name == _rhs.name) ||
72
3.22M
    (lhsIt != m_identifiersLHS.end() && rhsIt != m_identifiersRHS.end() && lhsIt->second == rhsIt->second);
73
40.3M
}
74
bool SyntacticallyEqual::expressionEqual(Literal const& _lhs, Literal const& _rhs)
75
122M
{
76
122M
  assert(validLiteral(_lhs));
77
122M
  assert(validLiteral(_rhs));
78
122M
  return _lhs.value == _rhs.value;
79
122M
}
80
81
bool SyntacticallyEqual::statementEqual(ExpressionStatement const& _lhs, ExpressionStatement const& _rhs)
82
194k
{
83
194k
  return (*this)(_lhs.expression, _rhs.expression);
84
194k
}
85
bool SyntacticallyEqual::statementEqual(Assignment const& _lhs, Assignment const& _rhs)
86
93.8k
{
87
93.8k
  return util::containerEqual(
88
93.8k
    _lhs.variableNames,
89
93.8k
    _rhs.variableNames,
90
93.8k
    [this](Identifier const& _lhsVarName, Identifier const& _rhsVarName) -> bool {
91
93.8k
      return this->expressionEqual(_lhsVarName, _rhsVarName);
92
93.8k
    }
93
93.8k
  ) && (*this)(*_lhs.value, *_rhs.value);
94
93.8k
}
95
96
bool SyntacticallyEqual::statementEqual(VariableDeclaration const& _lhs, VariableDeclaration const& _rhs)
97
1.14M
{
98
  // first visit expression, then variable declarations
99
1.14M
  if (!compareUniquePtr<Expression, &SyntacticallyEqual::operator()>(_lhs.value, _rhs.value))
100
53
    return false;
101
1.14M
  return util::containerEqual(_lhs.variables, _rhs.variables, [this](NameWithDebugData const& _lhsVarName, NameWithDebugData const& _rhsVarName) -> bool {
102
1.14M
    return this->visitDeclaration(_lhsVarName, _rhsVarName);
103
1.14M
  });
104
1.14M
}
105
106
bool SyntacticallyEqual::statementEqual(FunctionDefinition const& _lhs, FunctionDefinition const& _rhs)
107
170k
{
108
177k
  auto compare = [this](NameWithDebugData const& _lhsVarName, NameWithDebugData const& _rhsVarName) -> bool {
109
177k
    return this->visitDeclaration(_lhsVarName, _rhsVarName);
110
177k
  };
111
  // first visit parameter declarations, then body
112
170k
  if (!util::containerEqual(_lhs.parameters, _rhs.parameters, compare))
113
20.5k
    return false;
114
150k
  if (!util::containerEqual(_lhs.returnVariables, _rhs.returnVariables, compare))
115
6.74k
    return false;
116
143k
  return statementEqual(_lhs.body, _rhs.body);
117
150k
}
118
119
bool SyntacticallyEqual::statementEqual(If const& _lhs, If const& _rhs)
120
42.7k
{
121
42.7k
  return
122
42.7k
    compareUniquePtr<Expression, &SyntacticallyEqual::operator()>(_lhs.condition, _rhs.condition) &&
123
42.7k
    statementEqual(_lhs.body, _rhs.body);
124
42.7k
}
125
126
bool SyntacticallyEqual::statementEqual(Switch const& _lhs, Switch const& _rhs)
127
10.8k
{
128
10.8k
  std::set<Case const*, SwitchCaseCompareByLiteralValue> lhsCases;
129
10.8k
  std::set<Case const*, SwitchCaseCompareByLiteralValue> rhsCases;
130
10.8k
  for (auto const& lhsCase: _lhs.cases)
131
30.8k
    lhsCases.insert(&lhsCase);
132
10.8k
  for (auto const& rhsCase: _rhs.cases)
133
30.8k
    rhsCases.insert(&rhsCase);
134
10.8k
  return
135
10.8k
    compareUniquePtr<Expression, &SyntacticallyEqual::operator()>(_lhs.expression, _rhs.expression) &&
136
30.8k
    util::containerEqual(lhsCases, rhsCases, [this](Case const* _lhsCase, Case const* _rhsCase) -> bool {
137
30.8k
      return this->switchCaseEqual(*_lhsCase, *_rhsCase);
138
30.8k
    });
139
10.8k
}
140
141
142
bool SyntacticallyEqual::switchCaseEqual(Case const& _lhs, Case const& _rhs)
143
30.8k
{
144
30.8k
  return
145
30.8k
    compareUniquePtr<Literal, &SyntacticallyEqual::expressionEqual>(_lhs.value, _rhs.value) &&
146
30.8k
    statementEqual(_lhs.body, _rhs.body);
147
30.8k
}
148
149
bool SyntacticallyEqual::statementEqual(ForLoop const& _lhs, ForLoop const& _rhs)
150
71.1k
{
151
71.1k
  return
152
71.1k
    statementEqual(_lhs.pre, _rhs.pre) &&
153
71.1k
    compareUniquePtr<Expression, &SyntacticallyEqual::operator()>(_lhs.condition, _rhs.condition) &&
154
71.1k
    statementEqual(_lhs.body, _rhs.body) &&
155
71.1k
    statementEqual(_lhs.post, _rhs.post);
156
71.1k
}
157
158
bool SyntacticallyEqual::statementEqual(Block const& _lhs, Block const& _rhs)
159
431k
{
160
1.62M
  return util::containerEqual(_lhs.statements, _rhs.statements, [this](Statement const& _lhsStmt, Statement const& _rhsStmt) -> bool {
161
1.62M
    return (*this)(_lhsStmt, _rhsStmt);
162
1.62M
  });
163
431k
}
164
165
bool SyntacticallyEqual::visitDeclaration(NameWithDebugData const& _lhs, NameWithDebugData const& _rhs)
166
1.32M
{
167
1.32M
  std::size_t id = m_idsUsed++;
168
1.32M
  m_identifiersLHS[_lhs.name] = id;
169
1.32M
  m_identifiersRHS[_rhs.name] = id;
170
1.32M
  return true;
171
1.32M
}
172
173
bool SyntacticallyEqualExpression::operator()(Expression const& _lhs, Expression const& _rhs) const
174
103M
{
175
103M
  return SyntacticallyEqual{}(_lhs, _rhs);
176
103M
}
177