@@ -25,6 +25,7 @@ use crate::optimizations::remappings::optimize_remappings;
2525use crate :: optimizations:: reorder_statements:: reorder_statements;
2626use crate :: optimizations:: return_optimization:: return_optimization;
2727use crate :: optimizations:: split_structs:: split_structs;
28+ use crate :: optimizations:: variable_forwarding:: variable_forwarding;
2829use crate :: reorganize_blocks:: reorganize_blocks;
2930
3031/// Enum of the optimization phases that can be used in a strategy.
@@ -47,6 +48,7 @@ pub enum OptimizationPhase<'db> {
4748 ReturnOptimization ,
4849 SplitStructs ,
4950 TrimUnreachable ,
51+ VariableForwarding ,
5052 GasRedeposit ,
5153 /// The following is not really an optimization but we want to apply optimizations before and
5254 /// after it, so it is convenient to treat it as an optimization.
@@ -103,6 +105,7 @@ impl<'db> ApplyOptimization<'db> for OptimizationPhase<'db> {
103105 OptimizationPhase :: ReturnOptimization => return_optimization ( db, lowered) ,
104106 OptimizationPhase :: SplitStructs => split_structs ( lowered) ,
105107 OptimizationPhase :: TrimUnreachable => trim_unreachable ( db, lowered) ,
108+ OptimizationPhase :: VariableForwarding => variable_forwarding ( db, lowered) ,
106109 OptimizationPhase :: LowerImplicits => lower_implicits ( db, function, lowered) ,
107110 OptimizationPhase :: GasRedeposit => gas_redeposit ( db, function, lowered) ,
108111 OptimizationPhase :: Validate => validate ( lowered) . unwrap_or_else ( |err| {
@@ -190,6 +193,12 @@ pub fn baseline_optimization_strategy<'db>(db: &'db dyn Database) -> Optimizatio
190193 OptimizationPhase :: ReorderStatements ,
191194 OptimizationPhase :: BranchInversion ,
192195 OptimizationPhase :: CancelOps ,
196+ OptimizationPhase :: ReorderStatements ,
197+ OptimizationPhase :: VariableForwarding ,
198+ OptimizationPhase :: ReorderStatements ,
199+ OptimizationPhase :: ReorganizeBlocks ,
200+ OptimizationPhase :: OptimizeMatches ,
201+ OptimizationPhase :: ReorderStatements ,
193202 // Must be right before const folding.
194203 OptimizationPhase :: ReorganizeBlocks ,
195204 OptimizationPhase :: ConstFolding ,
@@ -201,6 +210,9 @@ pub fn baseline_optimization_strategy<'db>(db: &'db dyn Database) -> Optimizatio
201210 OptimizationPhase :: ReorganizeBlocks ,
202211 OptimizationPhase :: Reboxing ,
203212 OptimizationPhase :: CancelOps ,
213+ OptimizationPhase :: ReorderStatements ,
214+ OptimizationPhase :: VariableForwarding ,
215+ OptimizationPhase :: ReorderStatements ,
204216 OptimizationPhase :: ReorganizeBlocks ,
205217 // Performing CSE here after blocks are the most contiguous, to reach maximum
206218 // effect.
0 commit comments