pub struct AlgebraicSimplifier {
pub rules: Vec<AlgRule>,
pub total_simplified: usize,
}Expand description
Algebraic simplifier using GVN value numbers.
Examples of rules:
x + 0 = xx * 1 = xx - x = 0x == x = trueThese are encoded as GVN-aware rewriting onNormExprkeys.
Fields§
§rules: Vec<AlgRule>Rules that have been registered.
total_simplified: usizeTotal simplifications performed.
Implementations§
Source§impl AlgebraicSimplifier
impl AlgebraicSimplifier
pub fn new() -> Self
Sourcepub fn simplify(&mut self, expr: &NormExpr, fact: &GVNFact) -> Option<NormExpr>
pub fn simplify(&mut self, expr: &NormExpr, fact: &GVNFact) -> Option<NormExpr>
Apply algebraic simplification rules to a NormExpr. Returns a simplified NormExpr if a rule applies.
Sourcepub fn run(&mut self, _decl: &mut LcnfFunDecl)
pub fn run(&mut self, _decl: &mut LcnfFunDecl)
Run simplification over all bindings in a function.
Trait Implementations§
Source§impl Debug for AlgebraicSimplifier
impl Debug for AlgebraicSimplifier
Auto Trait Implementations§
impl Freeze for AlgebraicSimplifier
impl RefUnwindSafe for AlgebraicSimplifier
impl Send for AlgebraicSimplifier
impl Sync for AlgebraicSimplifier
impl Unpin for AlgebraicSimplifier
impl UnsafeUnpin for AlgebraicSimplifier
impl UnwindSafe for AlgebraicSimplifier
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