Coverage Report

Created: 2026-07-13 07:08

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/solidity/libyul/optimiser/SyntacticalEquality.h
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
// SPDX-License-Identifier: GPL-3.0
18
/**
19
 * Component that can compare ASTs for equality on a syntactic basis.
20
 */
21
22
#pragma once
23
24
#include <libyul/ASTForward.h>
25
#include <libyul/YulName.h>
26
27
#include <map>
28
#include <type_traits>
29
30
namespace solidity::yul
31
{
32
33
34
/**
35
 * Component that can compare ASTs for equality on a syntactic basis.
36
 * Ignores source locations and allows for different variable names but requires exact matches otherwise.
37
 * Literals are compared based on their values, e.g., `0x01`, `1`, `"\x01"` and `true` all evaluate as equal.
38
 * Note that this does not apply to unlimited literal strings, which are never considered equal to normal literals,
39
 * even when the values would look like identical strings in the source.
40
 *
41
 * Prerequisite: Disambiguator (unless only expressions are compared)
42
 */
43
class SyntacticallyEqual
44
{
45
public:
46
  bool operator()(Expression const& _lhs, Expression const& _rhs);
47
  bool operator()(Statement const& _lhs, Statement const& _rhs);
48
49
  bool expressionEqual(FunctionCall const& _lhs, FunctionCall const& _rhs);
50
  bool expressionEqual(Identifier const& _lhs, Identifier const& _rhs);
51
  bool expressionEqual(FunctionName const& _lhs, FunctionName const& _rhs);
52
  bool expressionEqual(Literal const& _lhs, Literal const& _rhs);
53
54
  bool statementEqual(ExpressionStatement const& _lhs, ExpressionStatement const& _rhs);
55
  bool statementEqual(Assignment const& _lhs, Assignment const& _rhs);
56
  bool statementEqual(VariableDeclaration const& _lhs, VariableDeclaration const& _rhs);
57
  bool statementEqual(FunctionDefinition const& _lhs, FunctionDefinition const& _rhs);
58
  bool statementEqual(If const& _lhs, If const& _rhs);
59
  bool statementEqual(Switch const& _lhs, Switch const& _rhs);
60
  bool switchCaseEqual(Case const& _lhs, Case const& _rhs);
61
  bool statementEqual(ForLoop const& _lhs, ForLoop const& _rhs);
62
20.1k
  bool statementEqual(Break const&, Break const&) { return true; }
63
2.36k
  bool statementEqual(Continue const&, Continue const&) { return true; }
64
18.4k
  bool statementEqual(Leave const&, Leave const&) { return true; }
65
  bool statementEqual(Block const& _lhs, Block const& _rhs);
66
private:
67
  bool visitDeclaration(NameWithDebugData const& _lhs, NameWithDebugData const& _rhs);
68
69
  template<typename U, typename V>
70
  bool expressionEqual(U const&, V const&, std::enable_if_t<!std::is_same<U, V>::value>* = nullptr)
71
1.51M
  {
72
1.51M
    return false;
73
1.51M
  }
_ZN8solidity3yul18SyntacticallyEqual15expressionEqualINS0_12FunctionCallENS0_10IdentifierEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Line
Count
Source
71
387
  {
72
387
    return false;
73
387
  }
_ZN8solidity3yul18SyntacticallyEqual15expressionEqualINS0_12FunctionCallENS0_7LiteralEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Line
Count
Source
71
284
  {
72
284
    return false;
73
284
  }
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual15expressionEqualINS0_10IdentifierENS0_12FunctionCallEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
_ZN8solidity3yul18SyntacticallyEqual15expressionEqualINS0_10IdentifierENS0_7LiteralEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Line
Count
Source
71
676k
  {
72
676k
    return false;
73
676k
  }
_ZN8solidity3yul18SyntacticallyEqual15expressionEqualINS0_7LiteralENS0_12FunctionCallEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Line
Count
Source
71
59.0k
  {
72
59.0k
    return false;
73
59.0k
  }
_ZN8solidity3yul18SyntacticallyEqual15expressionEqualINS0_7LiteralENS0_10IdentifierEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Line
Count
Source
71
783k
  {
72
783k
    return false;
73
783k
  }
74
75
  template<typename U, typename V>
76
  bool statementEqual(U const&, V const&, std::enable_if_t<!std::is_same<U, V>::value>* = nullptr)
77
0
  {
78
0
    return false;
79
0
  }
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19ExpressionStatementENS0_10AssignmentEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19ExpressionStatementENS0_19VariableDeclarationEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19ExpressionStatementENS0_18FunctionDefinitionEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19ExpressionStatementENS0_2IfEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19ExpressionStatementENS0_6SwitchEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19ExpressionStatementENS0_7ForLoopEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19ExpressionStatementENS0_5BreakEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19ExpressionStatementENS0_8ContinueEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19ExpressionStatementENS0_5LeaveEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19ExpressionStatementENS0_5BlockEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_10AssignmentENS0_19ExpressionStatementEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_10AssignmentENS0_19VariableDeclarationEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_10AssignmentENS0_18FunctionDefinitionEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_10AssignmentENS0_2IfEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_10AssignmentENS0_6SwitchEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_10AssignmentENS0_7ForLoopEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_10AssignmentENS0_5BreakEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_10AssignmentENS0_8ContinueEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_10AssignmentENS0_5LeaveEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_10AssignmentENS0_5BlockEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19VariableDeclarationENS0_19ExpressionStatementEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19VariableDeclarationENS0_10AssignmentEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19VariableDeclarationENS0_18FunctionDefinitionEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19VariableDeclarationENS0_2IfEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19VariableDeclarationENS0_6SwitchEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19VariableDeclarationENS0_7ForLoopEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19VariableDeclarationENS0_5BreakEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19VariableDeclarationENS0_8ContinueEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19VariableDeclarationENS0_5LeaveEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_19VariableDeclarationENS0_5BlockEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_18FunctionDefinitionENS0_19ExpressionStatementEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_18FunctionDefinitionENS0_10AssignmentEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_18FunctionDefinitionENS0_19VariableDeclarationEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_18FunctionDefinitionENS0_2IfEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_18FunctionDefinitionENS0_6SwitchEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_18FunctionDefinitionENS0_7ForLoopEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_18FunctionDefinitionENS0_5BreakEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_18FunctionDefinitionENS0_8ContinueEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_18FunctionDefinitionENS0_5LeaveEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_18FunctionDefinitionENS0_5BlockEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_2IfENS0_19ExpressionStatementEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_2IfENS0_10AssignmentEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_2IfENS0_19VariableDeclarationEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_2IfENS0_18FunctionDefinitionEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_2IfENS0_6SwitchEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_2IfENS0_7ForLoopEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_2IfENS0_5BreakEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_2IfENS0_8ContinueEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_2IfENS0_5LeaveEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_2IfENS0_5BlockEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_6SwitchENS0_19ExpressionStatementEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_6SwitchENS0_10AssignmentEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_6SwitchENS0_19VariableDeclarationEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_6SwitchENS0_18FunctionDefinitionEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_6SwitchENS0_2IfEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_6SwitchENS0_7ForLoopEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_6SwitchENS0_5BreakEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_6SwitchENS0_8ContinueEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_6SwitchENS0_5LeaveEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_6SwitchENS0_5BlockEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_7ForLoopENS0_19ExpressionStatementEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_7ForLoopENS0_10AssignmentEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_7ForLoopENS0_19VariableDeclarationEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_7ForLoopENS0_18FunctionDefinitionEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_7ForLoopENS0_2IfEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_7ForLoopENS0_6SwitchEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_7ForLoopENS0_5BreakEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_7ForLoopENS0_8ContinueEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_7ForLoopENS0_5LeaveEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_7ForLoopENS0_5BlockEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BreakENS0_19ExpressionStatementEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BreakENS0_10AssignmentEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BreakENS0_19VariableDeclarationEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BreakENS0_18FunctionDefinitionEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BreakENS0_2IfEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BreakENS0_6SwitchEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BreakENS0_7ForLoopEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BreakENS0_8ContinueEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BreakENS0_5LeaveEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BreakENS0_5BlockEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_8ContinueENS0_19ExpressionStatementEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_8ContinueENS0_10AssignmentEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_8ContinueENS0_19VariableDeclarationEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_8ContinueENS0_18FunctionDefinitionEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_8ContinueENS0_2IfEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_8ContinueENS0_6SwitchEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_8ContinueENS0_7ForLoopEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_8ContinueENS0_5BreakEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_8ContinueENS0_5LeaveEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_8ContinueENS0_5BlockEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5LeaveENS0_19ExpressionStatementEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5LeaveENS0_10AssignmentEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5LeaveENS0_19VariableDeclarationEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5LeaveENS0_18FunctionDefinitionEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5LeaveENS0_2IfEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5LeaveENS0_6SwitchEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5LeaveENS0_7ForLoopEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5LeaveENS0_5BreakEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5LeaveENS0_8ContinueEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5LeaveENS0_5BlockEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BlockENS0_19ExpressionStatementEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BlockENS0_10AssignmentEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BlockENS0_19VariableDeclarationEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BlockENS0_18FunctionDefinitionEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BlockENS0_2IfEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BlockENS0_6SwitchEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BlockENS0_7ForLoopEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BlockENS0_5BreakEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BlockENS0_8ContinueEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
Unexecuted instantiation: _ZN8solidity3yul18SyntacticallyEqual14statementEqualINS0_5BlockENS0_5LeaveEEEbRKT_RKT0_PNSt3__19enable_ifIXntsr3std7is_sameIS5_S8_EE5valueEvE4typeE
80
81
  template<typename T, bool (SyntacticallyEqual::*CompareMember)(T const&, T const&)>
82
  bool compareUniquePtr(std::unique_ptr<T> const& _lhs, std::unique_ptr<T> const& _rhs)
83
1.00M
  {
84
1.00M
    return (_lhs == _rhs) || (_lhs && _rhs && (this->*CompareMember)(*_lhs, *_rhs));
85
1.00M
  }
_ZN8solidity3yul18SyntacticallyEqual16compareUniquePtrINSt3__17variantIJNS0_12FunctionCallENS0_10IdentifierENS0_7LiteralEEEETnMS1_FbRKT_SB_EXadL_ZNS1_clERKS8_SF_EEEEbRKNS3_10unique_ptrIS9_NS3_14default_deleteIS9_EEEESL_
Line
Count
Source
83
988k
  {
84
988k
    return (_lhs == _rhs) || (_lhs && _rhs && (this->*CompareMember)(*_lhs, *_rhs));
85
988k
  }
_ZN8solidity3yul18SyntacticallyEqual16compareUniquePtrINS0_7LiteralETnMS1_FbRKT_S6_EXadL_ZNS1_15expressionEqualERKS3_SA_EEEEbRKNSt3__110unique_ptrIS4_NSB_14default_deleteIS4_EEEESH_
Line
Count
Source
83
19.4k
  {
84
19.4k
    return (_lhs == _rhs) || (_lhs && _rhs && (this->*CompareMember)(*_lhs, *_rhs));
85
19.4k
  }
86
87
  std::size_t m_idsUsed = 0;
88
  std::map<YulName, std::size_t> m_identifiersLHS;
89
  std::map<YulName, std::size_t> m_identifiersRHS;
90
};
91
92
/**
93
 * Does the same as SyntacticallyEqual just that the operator() function is const.
94
 */
95
struct SyntacticallyEqualExpression
96
{
97
  bool operator()(Expression const& _lhs, Expression const& _rhs) const;
98
};
99
100
101
}