Coverage Report

Created: 2022-08-24 06:55

/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
struct Dialect;
31
struct Block;
32
class YulString;
33
class NameDispenser;
34
35
struct OptimiserStepContext
36
{
37
  Dialect const& dialect;
38
  NameDispenser& dispenser;
39
  std::set<YulString> const& reservedIdentifiers;
40
  /// The value nullopt represents creation code
41
  std::optional<size_t> expectedExecutionsPerDeployment;
42
};
43
44
45
/**
46
 * Construction to create dynamically callable objects out of the
47
 * statically callable optimiser steps.
48
 */
49
struct OptimiserStep
50
{
51
264
  explicit OptimiserStep(std::string _name): name(std::move(_name)) {}
52
264
  virtual ~OptimiserStep() = default;
53
54
  virtual void run(OptimiserStepContext&, Block&) const = 0;
55
  /// @returns non-nullopt if the step cannot be run, for example because it requires
56
  /// an SMT solver to be loaded, but none is available. In that case, the string
57
  /// contains a human-readable reason.
58
  virtual std::optional<std::string> invalidInCurrentEnvironment() const = 0;
59
  std::string name;
60
};
61
62
template <class Step>
63
struct OptimiserStepInstance: public OptimiserStep
64
{
65
private:
66
  template<typename T>
67
  struct HasInvalidInCurrentEnvironmentMethod
68
  {
69
  private:
70
    template<typename U> static auto test(int) -> decltype(U::invalidInCurrentEnvironment(), std::true_type());
71
    template<typename> static std::false_type test(...);
72
73
  public:
74
    static constexpr bool value = decltype(test<T>(0))::value;
75
  };
76
77
public:
78
264
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::BlockFlattener>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::CircularReferencesPruner>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::CommonSubexpressionEliminator>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalSimplifier>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalUnsimplifier>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ControlFlowSimplifier>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::DeadCodeEliminator>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::EqualStoreEliminator>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::EquivalentFunctionCombiner>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionInliner>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionJoiner>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSimplifier>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSplitter>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionIntoBody>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionOutOfBody>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopInitRewriter>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::FullInliner>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionGrouper>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionHoister>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionSpecializer>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::LiteralRematerialiser>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::LoadResolver>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::LoopInvariantCodeMotion>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedAssignEliminator>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedStoreEliminator>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::ReasoningBasedSimplifier>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::Rematerialiser>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::SSAReverser>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::SSATransform>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::StructuralSimplifier>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedFunctionParameterPruner>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedPruner>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
solidity::yul::OptimiserStepInstance<solidity::yul::VarDeclInitializer>::OptimiserStepInstance()
Line
Count
Source
78
8
  OptimiserStepInstance(): OptimiserStep{Step::name} {}
79
  void run(OptimiserStepContext& _context, Block& _ast) const override
80
14.1M
  {
81
14.1M
    Step::run(_context, _ast);
82
14.1M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::BlockFlattener>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
711k
  {
81
711k
    Step::run(_context, _ast);
82
711k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CircularReferencesPruner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
1.29M
  {
81
1.29M
    Step::run(_context, _ast);
82
1.29M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CommonSubexpressionEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
1.27M
  {
81
1.27M
    Step::run(_context, _ast);
82
1.27M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
274k
  {
81
274k
    Step::run(_context, _ast);
82
274k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalUnsimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
334k
  {
81
334k
    Step::run(_context, _ast);
82
334k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ControlFlowSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
591k
  {
81
591k
    Step::run(_context, _ast);
82
591k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::DeadCodeEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
394k
  {
81
394k
    Step::run(_context, _ast);
82
394k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EqualStoreEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
137k
  {
81
137k
    Step::run(_context, _ast);
82
137k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EquivalentFunctionCombiner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
197k
  {
81
197k
    Step::run(_context, _ast);
82
197k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionInliner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
137k
  {
81
137k
    Step::run(_context, _ast);
82
137k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionJoiner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
480k
  {
81
480k
    Step::run(_context, _ast);
82
480k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
274k
  {
81
274k
    Step::run(_context, _ast);
82
274k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSplitter>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
412k
  {
81
412k
    Step::run(_context, _ast);
82
412k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionIntoBody>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
334k
  {
81
334k
    Step::run(_context, _ast);
82
334k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionOutOfBody>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
394k
  {
81
394k
    Step::run(_context, _ast);
82
394k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopInitRewriter>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
119k
  {
81
119k
    Step::run(_context, _ast);
82
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FullInliner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
137k
  {
81
137k
    Step::run(_context, _ast);
82
137k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionGrouper>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
376k
  {
81
376k
    Step::run(_context, _ast);
82
376k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionHoister>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
119k
  {
81
119k
    Step::run(_context, _ast);
82
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionSpecializer>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
137k
  {
81
137k
    Step::run(_context, _ast);
82
137k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LiteralRematerialiser>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
866k
  {
81
866k
    Step::run(_context, _ast);
82
866k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoadResolver>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
549k
  {
81
549k
    Step::run(_context, _ast);
82
549k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoopInvariantCodeMotion>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
137k
  {
81
137k
    Step::run(_context, _ast);
82
137k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedAssignEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
1.31M
  {
81
1.31M
    Step::run(_context, _ast);
82
1.31M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedStoreEliminator>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
137k
  {
81
137k
    Step::run(_context, _ast);
82
137k
  }
Unexecuted instantiation: solidity::yul::OptimiserStepInstance<solidity::yul::ReasoningBasedSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
solidity::yul::OptimiserStepInstance<solidity::yul::Rematerialiser>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
119k
  {
81
119k
    Step::run(_context, _ast);
82
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSAReverser>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
197k
  {
81
197k
    Step::run(_context, _ast);
82
197k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSATransform>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
687k
  {
81
687k
    Step::run(_context, _ast);
82
687k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::StructuralSimplifier>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
472k
  {
81
472k
    Step::run(_context, _ast);
82
472k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedFunctionParameterPruner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
137k
  {
81
137k
    Step::run(_context, _ast);
82
137k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedPruner>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
1.29M
  {
81
1.29M
    Step::run(_context, _ast);
82
1.29M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::VarDeclInitializer>::run(solidity::yul::OptimiserStepContext&, solidity::yul::Block&) const
Line
Count
Source
80
59.7k
  {
81
59.7k
    Step::run(_context, _ast);
82
59.7k
  }
83
  std::optional<std::string> invalidInCurrentEnvironment() const override
84
12.9M
  {
85
12.9M
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
12.9M
    else
88
12.9M
      return std::nullopt;
89
12.9M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::BlockFlattener>::invalidInCurrentEnvironment() const
Line
Count
Source
84
657k
  {
85
657k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
657k
    else
88
657k
      return std::nullopt;
89
657k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CircularReferencesPruner>::invalidInCurrentEnvironment() const
Line
Count
Source
84
1.21M
  {
85
1.21M
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
1.21M
    else
88
1.21M
      return std::nullopt;
89
1.21M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::CommonSubexpressionEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
84
1.13M
  {
85
1.13M
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
1.13M
    else
88
1.13M
      return std::nullopt;
89
1.13M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
84
239k
  {
85
239k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
239k
    else
88
239k
      return std::nullopt;
89
239k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ConditionalUnsimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
84
298k
  {
85
298k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
298k
    else
88
298k
      return std::nullopt;
89
298k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ControlFlowSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
84
538k
  {
85
538k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
538k
    else
88
538k
      return std::nullopt;
89
538k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::DeadCodeEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
84
358k
  {
85
358k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
358k
    else
88
358k
      return std::nullopt;
89
358k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EqualStoreEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
84
119k
  {
85
119k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
119k
    else
88
119k
      return std::nullopt;
89
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::EquivalentFunctionCombiner>::invalidInCurrentEnvironment() const
Line
Count
Source
84
179k
  {
85
179k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
179k
    else
88
179k
      return std::nullopt;
89
179k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionInliner>::invalidInCurrentEnvironment() const
Line
Count
Source
84
119k
  {
85
119k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
119k
    else
88
119k
      return std::nullopt;
89
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionJoiner>::invalidInCurrentEnvironment() const
Line
Count
Source
84
496k
  {
85
496k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
496k
    else
88
496k
      return std::nullopt;
89
496k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
84
239k
  {
85
239k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
239k
    else
88
239k
      return std::nullopt;
89
239k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ExpressionSplitter>::invalidInCurrentEnvironment() const
Line
Count
Source
84
358k
  {
85
358k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
358k
    else
88
358k
      return std::nullopt;
89
358k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionIntoBody>::invalidInCurrentEnvironment() const
Line
Count
Source
84
298k
  {
85
298k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
298k
    else
88
298k
      return std::nullopt;
89
298k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopConditionOutOfBody>::invalidInCurrentEnvironment() const
Line
Count
Source
84
358k
  {
85
358k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
358k
    else
88
358k
      return std::nullopt;
89
358k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::ForLoopInitRewriter>::invalidInCurrentEnvironment() const
Line
Count
Source
84
119k
  {
85
119k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
119k
    else
88
119k
      return std::nullopt;
89
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FullInliner>::invalidInCurrentEnvironment() const
Line
Count
Source
84
119k
  {
85
119k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
119k
    else
88
119k
      return std::nullopt;
89
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionGrouper>::invalidInCurrentEnvironment() const
Line
Count
Source
84
358k
  {
85
358k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
358k
    else
88
358k
      return std::nullopt;
89
358k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionHoister>::invalidInCurrentEnvironment() const
Line
Count
Source
84
119k
  {
85
119k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
119k
    else
88
119k
      return std::nullopt;
89
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::FunctionSpecializer>::invalidInCurrentEnvironment() const
Line
Count
Source
84
119k
  {
85
119k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
119k
    else
88
119k
      return std::nullopt;
89
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LiteralRematerialiser>::invalidInCurrentEnvironment() const
Line
Count
Source
84
777k
  {
85
777k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
777k
    else
88
777k
      return std::nullopt;
89
777k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoadResolver>::invalidInCurrentEnvironment() const
Line
Count
Source
84
478k
  {
85
478k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
478k
    else
88
478k
      return std::nullopt;
89
478k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::LoopInvariantCodeMotion>::invalidInCurrentEnvironment() const
Line
Count
Source
84
119k
  {
85
119k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
119k
    else
88
119k
      return std::nullopt;
89
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedAssignEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
84
1.28M
  {
85
1.28M
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
1.28M
    else
88
1.28M
      return std::nullopt;
89
1.28M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedStoreEliminator>::invalidInCurrentEnvironment() const
Line
Count
Source
84
119k
  {
85
119k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
119k
    else
88
119k
      return std::nullopt;
89
119k
  }
Unexecuted instantiation: solidity::yul::OptimiserStepInstance<solidity::yul::ReasoningBasedSimplifier>::invalidInCurrentEnvironment() const
solidity::yul::OptimiserStepInstance<solidity::yul::Rematerialiser>::invalidInCurrentEnvironment() const
Line
Count
Source
84
119k
  {
85
119k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
119k
    else
88
119k
      return std::nullopt;
89
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSAReverser>::invalidInCurrentEnvironment() const
Line
Count
Source
84
179k
  {
85
179k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
179k
    else
88
179k
      return std::nullopt;
89
179k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::SSATransform>::invalidInCurrentEnvironment() const
Line
Count
Source
84
597k
  {
85
597k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
597k
    else
88
597k
      return std::nullopt;
89
597k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::StructuralSimplifier>::invalidInCurrentEnvironment() const
Line
Count
Source
84
418k
  {
85
418k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
418k
    else
88
418k
      return std::nullopt;
89
418k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedFunctionParameterPruner>::invalidInCurrentEnvironment() const
Line
Count
Source
84
119k
  {
85
119k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
119k
    else
88
119k
      return std::nullopt;
89
119k
  }
solidity::yul::OptimiserStepInstance<solidity::yul::UnusedPruner>::invalidInCurrentEnvironment() const
Line
Count
Source
84
1.21M
  {
85
1.21M
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
1.21M
    else
88
1.21M
      return std::nullopt;
89
1.21M
  }
solidity::yul::OptimiserStepInstance<solidity::yul::VarDeclInitializer>::invalidInCurrentEnvironment() const
Line
Count
Source
84
59.7k
  {
85
59.7k
    if constexpr (HasInvalidInCurrentEnvironmentMethod<Step>::value)
86
0
      return Step::invalidInCurrentEnvironment();
87
59.7k
    else
88
59.7k
      return std::nullopt;
89
59.7k
  }
90
};
91
92
93
}