Logo Search packages:      
Sourcecode: fauhdlc version File versions

ast::ConstantPropagation Class Reference

#include <ConstantPropagation.hpp>

Inheritance diagram for ast::ConstantPropagation:

ast::TopDownVisitor ast::Visitor

List of all members.


Detailed Description

evaluate constant expressions and propagate constant values.

Todo:
* set nodes for
  • index expressions
  • slices
  • ranges
  • initializer expressions
  • if conditions
  • assign statements
  • etc. * propagate constants in a process/function * what else?

Definition at line 31 of file ConstantPropagation.hpp.


Public Member Functions

virtual void visit (AttributeDeclaration &node)
virtual void visit (LibraryList &node)
virtual void visit (Library &node)
virtual void visit (SubtypeIndication &node)
virtual void visit (EnumerationElement &node)
virtual void visit (RecordTypeElement &node)
virtual void visit (RecordType &node)
virtual void visit (UnconstrainedArrayType &node)
virtual void visit (RangeConstraintType &node)
virtual void visit (PhysicalTypeUnit &node)
virtual void visit (PhysicalType &node)
virtual void visit (EnumerationType &node)
virtual void visit (CondalSigAssign &node)
virtual void visit (SubprogBody &node)
virtual void visit (Process &node)
virtual void visit (PackageBody &node)
virtual void visit (Package &node)
virtual void visit (CompInstStat &node)
virtual void visit (ProcedureDeclaration &node)
virtual void visit (FunctionDeclaration &node)
virtual void visit (AssociationElement &node)
virtual void visit (Architecture &node)
virtual void visit (Others &node)
virtual void visit (VarDeclaration &node)
virtual void visit (ExitStat &node)
virtual void visit (NextStat &node)
virtual void visit (ForLoopStat &node)
virtual void visit (NullStat &node)
virtual void visit (IfStat &node)
virtual void visit (ConstantDeclaration &node)
virtual void visit (SignalDeclaration &node)
virtual void visit (Entity &node)
virtual void visit (ConstArray &node)
virtual void visit (ElementAssociation &node)

Protected Member Functions

template<typename T>
void listTraverse (T &l, bool &deleteFlag)
 traverse a list of AST nodes, eventually deleting a node.
template<typename T>
void listTraverse (T l)
 traverse a list of AST nodes.
virtual void process (AttributableDeclaration &node)
 Process a AttributableDeclaration.
virtual void process (Name &node)
 Process a generic Name.
virtual void process (PrefixedName &node)
 Process a generic PrefixedName.
virtual void process (TypeDeclaration &node)
 Process a generic TypeDeclaration.
virtual void process (LibUnit &node)
 Process a generic LibUnit.
virtual void process (Callable &node)
 Process a generic Callable.
virtual void process (LoopStat &node)
 Process a generic LoopStat.
virtual void process (SeqStat &node)
 Process a generic SeqStat.
virtual void process (Expression &node)
 Process a generic Expression.
virtual void process (SymbolDeclaration &node)
 Process a generic SymbolDeclaration.

Static Protected Attributes

static int visits = 0

Private Member Functions

ElementAssociationfindAggregateAssoc (universal_integer index, Aggregate &node) const
void listOptimize (std::list< Expression * > *l)
void optimizeBuiltin (FunctionCall &node, std::list< Expression * > args)
 try to reduce a builtin function call to a constant node.
virtual void process (ConditionedStat &node)
 Process a generic ConditionedStat.
virtual void process (ValDeclaration &node)
 Process a generic ValDeclaration.
virtual void process (AstNode &node)
 Process a generic AstNode.
void reset (void)
bool setNode (Expression *&node) const
 set node to the replacement in ConstValue
virtual void visit (AttributeSpecification &node)
virtual void visit (Aggregate &node)
virtual void visit (CaseAlternative &node)
virtual void visit (CaseStat &node)
virtual void visit (DiscreteRange &node)
virtual void visit (AssertStat &node)
virtual void visit (ReturnStat &node)
virtual void visit (WaitStat &node)
virtual void visit (TemporaryName &node)
virtual void visit (AttributeName &node)
virtual void visit (SelectedName &node)
virtual void visit (SimpleName &node)
virtual void visit (TypeConversion &node)
virtual void visit (Slice &node)
virtual void visit (Subscript &node)
virtual void visit (WhileLoopStat &node)
virtual void visit (WaveFormElem &node)
virtual void visit (SigAssignStat &node)
virtual void visit (VarAssignStat &node)
virtual void visit (ProcCallStat &node)
virtual void visit (FunctionCall &node)
virtual void visit (ConstReal &node)
virtual void visit (ConstInteger &node)

Static Private Member Functions

static TypeDeclarationmakeCAType (TypeDeclaration *haveType, size_t numElems)

Private Attributes

ExpressionconstValue

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

Generated by  Doxygen 1.6.0   Back to index