ROSE  0.11.145.0
Public Member Functions | List of all members
Rose::BinaryAnalysis::SymbolicExpression::Simplifier Class Reference

Description

Operator-specific simplification methods.

Definition at line 886 of file SymbolicExpression.h.

#include <Rose/BinaryAnalysis/SymbolicExpression.h>

Inheritance diagram for Rose::BinaryAnalysis::SymbolicExpression::Simplifier:
Inheritance graph
[legend]

Public Member Functions

virtual Ptr fold (Nodes::const_iterator, Nodes::const_iterator) const
 Constant folding. More...
 
virtual Ptr rewrite (Interior *, const SmtSolverPtr &) const
 Rewrite the entire expression to something simpler. More...
 

Member Function Documentation

virtual Ptr Rose::BinaryAnalysis::SymbolicExpression::Simplifier::fold ( Nodes::const_iterator  ,
Nodes::const_iterator   
) const
inlinevirtual

Constant folding.

The range begin (inclusive) to end (exclusive) must contain at least two nodes and all of the nodes must be leaf nodes with known values. This method returns a new folded node if folding is possible, or the null pointer if folding is not possible.

Reimplemented in Rose::BinaryAnalysis::SymbolicExpression::ConcatSimplifier, Rose::BinaryAnalysis::SymbolicExpression::UmulSimplifier, Rose::BinaryAnalysis::SymbolicExpression::SmulSimplifier, Rose::BinaryAnalysis::SymbolicExpression::XorSimplifier, Rose::BinaryAnalysis::SymbolicExpression::OrSimplifier, Rose::BinaryAnalysis::SymbolicExpression::AndSimplifier, and Rose::BinaryAnalysis::SymbolicExpression::AddSimplifier.

Definition at line 893 of file SymbolicExpression.h.

virtual Ptr Rose::BinaryAnalysis::SymbolicExpression::Simplifier::rewrite ( Interior ,
const SmtSolverPtr  
) const
inlinevirtual

Rewrite the entire expression to something simpler.

Returns the new node if the node can be simplified, otherwise returns null.

Reimplemented in Rose::BinaryAnalysis::SymbolicExpression::SetSimplifier, Rose::BinaryAnalysis::SymbolicExpression::MssbSimplifier, Rose::BinaryAnalysis::SymbolicExpression::LssbSimplifier, Rose::BinaryAnalysis::SymbolicExpression::ShrSimplifier, Rose::BinaryAnalysis::SymbolicExpression::ShlSimplifier, Rose::BinaryAnalysis::SymbolicExpression::UmodSimplifier, Rose::BinaryAnalysis::SymbolicExpression::UdivSimplifier, Rose::BinaryAnalysis::SymbolicExpression::SmodSimplifier, Rose::BinaryAnalysis::SymbolicExpression::SdivSimplifier, Rose::BinaryAnalysis::SymbolicExpression::ZeropSimplifier, Rose::BinaryAnalysis::SymbolicExpression::UltSimplifier, Rose::BinaryAnalysis::SymbolicExpression::UleSimplifier, Rose::BinaryAnalysis::SymbolicExpression::UgtSimplifier, Rose::BinaryAnalysis::SymbolicExpression::UgeSimplifier, Rose::BinaryAnalysis::SymbolicExpression::SltSimplifier, Rose::BinaryAnalysis::SymbolicExpression::SleSimplifier, Rose::BinaryAnalysis::SymbolicExpression::SgtSimplifier, Rose::BinaryAnalysis::SymbolicExpression::SgeSimplifier, Rose::BinaryAnalysis::SymbolicExpression::EqSimplifier, Rose::BinaryAnalysis::SymbolicExpression::SextendSimplifier, Rose::BinaryAnalysis::SymbolicExpression::UextendSimplifier, Rose::BinaryAnalysis::SymbolicExpression::RorSimplifier, Rose::BinaryAnalysis::SymbolicExpression::RolSimplifier, Rose::BinaryAnalysis::SymbolicExpression::ReinterpretSimplifier, Rose::BinaryAnalysis::SymbolicExpression::NoopSimplifier, Rose::BinaryAnalysis::SymbolicExpression::IteSimplifier, Rose::BinaryAnalysis::SymbolicExpression::NegateSimplifier, Rose::BinaryAnalysis::SymbolicExpression::InvertSimplifier, Rose::BinaryAnalysis::SymbolicExpression::AsrSimplifier, Rose::BinaryAnalysis::SymbolicExpression::ExtractSimplifier, Rose::BinaryAnalysis::SymbolicExpression::ConcatSimplifier, Rose::BinaryAnalysis::SymbolicExpression::XorSimplifier, Rose::BinaryAnalysis::SymbolicExpression::OrSimplifier, Rose::BinaryAnalysis::SymbolicExpression::ConvertSimplifier, Rose::BinaryAnalysis::SymbolicExpression::AndSimplifier, and Rose::BinaryAnalysis::SymbolicExpression::AddSimplifier.

Definition at line 899 of file SymbolicExpression.h.


The documentation for this class was generated from the following file: