/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 | | } |