Coverage Report

Created: 2025-06-24 07:59

/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
10.8M
  {
80
10.8M
    Step::run(_context, _ast);
81
10.8M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::BlockFlattener>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
778k
  {
80
778k
    Step::run(_context, _ast);
81
778k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CircularReferencesPruner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
695k
  {
80
695k
    Step::run(_context, _ast);
81
695k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CommonSubexpressionEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
911k
  {
80
911k
    Step::run(_context, _ast);
81
911k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
292k
  {
80
292k
    Step::run(_context, _ast);
81
292k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalUnsimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
369k
  {
80
369k
    Step::run(_context, _ast);
81
369k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ControlFlowSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
463k
  {
80
463k
    Step::run(_context, _ast);
81
463k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::DeadCodeEliminator>::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::EqualStoreEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
77.3k
  {
80
77.3k
    Step::run(_context, _ast);
81
77.3k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EquivalentFunctionCombiner>::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::ExpressionInliner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
77.3k
  {
80
77.3k
    Step::run(_context, _ast);
81
77.3k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionJoiner>::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::ExpressionSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
369k
  {
80
369k
    Step::run(_context, _ast);
81
369k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSplitter>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
231k
  {
80
231k
    Step::run(_context, _ast);
81
231k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionIntoBody>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
231k
  {
80
231k
    Step::run(_context, _ast);
81
231k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionOutOfBody>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
386k
  {
80
386k
    Step::run(_context, _ast);
81
386k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopInitRewriter>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
159k
  {
80
159k
    Step::run(_context, _ast);
81
159k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FullInliner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
231k
  {
80
231k
    Step::run(_context, _ast);
81
231k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionGrouper>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
556k
  {
80
556k
    Step::run(_context, _ast);
81
556k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionHoister>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
159k
  {
80
159k
    Step::run(_context, _ast);
81
159k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionSpecializer>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
77.3k
  {
80
77.3k
    Step::run(_context, _ast);
81
77.3k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LiteralRematerialiser>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
756k
  {
80
756k
    Step::run(_context, _ast);
81
756k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoadResolver>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
231k
  {
80
231k
    Step::run(_context, _ast);
81
231k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoopInvariantCodeMotion>::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::UnusedAssignEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
386k
  {
80
386k
    Step::run(_context, _ast);
81
386k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedStoreEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
77.3k
  {
80
77.3k
    Step::run(_context, _ast);
81
77.3k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::Rematerialiser>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
231k
  {
80
231k
    Step::run(_context, _ast);
81
231k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSAReverser>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
154k
  {
80
154k
    Step::run(_context, _ast);
81
154k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSATransform>::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::StructuralSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
447k
  {
80
447k
    Step::run(_context, _ast);
81
447k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedFunctionParameterPruner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
77.3k
  {
80
77.3k
    Step::run(_context, _ast);
81
77.3k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedPruner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
778k
  {
80
778k
    Step::run(_context, _ast);
81
778k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::VarDeclInitializer>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
79
77.3k
  {
80
77.3k
    Step::run(_context, _ast);
81
77.3k
  }
82
  std::optional<std::string> invalidInCurrentEnvironment() const override
83
11.5M
  {
84
11.5M
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
11.5M
    else
87
11.5M
      return std::nullopt;
88
11.5M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::BlockFlattener>::invalidInCurrentEnvironment() const
Line
Count
Source
83
778k
  {
84
778k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
778k
    else
87
778k
      return std::nullopt;
88
778k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CircularReferencesPruner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
773k
  {
84
773k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
773k
    else
87
773k
      return std::nullopt;
88
773k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CommonSubexpressionEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
83
927k
  {
84
927k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
927k
    else
87
927k
      return std::nullopt;
88
927k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
83
309k
  {
84
309k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
309k
    else
87
309k
      return std::nullopt;
88
309k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalUnsimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
83
386k
  {
84
386k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
386k
    else
87
386k
      return std::nullopt;
88
386k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ControlFlowSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
83
463k
  {
84
463k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
463k
    else
87
463k
      return std::nullopt;
88
463k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::DeadCodeEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
83
309k
  {
84
309k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
309k
    else
87
309k
      return std::nullopt;
88
309k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EqualStoreEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
83
77.3k
  {
84
77.3k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
77.3k
    else
87
77.3k
      return std::nullopt;
88
77.3k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EquivalentFunctionCombiner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
309k
  {
84
309k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
309k
    else
87
309k
      return std::nullopt;
88
309k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionInliner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
77.3k
  {
84
77.3k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
77.3k
    else
87
77.3k
      return std::nullopt;
88
77.3k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionJoiner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
463k
  {
84
463k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
463k
    else
87
463k
      return std::nullopt;
88
463k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
83
386k
  {
84
386k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
386k
    else
87
386k
      return std::nullopt;
88
386k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSplitter>::invalidInCurrentEnvironment() const
Line
Count
Source
83
231k
  {
84
231k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
231k
    else
87
231k
      return std::nullopt;
88
231k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionIntoBody>::invalidInCurrentEnvironment() const
Line
Count
Source
83
231k
  {
84
231k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
231k
    else
87
231k
      return std::nullopt;
88
231k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionOutOfBody>::invalidInCurrentEnvironment() const
Line
Count
Source
83
386k
  {
84
386k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
386k
    else
87
386k
      return std::nullopt;
88
386k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopInitRewriter>::invalidInCurrentEnvironment() const
Line
Count
Source
83
159k
  {
84
159k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
159k
    else
87
159k
      return std::nullopt;
88
159k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FullInliner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
231k
  {
84
231k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
231k
    else
87
231k
      return std::nullopt;
88
231k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionGrouper>::invalidInCurrentEnvironment() const
Line
Count
Source
83
556k
  {
84
556k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
556k
    else
87
556k
      return std::nullopt;
88
556k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionHoister>::invalidInCurrentEnvironment() const
Line
Count
Source
83
159k
  {
84
159k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
159k
    else
87
159k
      return std::nullopt;
88
159k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionSpecializer>::invalidInCurrentEnvironment() const
Line
Count
Source
83
77.3k
  {
84
77.3k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
77.3k
    else
87
77.3k
      return std::nullopt;
88
77.3k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LiteralRematerialiser>::invalidInCurrentEnvironment() const
Line
Count
Source
83
773k
  {
84
773k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
773k
    else
87
773k
      return std::nullopt;
88
773k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoadResolver>::invalidInCurrentEnvironment() const
Line
Count
Source
83
231k
  {
84
231k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
231k
    else
87
231k
      return std::nullopt;
88
231k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoopInvariantCodeMotion>::invalidInCurrentEnvironment() const
Line
Count
Source
83
309k
  {
84
309k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
309k
    else
87
309k
      return std::nullopt;
88
309k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedAssignEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
83
695k
  {
84
695k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
695k
    else
87
695k
      return std::nullopt;
88
695k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedStoreEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
83
77.3k
  {
84
77.3k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
77.3k
    else
87
77.3k
      return std::nullopt;
88
77.3k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::Rematerialiser>::invalidInCurrentEnvironment() const
Line
Count
Source
83
231k
  {
84
231k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
231k
    else
87
231k
      return std::nullopt;
88
231k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSAReverser>::invalidInCurrentEnvironment() const
Line
Count
Source
83
154k
  {
84
154k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
154k
    else
87
154k
      return std::nullopt;
88
154k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSATransform>::invalidInCurrentEnvironment() const
Line
Count
Source
83
309k
  {
84
309k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
309k
    else
87
309k
      return std::nullopt;
88
309k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::StructuralSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
83
463k
  {
84
463k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
463k
    else
87
463k
      return std::nullopt;
88
463k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedFunctionParameterPruner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
77.3k
  {
84
77.3k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
77.3k
    else
87
77.3k
      return std::nullopt;
88
77.3k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedPruner>::invalidInCurrentEnvironment() const
Line
Count
Source
83
855k
  {
84
855k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
855k
    else
87
855k
      return std::nullopt;
88
855k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::VarDeclInitializer>::invalidInCurrentEnvironment() const
Line
Count
Source
83
77.3k
  {
84
77.3k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
85
0
      return Step::invalidInCurrentEnvironment();
86
77.3k
    else
87
77.3k
      return std::nullopt;
88
77.3k
  }
89
};
90
91
92
}