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