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