Coverage Report

Created: 2025-09-08 08:10

/src/solidity/libyul/optimiser/OptimiserStep.h
Line
Count
Source (jump to first uncovered line)
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
#pragma once
20
21
#include <libyul/Exceptions.h>
22
23
#include <optional>
24
#include <string>
25
#include <set>
26
27
namespace solidity::yul
28
{
29
30
class Dialect;
31
struct Block;
32
class NameDispenser;
33
34
struct OptimiserStepContext
35
{
36
  Dialect const& dialect;
37
  NameDispenser& dispenser;
38
  std::set<YulName> const& reservedIdentifiers;
39
  /// The value nullopt represents creation code
40
  std::optional<size_t> expectedExecutionsPerDeployment;
41
};
42
43
44
/**
45
 * Construction to create dynamically callable objects out of the
46
 * statically callable optimiser steps.
47
 */
48
struct OptimiserStep
49
{
50
256
  explicit OptimiserStep(std::string _name): name(std::move(_name)) {}
51
256
  virtual ~OptimiserStep() = default;
52
53
  virtual void run(OptimiserStepContext&, Block&) const = 0;
54
  /// @returns non-nullopt if the step cannot be run, for example because it requires
55
  /// an SMT solver to be loaded, but none is available. In that case, the string
56
  /// contains a human-readable reason.
57
  virtual std::optional<std::string> invalidInCurrentEnvironment() const = 0;
58
  std::string name;
59
};
60
61
template <class Step>
62
struct OptimiserStepInstance: public OptimiserStep
63
{
64
private:
65
  template<typename T>
66
  struct HasInvalidInCurrentEnvironmentMethod
67
  {
68
  private:
69
    template<typename U> static auto test(int) -> decltype(U::invalidInCurrentEnvironment(), std::true_type());
70
    template<typename> static std::false_type test(...);
71
72
  public:
73
    static constexpr bool value = decltype(test<T>(0))::value;
74
  };
75
76
public:
77
256
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::BlockFlattener>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::CircularReferencesPruner>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::CommonSubexpressionEliminator>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalSimplifier>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalUnsimplifier>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ControlFlowSimplifier>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::DeadCodeEliminator>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::EqualStoreEliminator>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::EquivalentFunctionCombiner>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionInliner>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionJoiner>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSimplifier>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSplitter>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionIntoBody>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionOutOfBody>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopInitRewriter>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::FullInliner>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionGrouper>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionHoister>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionSpecializer>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::LiteralRematerialiser>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::LoadResolver>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::LoopInvariantCodeMotion>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedAssignEliminator>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedStoreEliminator>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::Rematerialiser>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::SSAReverser>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::SSATransform>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::StructuralSimplifier>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedFunctionParameterPruner>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedPruner>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::VarDeclInitializer>::OptimiserStepInstance()
Line
Count
Source
77
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
78
  void run(OptimiserStepContext& _context, Block& _ast) const override
79
9.11M
  {
80
9.11M
    Step::run(_context, _ast);
81
9.11M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::BlockFlattener>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
656k
  {
80
656k
    Step::run(_context, _ast);
81
656k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CircularReferencesPruner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
584k
  {
80
584k
    Step::run(_context, _ast);
81
584k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CommonSubexpressionEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
764k
  {
80
764k
    Step::run(_context, _ast);
81
764k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
244k
  {
80
244k
    Step::run(_context, _ast);
81
244k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalUnsimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
309k
  {
80
309k
    Step::run(_context, _ast);
81
309k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ControlFlowSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
389k
  {
80
389k
    Step::run(_context, _ast);
81
389k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::DeadCodeEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
259k
  {
80
259k
    Step::run(_context, _ast);
81
259k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EqualStoreEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
64.9k
  {
80
64.9k
    Step::run(_context, _ast);
81
64.9k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EquivalentFunctionCombiner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
259k
  {
80
259k
    Step::run(_context, _ast);
81
259k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionInliner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
64.9k
  {
80
64.9k
    Step::run(_context, _ast);
81
64.9k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionJoiner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
259k
  {
80
259k
    Step::run(_context, _ast);
81
259k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
309k
  {
80
309k
    Step::run(_context, _ast);
81
309k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSplitter>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
194k
  {
80
194k
    Step::run(_context, _ast);
81
194k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionIntoBody>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
194k
  {
80
194k
    Step::run(_context, _ast);
81
194k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionOutOfBody>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
324k
  {
80
324k
    Step::run(_context, _ast);
81
324k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopInitRewriter>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
136k
  {
80
136k
    Step::run(_context, _ast);
81
136k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FullInliner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
194k
  {
80
194k
    Step::run(_context, _ast);
81
194k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionGrouper>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
473k
  {
80
473k
    Step::run(_context, _ast);
81
473k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionHoister>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
136k
  {
80
136k
    Step::run(_context, _ast);
81
136k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionSpecializer>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
64.9k
  {
80
64.9k
    Step::run(_context, _ast);
81
64.9k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LiteralRematerialiser>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
634k
  {
80
634k
    Step::run(_context, _ast);
81
634k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoadResolver>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
194k
  {
80
194k
    Step::run(_context, _ast);
81
194k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoopInvariantCodeMotion>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
259k
  {
80
259k
    Step::run(_context, _ast);
81
259k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedAssignEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
324k
  {
80
324k
    Step::run(_context, _ast);
81
324k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedStoreEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
64.9k
  {
80
64.9k
    Step::run(_context, _ast);
81
64.9k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::Rematerialiser>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
194k
  {
80
194k
    Step::run(_context, _ast);
81
194k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSAReverser>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
129k
  {
80
129k
    Step::run(_context, _ast);
81
129k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSATransform>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
259k
  {
80
259k
    Step::run(_context, _ast);
81
259k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::StructuralSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
374k
  {
80
374k
    Step::run(_context, _ast);
81
374k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedFunctionParameterPruner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
64.9k
  {
80
64.9k
    Step::run(_context, _ast);
81
64.9k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedPruner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
656k
  {
80
656k
    Step::run(_context, _ast);
81
656k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::VarDeclInitializer>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
64.9k
  {
80
64.9k
    Step::run(_context, _ast);
81
64.9k
  }
82
  std::optional<std::string> invalidInCurrentEnvironment() const override
83
9.72M
  {
84
9.72M
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
9.72M
    else
87
9.72M
      return std::nullopt;
88
9.72M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::BlockFlattener>::invalidInCurrentEnvironment() const
Line
Count
Source
83
656k
  {
84
656k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
656k
    else
87
656k
      return std::nullopt;
88
656k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CircularReferencesPruner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
649k
  {
84
649k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
649k
    else
87
649k
      return std::nullopt;
88
649k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CommonSubexpressionEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
83
779k
  {
84
779k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
779k
    else
87
779k
      return std::nullopt;
88
779k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
83
259k
  {
84
259k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
259k
    else
87
259k
      return std::nullopt;
88
259k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalUnsimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
83
324k
  {
84
324k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
324k
    else
87
324k
      return std::nullopt;
88
324k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ControlFlowSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
83
389k
  {
84
389k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
389k
    else
87
389k
      return std::nullopt;
88
389k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::DeadCodeEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
83
259k
  {
84
259k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
259k
    else
87
259k
      return std::nullopt;
88
259k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EqualStoreEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
83
64.9k
  {
84
64.9k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
64.9k
    else
87
64.9k
      return std::nullopt;
88
64.9k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EquivalentFunctionCombiner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
259k
  {
84
259k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
259k
    else
87
259k
      return std::nullopt;
88
259k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionInliner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
64.9k
  {
84
64.9k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
64.9k
    else
87
64.9k
      return std::nullopt;
88
64.9k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionJoiner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
389k
  {
84
389k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
389k
    else
87
389k
      return std::nullopt;
88
389k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
83
324k
  {
84
324k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
324k
    else
87
324k
      return std::nullopt;
88
324k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSplitter>::invalidInCurrentEnvironment() const
Line
Count
Source
83
194k
  {
84
194k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
194k
    else
87
194k
      return std::nullopt;
88
194k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionIntoBody>::invalidInCurrentEnvironment() const
Line
Count
Source
83
194k
  {
84
194k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
194k
    else
87
194k
      return std::nullopt;
88
194k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionOutOfBody>::invalidInCurrentEnvironment() const
Line
Count
Source
83
324k
  {
84
324k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
324k
    else
87
324k
      return std::nullopt;
88
324k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopInitRewriter>::invalidInCurrentEnvironment() const
Line
Count
Source
83
136k
  {
84
136k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
136k
    else
87
136k
      return std::nullopt;
88
136k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FullInliner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
194k
  {
84
194k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
194k
    else
87
194k
      return std::nullopt;
88
194k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionGrouper>::invalidInCurrentEnvironment() const
Line
Count
Source
83
473k
  {
84
473k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
473k
    else
87
473k
      return std::nullopt;
88
473k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionHoister>::invalidInCurrentEnvironment() const
Line
Count
Source
83
136k
  {
84
136k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
136k
    else
87
136k
      return std::nullopt;
88
136k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionSpecializer>::invalidInCurrentEnvironment() const
Line
Count
Source
83
64.9k
  {
84
64.9k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
64.9k
    else
87
64.9k
      return std::nullopt;
88
64.9k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LiteralRematerialiser>::invalidInCurrentEnvironment() const
Line
Count
Source
83
649k
  {
84
649k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
649k
    else
87
649k
      return std::nullopt;
88
649k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoadResolver>::invalidInCurrentEnvironment() const
Line
Count
Source
83
194k
  {
84
194k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
194k
    else
87
194k
      return std::nullopt;
88
194k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoopInvariantCodeMotion>::invalidInCurrentEnvironment() const
Line
Count
Source
83
259k
  {
84
259k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
259k
    else
87
259k
      return std::nullopt;
88
259k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedAssignEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
83
584k
  {
84
584k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
584k
    else
87
584k
      return std::nullopt;
88
584k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedStoreEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
83
64.9k
  {
84
64.9k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
64.9k
    else
87
64.9k
      return std::nullopt;
88
64.9k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::Rematerialiser>::invalidInCurrentEnvironment() const
Line
Count
Source
83
194k
  {
84
194k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
194k
    else
87
194k
      return std::nullopt;
88
194k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSAReverser>::invalidInCurrentEnvironment() const
Line
Count
Source
83
129k
  {
84
129k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
129k
    else
87
129k
      return std::nullopt;
88
129k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSATransform>::invalidInCurrentEnvironment() const
Line
Count
Source
83
259k
  {
84
259k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
259k
    else
87
259k
      return std::nullopt;
88
259k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::StructuralSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
83
389k
  {
84
389k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
389k
    else
87
389k
      return std::nullopt;
88
389k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedFunctionParameterPruner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
64.9k
  {
84
64.9k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
64.9k
    else
87
64.9k
      return std::nullopt;
88
64.9k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedPruner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
721k
  {
84
721k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
721k
    else
87
721k
      return std::nullopt;
88
721k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::VarDeclInitializer>::invalidInCurrentEnvironment() const
Line
Count
Source
83
64.9k
  {
84
64.9k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
64.9k
    else
87
64.9k
      return std::nullopt;
88
64.9k
  }
89
};
90
91
92
}