pub enum OptimizationPhase<'db> {
Show 18 variants
ApplyInlining {
enable_const_folding: bool,
},
BranchInversion,
CancelOps,
ConstFolding,
Cse,
DedupBlocks,
EarlyUnsafePanic,
OptimizeMatches,
OptimizeRemappings,
ReorderStatements,
ReorganizeBlocks,
ReturnOptimization,
SplitStructs,
TrimUnreachable,
GasRedeposit,
LowerImplicits,
Validate,
SubStrategy {
strategy: OptimizationStrategyId<'db>,
iterations: usize,
},
}Expand description
Enum of the optimization phases that can be used in a strategy.
Variants§
ApplyInlining
BranchInversion
CancelOps
ConstFolding
Cse
DedupBlocks
EarlyUnsafePanic
OptimizeMatches
OptimizeRemappings
ReorderStatements
ReorganizeBlocks
ReturnOptimization
SplitStructs
TrimUnreachable
GasRedeposit
LowerImplicits
The following is not really an optimization but we want to apply optimizations before and after it, so it is convenient to treat it as an optimization.
Validate
A validation phase that checks the lowering is valid. Used for debugging purposes.
SubStrategy
A phase that iteratively a set of optimizations to the lowering. Stops after a certain number of iterations, or when no more changes are made.
Fields
§
strategy: OptimizationStrategyId<'db>The id of the optimization strategy to apply.
Implementations§
Source§impl<'db> OptimizationPhase<'db>
impl<'db> OptimizationPhase<'db>
Trait Implementations§
Source§impl<'db> Clone for OptimizationPhase<'db>
impl<'db> Clone for OptimizationPhase<'db>
Source§fn clone(&self) -> OptimizationPhase<'db>
fn clone(&self) -> OptimizationPhase<'db>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<'db> Debug for OptimizationPhase<'db>
impl<'db> Debug for OptimizationPhase<'db>
Source§impl<'db> Hash for OptimizationPhase<'db>
impl<'db> Hash for OptimizationPhase<'db>
Source§impl<'db> PartialEq for OptimizationPhase<'db>
impl<'db> PartialEq for OptimizationPhase<'db>
impl<'db> Eq for OptimizationPhase<'db>
impl<'db> StructuralPartialEq for OptimizationPhase<'db>
Auto Trait Implementations§
impl<'db> Freeze for OptimizationPhase<'db>
impl<'db> RefUnwindSafe for OptimizationPhase<'db>
impl<'db> Send for OptimizationPhase<'db>
impl<'db> Sync for OptimizationPhase<'db>
impl<'db> Unpin for OptimizationPhase<'db>
impl<'db> UnwindSafe for OptimizationPhase<'db>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<'db, T> DebugDbUpcast<'db, T> for Twhere
T: ?Sized,
impl<'db, T> DebugDbUpcast<'db, T> for Twhere
T: ?Sized,
fn debug_db_upcast(&'db self) -> &'db T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more