Class PtrAnal#

Nested Relationships#

Nested Types#

Inheritance Relationships#

Base Types#

Derived Type#

Class Documentation#

class PtrAnal : public ProcessAstTreeBase, public AliasAnalysisInterface#

Subclassed by SteensgaardPtrAnal

Public Types

enum OpType#

Values:

enumerator EQ#
enumerator NE#
enumerator LT#
enumerator GT#
enumerator LE#
enumerator GE#
enumerator OTHER#
typedef void *Stmt#
typedef std::list<Stmt> StmtRef#

Public Functions

void operator()(AstInterface &fa, const AstNodePtr &program)#
virtual bool may_alias(AstInterface &fa, const AstNodePtr &r1, const AstNodePtr &r2)#
VarRef translate_exp(const AstNodePtr &exp) const#
StmtRef translate_stmt(const AstNodePtr &stmt) const#
virtual bool may_alias(const std::string &x, const std::string &y) = 0#
virtual Stmt x_eq_y(const std::string &x, const std::string &y) = 0#
virtual Stmt x_eq_addr_y(const std::string &x, const std::string &y) = 0#
virtual Stmt x_eq_deref_y(const std::string &x, const std::string &field, const std::string &y) = 0#
virtual Stmt x_eq_field_y(const std::string &x, const std::string &field, const std::string &y) = 0#
virtual Stmt deref_x_eq_y(const std::string &x, const std::list<std::string> &field, const std::string &y) = 0#
virtual Stmt field_x_eq_y(const std::string &x, const std::list<std::string> &field, const std::string &y) = 0#
virtual Stmt allocate_x(const std::string &x) = 0#
virtual Stmt x_eq_op_y(OpType op, const std::string &x, const std::list<std::string> &y) = 0#
virtual Stmt funcdef_x(const std::string &x, const std::list<std::string> &params, const std::list<std::string> &ouput) = 0#
virtual Stmt funccall_x(const std::string &x, const std::list<std::string> &args, const std::list<std::string> &result) = 0#
virtual Stmt funcexit_x(const std::string &x) = 0#
inline virtual void contrl_flow(Stmt stmt1, Stmt stmt2, CFGConfig::EdgeType t)#

Protected Functions

void ProcessAssign(AstInterface &fa, const AstNodePtr &mod, const AstNodePtr &rhs, bool readlhs = 0)#
void ProcessExpression(AstInterface &fa, const std::string &modname, const AstNodePtr &rhs)#
void ProcessMod(AstInterface &fa, const std::string &readname, std::list<std::string> &fields, const AstNodePtr &mod)#
void ControlFlowAnalysis(AstInterface &fa, const AstNodePtr &head, Stmt defn)#
std::string Get_VarName(AstInterface &fa, const AstNodePtr &rhs)#
virtual bool ProcessTree(AstInterface &_fa, const AstNodePtr &s, AstInterface::TraversalVisitType t)#

Protected Static Functions

static inline std::string get_func_output(const std::string &fname, int i)#
static inline std::string get_func_par(const std::string &fname, int i)#
struct VarRef#

Public Functions

inline VarRef(Stmt _stmt = 0, const std::string &_name = "")#

Public Members

Stmt stmt#
std::string name#