1 #ifndef VALUE_PROPAGATE_H
2 #define VALUE_PROPAGATE_H
6 #include <FunctionObject.h>
13 const AstNodePtr& _stmt,
bool def)
18 virtual std::string
toString()
const;
23 std::map<AstNodePtr, HasValueDescriptor>
valmap;
25 void ObserveCopyAst(AstInterfaceImpl& fa,
const AstNodePtr& orig,
const AstNodePtr& copy);
30 void copy_value( AstInterfaceImpl& fa,
const AstNodePtr& orig,
const AstNodePtr& copy);
35 :
public MapObject<SymbolicVal, SymbolicVal>,
public SymbolicVisitor
44 SymbolicVal
operator() (
const SymbolicVal& v);
52 std::map<AstNodePtr, AstNodePtr>
astmap;
54 AstNodePtr operator() (AstInterface*
const& fa,
const AstNodePtr& orig);
60 std::map<AstNodePtr, ValuePropagateNode*>
nodemap;
65 CreateNode( AstInterface& fa,
const AstNodePtr& ref,
66 const AstNodePtr& stmt,
bool def);
71 void build( AstInterface& fa,
const AstNodePtr& head,
73 AliasAnalysisInterface& alias,
74 FunctionSideEffectInterface* f = 0);
75 void build (AstInterface& fa,
const AstNodePtr& head,
76 AliasAnalysisInterface& alias,
77 FunctionSideEffectInterface* f = 0);
79 bool known_value(
const AstNodePtr& exp,