C-Breeze
C Compiler Infrastructure

[ Project home page]
Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

UnificationBasedPtr Class Reference

#include <unification.h>

Inheritance diagram for UnificationBasedPtr:

Walker List of all members.

Public Types

enum  Order { Preorder, Postorder, Both }
 The order in which AST Nodes should be visited. More...

enum  Depth { Subtree, NodeOnly }
 Which Nodes in the AST tree should be visited. More...


Public Member Functions

Unify_ECRecr (declNode *decl) const
Unify_ECRecr (threeAddrNode *alloc_site) const
UnifyTypeproctype (procNode *p)
void createProcBlock (procNode *, memoryModel &, procLocation *)
virtual void mark_alloc (stmtNode *stmt, declNode *source_decl, declNode *target_decl)
void ensure_no_bottom (Unify_ECR *tao, declNode *decl, UnifyType *parent)
virtual bool isField (declNode *f, bool &from_annotation) const
Unify_ECRecrField (UnifyType *container, declNode *field, bool field_from_annotation)
Unify_ECRecrDeref (UnifyType *container)
Alphastring_alpha (constNode *con)
set< Unify_ECR * > unique_ecr () const
procNodesynthetic_proc (declNode *d)
void print_ecr ()
Accessors
Methods to get and set fields in the class.

Order order () const
 Return the order in which Nodes of an AST should be visited.

Depth depth () const
 Return which Nodes of an AST should be visited.

"at_" methods
These methods define the functions that should be performed when different classes of Nodes are encountered in the AST. The most specific "at_" method that matches a given Node's class will be called.

virtual void at_node (Node *the_node, Order ord)
virtual void at_def (defNode *the_def, Order ord)
virtual void at_subdecl (subdeclNode *the_subdecl, Order ord)
virtual void at_type (typeNode *the_type, Order ord)
virtual void at_prim (primNode *the_prim, Order ord)
virtual void at_tdef (tdefNode *the_tdef, Order ord)
virtual void at_ptr (ptrNode *the_ptr, Order ord)
virtual void at_array (arrayNode *the_array, Order ord)
virtual void at_func (funcNode *the_func, Order ord)
virtual void at_sue (sueNode *the_sue, Order ord)
virtual void at_struct (structNode *the_struct, Order ord)
virtual void at_union (unionNode *the_union, Order ord)
virtual void at_enum (enumNode *the_enum, Order ord)
virtual void at_expr (exprNode *the_expr, Order ord)
virtual void at_index (indexNode *the_index, Order ord)
virtual void at_const (constNode *the_const, Order ord)
virtual void at_id (idNode *the_id, Order ord)
virtual void at_binary (binaryNode *the_binary, Order ord)
virtual void at_unary (unaryNode *the_unary, Order ord)
virtual void at_cast (castNode *the_cast, Order ord)
virtual void at_comma (commaNode *the_comma, Order ord)
virtual void at_ternary (ternaryNode *the_ternary, Order ord)
virtual void at_call (callNode *the_call, Order ord)
virtual void at_initializer (initializerNode *the_initializer, Order ord)
virtual void at_stmt (stmtNode *the_stmt, Order ord)
virtual void at_block (blockNode *the_block, Order ord)
virtual void at_basicblock (basicblockNode *the_basicblock, Order ord)
virtual void at_exprstmt (exprstmtNode *the_exprstmt, Order ord)
virtual void at_target (targetNode *the_target, Order ord)
virtual void at_label (labelNode *the_label, Order ord)
virtual void at_case (caseNode *the_case, Order ord)
virtual void at_selection (selectionNode *the_selection, Order ord)
virtual void at_if (ifNode *the_if, Order ord)
virtual void at_switch (switchNode *the_switch, Order ord)
virtual void at_loop (loopNode *the_loop, Order ord)
virtual void at_while (whileNode *the_while, Order ord)
virtual void at_do (doNode *the_do, Order ord)
virtual void at_for (forNode *the_for, Order ord)
virtual void at_jump (jumpNode *the_jump, Order ord)
virtual void at_goto (gotoNode *the_goto, Order ord)
virtual void at_continue (continueNode *the_continue, Order ord)
virtual void at_break (breakNode *the_break, Order ord)
virtual void at_return (returnNode *the_return, Order ord)
virtual void at_attrib (attribNode *the_attrib, Order ord)
virtual void at_operand (operandNode *the_oper, Order ord)
virtual void at_conditiongoto (conditiongotoNode *the_condgoto, Order ord)
virtual void at_text (textNode *the_text, Order ord)

Static Public Member Functions

UnificationBasedPtr * analyze_all (Linker &)
bool reachable (UnifyType *src, UnifyTypes &targets, UnifyTypes &visited)
bool compatible_type (typeNode *, typeNode *)

Static Public Attributes

int unify_points_to_max = 0

Protected Member Functions

 UnificationBasedPtr (Linker &l)
void at_unit (unitNode *u, Order)
void at_proc (procNode *, Order)
void at_decl (declNode *, Order)
void at_suespec (suespecNode *, Order)
void at_threeAddr (threeAddrNode *, Order)
void at_allocation (threeAddrNode *, Unify_Size)
void at_call (threeAddrNode *, Unify_Size)
void at_initializer (initializerNode *init, typeNode *init_type, Unify_ECR *init_ecr)
void mergeOperand (operandNode *lhs, operandNode *rhs, Unify_Size)
Alphaalpha (operandNode *, Unify_Size)
Unify_ECRecr (operandNode *, Unify_Size, Unify_Offset **offset=NULL)
Unify_ECRecr1 (declNode *decl)
void join (Alpha *a1, Alpha *a2, bool *recursion_detected=NULL)
void join (Unify_ECR *e1, Unify_ECR *e2, bool *recursion_detected=NULL)
void join (Lambda *l1, Lambda *l2)
void settype (Unify_ECR *e, UnifyType *t)
void settype (Lambda *l, int n, int m, Unify_ECR **t, Unify_ECR *r, bool ellipse)
void ensure_sim_obj (Unify_ECR *tao, Unify_Size &s)
Unify_Structureensure_struct_obj (Unify_ECR *tao, suespecNode *sue, bool redo_pending=false)
void expand (Unify_ECR *e)
void promote (Unify_ECR *e, Unify_Size &s)
void collapse (Unify_ECR *e)
void make_unknown (Unify_Offset *o)
void unless_zero (Unify_Offset *o, Unify_ECR *tao)
void cjoin (Unify_Size &s, Unify_ECR *e1, Unify_ECR *e2)
UnifyTypeunify (UnifyType *t1, UnifyType *t2)
bool make_compatible (declSet n, Unify_Structure *s, Unify_ECR *container, bool force=false)
void merge_EltMap (UnifyType *t1, UnifyType *t2, Unify_Structure *)
void finalize ()
procNodecreate_synthetic_proc (declNode *)
declNodeunique_field_defn (declNode *d)
suespecNodefield2sue (declNode *d)
virtual bool annotation_returns_object (procNode *proc) const
virtual void annotation_call_arg (procNode *, int arg, typeNode *, Unify_ECR *)
virtual void annotation_call_arg (procNode *, int arg, typeNode *, Alpha *)
virtual void annotation_ret_val (procNode *, Unify_ECR *taoR, unitNode *unit)
virtual void annotation_init_global (declNode *global)

Static Protected Member Functions

bool is_va_list (declNode *decl)

Protected Attributes

TREE map< declNode *, Unify_ECR * > _ecr
TREE map< procNode *, UnifyType * > _proctype
TREE map< threeAddrNode *,
Unify_ECR * > 
_alloc
TREE map< constNode *, Alpha * > _string_alpha
TREE int _dismantler_tmp
TREE map< declNode *, suespecNode * > _field2sue
TREE map< declNode *, decl_list_fieldpos
TREE set< suespecNode * > _unique_sue
TREE set< suespecNode * > _visited_sue
TREE map< declNode *, declNode * > _unique_field_defn
map< threeAddrNode *, UnifyType * > _ptr_call
unitNodecur_unit
procNodecur_proc
bool inside_call_func
bool finalizing
bool serve_again
bool new_pending
set< Unify_Pending * > more_pending
Linkerlinker
map< declNode *, procNode * > _synthetic_proc
set< procNode * > _analyzed_proc
map< declNode *, int > _assignments
map< declNode *, bool > _uses

Member Enumeration Documentation

enum Walker::Depth [inherited]
 

Which Nodes in the AST tree should be visited.

Enumeration values:
Subtree  The entire AST should be traversed.
NodeOnly  Only the root Node should be visited.

Definition at line 155 of file walker.h.

enum Walker::Order [inherited]
 

The order in which AST Nodes should be visited.

Enumeration values:
Preorder  Nodes should be visited before their children.
Postorder  Nodes should be visited after their children.
Both  Nodes should be visited both before and after their children.

Definition at line 147 of file walker.h.

Referenced by whileNode::walk(), unitNode::walk(), unionNode::walk(), unaryNode::walk(), threeAddrNode::walk(), textNode::walk(), ternaryNode::walk(), tdefNode::walk(), switchNode::walk(), suespecNode::walk(), subdeclNode::walk(), structNode::walk(), returnNode::walk(), ptrNode::walk(), procNode::walk(), primNode::walk(), operandNode::walk(), metastmtNode::walk(), metaexprNode::walk(), labelNode::walk(), initializerNode::walk(), ifNode::walk(), idNode::walk(), gotoNode::walk(), funcNode::walk(), forNode::walk(), exprstmtNode::walk(), enumNode::walk(), doNode::walk(), declNode::walk(), continueNode::walk(), constNode::walk(), conditiongotoNode::walk(), commaNode::walk(), castNode::walk(), caseNode::walk(), callNode::walk(), breakNode::walk(), blockNode::walk(), binaryNode::walk(), basicblockNode::walk(), attribNode::walk(), and arrayNode::walk().


Constructor & Destructor Documentation

UnificationBasedPtr::UnificationBasedPtr Linker   l [inline, protected]
 

Definition at line 448 of file unification.h.

References Walker::Both, and Walker::Subtree.

Referenced by analyze_all().


Member Function Documentation

Alpha * UnificationBasedPtr::alpha operandNode  ,
Unify_Size   
[protected]
 

Definition at line 1394 of file unification.cc.

References _string_alpha, operandNode::addr(), alpha(), Const, ecr(), Id, constant::is_str(), constant::Str, Unify_Blank, exprNode::value(), and operandNode::var().

Referenced by alpha(), at_call(), at_threeAddr(), mergeOperand(), and unify().

UnificationBasedPtr * UnificationBasedPtr::analyze_all Linker   [static]
 

Definition at line 3599 of file unification.cc.

References finalize(), CBZ::Program, cbzTimer::start(), cbzTimer::stop(), UnificationBasedPtr(), and unit_list_p.

Referenced by testUnify::run(), and Pointers::run_unification().

virtual void UnificationBasedPtr::annotation_call_arg procNode  ,
int    arg,
typeNode  ,
Alpha  
[inline, protected, virtual]
 

Definition at line 505 of file unification.h.

virtual void UnificationBasedPtr::annotation_call_arg procNode  ,
int    arg,
typeNode  ,
Unify_ECR  
[inline, protected, virtual]
 

Definition at line 504 of file unification.h.

Referenced by at_call().

virtual void UnificationBasedPtr::annotation_init_global declNode   global [inline, protected, virtual]
 

Definition at line 507 of file unification.h.

Referenced by at_decl().

virtual void UnificationBasedPtr::annotation_ret_val procNode  ,
Unify_ECR   taoR,
unitNode   unit
[inline, protected, virtual]
 

Definition at line 506 of file unification.h.

Referenced by at_call().

virtual bool UnificationBasedPtr::annotation_returns_object procNode   proc const [inline, protected, virtual]
 

Definition at line 503 of file unification.h.

Referenced by at_call(), and at_proc().

void UnificationBasedPtr::at_allocation threeAddrNode  ,
Unify_Size   
[protected]
 

Definition at line 1424 of file unification.cc.

References _alloc, _assignments, _ecr, _uses, at_decl(), ensure_sim_obj(), expand(), Id, inside_call_func, UnifyType::is_bottom(), is_Sim_Obj, Unify_Size::leq(), threeAddrNode::lhs(), settype(), Sim_Obj_Alpha, Sim_Obj_Size, Alpha::tao(), Unify_ECR::type(), Unify_Blank, and operandNode::var().

Referenced by at_call(), and at_threeAddr().

virtual void Walker::at_array arrayNode   the_array,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, TreeChecker, and print_walker.

Definition at line 254 of file walker.h.

References Walker::at_type().

Referenced by arrayNode::walk().

virtual void Walker::at_attrib attribNode   the_attrib,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, and print_walker.

Definition at line 365 of file walker.h.

References Walker::at_stmt().

Referenced by attribNode::walk().

virtual void Walker::at_basicblock basicblockNode   the_basicblock,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in print_walker, fixPointerWalker, DefUseWalker, LivenessWalker, LivenessComments, reachingGenKillWalker, and reachingDefinitionsWalker.

Definition at line 314 of file walker.h.

References Walker::at_block().

Referenced by basicblockNode::walk().

virtual void Walker::at_binary binaryNode   the_binary,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, gcWalker, id_lookup_walker, TreeChecker, print_walker, and Assignment_walker.

Definition at line 287 of file walker.h.

References Walker::at_expr().

Referenced by binaryNode::walk().

virtual void Walker::at_block blockNode   the_block,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, scope_walker, and print_walker.

Definition at line 311 of file walker.h.

References Walker::at_stmt().

Referenced by Walker::at_basicblock(), and blockNode::walk().

virtual void Walker::at_break breakNode   the_break,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, ref_fix_walker, set_container_walker, TreeChecker, and print_walker.

Definition at line 359 of file walker.h.

References Walker::at_jump().

Referenced by breakNode::walk().

virtual void Walker::at_call callNode   the_call,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in NodeLocator, W, vcgASTWalker, vcgCCGWalker, id_lookup_walker, Linker, ref_fix_walker, TreeChecker, and print_walker.

Definition at line 302 of file walker.h.

References Walker::at_expr().

Referenced by callNode::walk().

void UnificationBasedPtr::at_call threeAddrNode  ,
Unify_Size   
[protected]
 

Definition at line 1455 of file unification.cc.

References _ecr, _ptr_call, _synthetic_proc, Lambda::addArg(), alpha(), annotation_call_arg(), annotation_ret_val(), annotation_returns_object(), threeAddrNode::arg_list(), funcNode::args(), at_allocation(), BLANK, cjoin(), Const, Node::coord(), cur_unit, procNode::decl(), decl_list, ecr(), Lambda::ellipsis(), ensure_sim_obj(), expand(), operandNode::fields(), typeNode::follow_tdefs(), Func, Id, operandNode::index(), UnifyType::is_bottom(), Lambda::is_bottom(), is_Sim_Obj, is_va_list(), typeNode::is_void(), join(), Unify_Size::leq(), threeAddrNode::lhs(), linker, Linker::lookup_procedure(), Lambda::m(), Lambda::n(), declNode::no_tdef_type(), UnifyType::objTyp(), operand_list, operand_list_p, Prim, Ptr, funcNode::returns(), threeAddrNode::rhs1(), settype(), Sim_Obj_Alpha, Sim_Obj_Lambda, Sim_Obj_Size, operandNode::star(), T_bottom, Lambda::tao(), Lambda::taoR(), Node::typ(), declNode::type(), Unify_ECR::type(), typeNode::type(), operandNode::type(), and operandNode::var().

Referenced by at_threeAddr(), and finalize().

virtual void Walker::at_case caseNode   the_case,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, ref_fix_walker, semcheck_walker, set_container_walker, TreeChecker, and print_walker.

Definition at line 326 of file walker.h.

References Walker::at_target().

Referenced by caseNode::walk().

virtual void Walker::at_cast castNode   the_cast,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, TreeChecker, and print_walker.

Definition at line 293 of file walker.h.

References Walker::at_expr().

Referenced by castNode::walk().

virtual void Walker::at_comma commaNode   the_comma,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, TreeChecker, and print_walker.

Definition at line 296 of file walker.h.

References Walker::at_expr().

Referenced by commaNode::walk().

virtual void Walker::at_conditiongoto conditiongotoNode   the_condgoto,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in lir_gen_walker, vcgASTWalker, TreeChecker, print_walker, LivenessWalker, LivenessComments, and findVarAssign.

Definition at line 371 of file walker.h.

References Walker::at_goto().

Referenced by conditiongotoNode::walk().

virtual void Walker::at_const constNode   the_const,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, TreeChecker, print_walker, and count_walker.

Definition at line 281 of file walker.h.

References Walker::at_index().

Referenced by constNode::walk().

virtual void Walker::at_continue continueNode   the_continue,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, ref_fix_walker, set_container_walker, TreeChecker, and print_walker.

Definition at line 356 of file walker.h.

References Walker::at_jump().

Referenced by continueNode::walk().

void UnificationBasedPtr::at_decl declNode  ,
Order   
[protected, virtual]
 

Reimplemented from Walker.

Definition at line 962 of file unification.cc.

References _assignments, _dismantler_tmp, _ecr, _unique_field_defn, _uses, annotation_init_global(), Array, at_initializer(), at_proc(), declNode::BLOCK, Const, create_synthetic_proc(), cur_proc, debug, procNode::decl(), decl_list, declNode::decl_location(), declNode::Decl_location, ensure_sim_obj(), declNode::ENUM, declNode::EXTERN, declNode::FORMAL, Func, declNode::init(), Initializer, inside_call_func, is_dismantler_tmp, typeNode::is_ellipsis(), is_va_list(), join(), linker, Linker::lookup_symbol(), declNode::name(), typeNode::no_tdef_type(), declNode::no_tdef_type(), Walker::Preorder, declNode::PROC, Sim_Obj_Alpha, declNode::storage_class(), declNode::SU, declNode::TOP, Node::typ(), Unify_ECR::type(), declNode::type(), and declNode::TYPEDEF.

Referenced by at_allocation(), and ecr1().

virtual void Walker::at_def defNode   the_def,
Order    ord
[inline, virtual, inherited]
 

Definition at line 230 of file walker.h.

References Walker::at_node().

Referenced by Walker::at_decl(), and Walker::at_proc().

virtual void Walker::at_do doNode   the_do,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, and print_walker.

Definition at line 344 of file walker.h.

References Walker::at_loop().

Referenced by doNode::walk().

virtual void Walker::at_enum enumNode   the_enum,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in enum_value_walker.

Definition at line 269 of file walker.h.

References Walker::at_sue().

Referenced by enumNode::walk().

virtual void Walker::at_expr exprNode   the_expr,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in NodeLocator, and remove_stale_type_walker.

Definition at line 275 of file walker.h.

References Walker::at_node().

Referenced by Walker::at_binary(), Walker::at_call(), Walker::at_cast(), Walker::at_comma(), Walker::at_index(), Walker::at_initializer(), Walker::at_operand(), Walker::at_ternary(), Walker::at_unary(), and metaexprNode::walk().

virtual void Walker::at_exprstmt exprstmtNode   the_exprstmt,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, semcheck_walker, and print_walker.

Definition at line 317 of file walker.h.

References Walker::at_stmt().

Referenced by exprstmtNode::walk().

virtual void Walker::at_for forNode   the_for,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, semcheck_walker, TreeChecker, and print_walker.

Definition at line 347 of file walker.h.

References Walker::at_loop().

Referenced by forNode::walk().

virtual void Walker::at_func funcNode   the_func,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, scope_walker, TreeChecker, print_walker, and has_struct_walker.

Definition at line 257 of file walker.h.

References Walker::at_type().

Referenced by funcNode::walk().

virtual void Walker::at_goto gotoNode   the_goto,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in lir_gen_walker, vcgASTWalker, goto_label_walker, fix_goto_walker, ref_fix_walker, TreeChecker, ProcWalker, and print_walker.

Definition at line 353 of file walker.h.

References Walker::at_jump().

Referenced by Walker::at_conditiongoto(), and gotoNode::walk().

virtual void Walker::at_id idNode   the_id,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, callGraph, RequiresGatherer, clear_ids_walker, id_lookup_walker, Linker, name_mangle_walker, ref_fix_walker, TreeChecker, print_walker, renumber_walker, and count_walker.

Definition at line 284 of file walker.h.

References Walker::at_index().

Referenced by idNode::walk().

virtual void Walker::at_if ifNode   the_if,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, TreeChecker, and print_walker.

Definition at line 332 of file walker.h.

References Walker::at_selection().

Referenced by ifNode::walk().

virtual void Walker::at_index indexNode   the_index,
Order    ord
[inline, virtual, inherited]
 

Definition at line 278 of file walker.h.

References Walker::at_expr().

Referenced by Walker::at_const(), and Walker::at_id().

virtual void Walker::at_initializer initializerNode   the_initializer,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, TreeChecker, and print_walker.

Definition at line 305 of file walker.h.

References Walker::at_expr().

Referenced by initializerNode::walk().

void UnificationBasedPtr::at_initializer initializerNode   init,
typeNode   init_type,
Unify_ECR   init_ecr
[protected]
 

Definition at line 1662 of file unification.cc.

References _string_alpha, Operator::ADDRESS, Array, at_suespec(), BLANK, cjoin(), Const, idNode::decl(), decl_list, decl_list_p, declSet, ecr1(), ensure_sim_obj(), ensure_struct_obj(), Enum, expand(), unaryNode::expr(), expr_list, expr_list_p, initializerNode::exprs(), field2sue(), suespecNode::fields(), typeNode::follow_tdefs(), Func, Unify_Structure::get(), Operator::id(), Id, Initializer, UnifyType::is_bottom(), join(), Unify_Size::leq(), make_compatible(), typeNode::no_tdef_type(), NodeType, UnifyType::objTyp(), Alpha::offset(), unaryNode::op(), Ptr, Sim_Obj_Alpha, Sim_Obj_Size, Unify_Size::sizeOf(), constant::Str, Struct, UnifyType::structure, STRUCTURE, Alpha::tao(), Node::typ(), exprNode::type(), declNode::type(), Unify_ECR::type(), Unary, Unify_Blank, Union, unique_field_defn(), unless_zero(), and exprNode::value().

Referenced by at_decl().

virtual void Walker::at_jump jumpNode   the_jump,
Order    ord
[inline, virtual, inherited]
 

Definition at line 350 of file walker.h.

References Walker::at_stmt().

Referenced by Walker::at_break(), Walker::at_continue(), Walker::at_goto(), and Walker::at_return().

virtual void Walker::at_label labelNode   the_label,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in lir_gen_walker, vcgASTWalker, goto_label_walker, name_mangle_walker, TreeChecker, ProcWalker, and print_walker.

Definition at line 323 of file walker.h.

References Walker::at_target().

Referenced by labelNode::walk().

virtual void Walker::at_loop loopNode   the_loop,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in semcheck_walker, set_container_walker, TreeChecker, and init_flowproblem_walker.

Definition at line 338 of file walker.h.

References Walker::at_stmt().

Referenced by Walker::at_do(), Walker::at_for(), and Walker::at_while().

virtual void Walker::at_node Node   the_node,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in gcWalker, goto_label_walker, set_container_walker, sue_complete_walker, TreeChecker, and df_number_walker.

Definition at line 223 of file walker.h.

Referenced by Walker::at_def(), Walker::at_expr(), Walker::at_stmt(), Walker::at_text(), Walker::at_type(), and Walker::at_unit().

virtual void Walker::at_operand operandNode   the_oper,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in AllocToMemWalker, vcgASTWalker, TreeChecker, print_walker, and findVarAssign.

Definition at line 368 of file walker.h.

References Walker::at_expr().

Referenced by operandNode::walk().

virtual void Walker::at_prim primNode   the_prim,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, and print_walker.

Definition at line 245 of file walker.h.

References Walker::at_type().

Referenced by primNode::walk().

void UnificationBasedPtr::at_proc procNode  ,
Order   
[protected, virtual]
 

Reimplemented from Walker.

Definition at line 856 of file unification.cc.

References _analyzed_proc, _assignments, _ecr, _proctype, _uses, annotation_returns_object(), funcNode::args(), UnifyType::blank, BLANK, cjoin(), cur_proc, procNode::decl(), decl_list, decl_list_p, UnifyType::ecr(), Lambda::ellipsis(), ensure_sim_obj(), expand(), Lambda::is_bottom(), is_Sim_Obj, is_va_list(), typeNode::is_void(), Unify_Size::leq(), linker, Linker::lookup_procedure(), declNode::no_tdef_type(), UnifyType::objTyp(), Unify_Blank::p, Walker::Postorder, Prim, Unify_ECR::proc(), UnifyType::procs(), procNode::return_decl(), funcNode::returns(), Unify_ECR::root(), Unify_Blank::s, settype(), Sim_Obj_Lambda, Sim_Obj_Size, T_bottom, Lambda::tao(), Lambda::taoR(), Node::typ(), Unify_ECR::type(), declNode::type(), Unify_Blank, Unify_ECR::var(), and procNode::walk().

Referenced by at_decl(), and ecr1().

virtual void Walker::at_ptr ptrNode   the_ptr,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, and print_walker.

Definition at line 251 of file walker.h.

References Walker::at_type().

Referenced by ptrNode::walk().

virtual void Walker::at_return returnNode   the_return,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, ref_fix_walker, semcheck_walker, set_container_walker, TreeChecker, print_walker, LivenessWalker, and LivenessComments.

Definition at line 362 of file walker.h.

References Walker::at_jump().

Referenced by returnNode::walk().

virtual void Walker::at_selection selectionNode   the_selection,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in semcheck_walker.

Definition at line 329 of file walker.h.

References Walker::at_stmt().

Referenced by Walker::at_if(), and Walker::at_switch().

virtual void Walker::at_stmt stmtNode   the_stmt,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in NodeLocator, W, init_flowproblem_walker, and LivenessWalker.

Definition at line 308 of file walker.h.

References Walker::at_node().

Referenced by Walker::at_attrib(), Walker::at_block(), Walker::at_exprstmt(), Walker::at_jump(), Walker::at_loop(), Walker::at_selection(), Walker::at_target(), Walker::at_threeAddr(), and metastmtNode::walk().

virtual void Walker::at_struct structNode   the_struct,
Order    ord
[inline, virtual, inherited]
 

Definition at line 263 of file walker.h.

References Walker::at_sue().

Referenced by structNode::walk().

virtual void Walker::at_subdecl subdeclNode   the_subdecl,
Order    ord
[inline, virtual, inherited]
 

Definition at line 236 of file walker.h.

References Walker::at_decl().

Referenced by subdeclNode::walk().

virtual void Walker::at_sue sueNode   the_sue,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, RequiresGatherer, print_walker, and has_struct_walker.

Definition at line 260 of file walker.h.

References Walker::at_type().

Referenced by Walker::at_enum(), Walker::at_struct(), and Walker::at_union().

void UnificationBasedPtr::at_suespec suespecNode  ,
Order   
[protected, virtual]
 

Reimplemented from Walker.

Definition at line 808 of file unification.cc.

References _field2sue, _fieldpos, _unique_field_defn, _unique_sue, _visited_sue, Node::coord(), decl_list, decl_list_p, suespecNode::fields(), suespecNode::owner(), Walker::Postorder, Struct, and Coord::to_string().

Referenced by at_initializer().

virtual void Walker::at_switch switchNode   the_switch,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, set_container_walker, TreeChecker, ProcWalker, print_walker, and init_flowproblem_walker.

Definition at line 335 of file walker.h.

References Walker::at_selection().

Referenced by switchNode::walk().

virtual void Walker::at_target targetNode   the_target,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in init_flowproblem_walker.

Definition at line 320 of file walker.h.

References Walker::at_stmt().

Referenced by Walker::at_case(), and Walker::at_label().

virtual void Walker::at_tdef tdefNode   the_tdef,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, RequiresGatherer, clear_ids_walker, id_lookup_walker, ref_fix_walker, TreeChecker, and print_walker.

Definition at line 248 of file walker.h.

References Walker::at_type().

Referenced by tdefNode::walk().

virtual void Walker::at_ternary ternaryNode   the_ternary,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, TreeChecker, and print_walker.

Definition at line 299 of file walker.h.

References Walker::at_expr().

Referenced by ternaryNode::walk().

virtual void Walker::at_text textNode   the_text,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, and print_walker.

Definition at line 377 of file walker.h.

References Walker::at_node().

Referenced by textNode::walk().

void UnificationBasedPtr::at_threeAddr threeAddrNode  ,
Order   
[protected, virtual]
 

Reimplemented from Walker.

Definition at line 1106 of file unification.cc.

References alpha(), at_allocation(), at_call(), ecr(), ensure_sim_obj(), Operator::FUNC_CALL, Id, inside_call_func, is_Sim_Obj, make_unknown(), mergeOperand(), Alpha::offset(), threeAddrNode::op(), Walker::Postorder, Sim_Obj_Alpha, threeAddrNode::sizeof_type(), operandNode::star(), Unify_ECR::type(), Unify_Offset::value(), operandNode::var(), and Unify_Offset::zero.

virtual void Walker::at_type typeNode   the_type,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in W, and TreeChecker.

Definition at line 242 of file walker.h.

References Walker::at_node().

Referenced by Walker::at_array(), Walker::at_func(), Walker::at_prim(), Walker::at_ptr(), Walker::at_sue(), Walker::at_suespec(), and Walker::at_tdef().

virtual void Walker::at_unary unaryNode   the_unary,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, TreeChecker, print_walker, and fixPointerWalker.

Definition at line 290 of file walker.h.

References Walker::at_expr().

Referenced by unaryNode::walk().

virtual void Walker::at_union unionNode   the_union,
Order    ord
[inline, virtual, inherited]
 

Definition at line 266 of file walker.h.

References Walker::at_sue().

Referenced by unionNode::walk().

void UnificationBasedPtr::at_unit unitNode   u,
Order   
[inline, protected, virtual]
 

Reimplemented from Walker.

Definition at line 452 of file unification.h.

virtual void Walker::at_while whileNode   the_while,
Order    ord
[inline, virtual, inherited]
 

Reimplemented in vcgASTWalker, and print_walker.

Definition at line 341 of file walker.h.

References Walker::at_loop().

Referenced by whileNode::walk().

void UnificationBasedPtr::cjoin Unify_Size   s,
Unify_ECR   e1,
Unify_ECR   e2
[protected]
 

Definition at line 2349 of file unification.cc.

References Unify_Simple::alpha, Unify_Object::alpha, UnifyType::blank, BLANK, expand(), finalizing, Unify_Structure::fo, Unify_Structure::fto, Unify_Structure::get(), Unify_Pendings::insert(), UnifyType::is_bottom(), join(), Unify_Object::lambda, Unify_Simple::lambda, Unify_Structure::m, make_compatible(), more_pending, new_pending, UnifyType::object, OBJECT, Object_Typ, UnifyType::objTyp(), Unify_Blank::p, Unify_ECR::pending(), Pendings_p, promote(), Unify_ECR::root(), Unify_Object::s, Unify_Structure::s, Unify_Simple::s, Unify_Blank::s, serve_again, Unify_Pendings::set(), settype(), UnifyType::simple, SIMPLE, UnifyType::size(), UnifyType::structure, STRUCTURE, Alpha::tao(), declNode::type(), Unify_ECR::type(), Unify_Blank, Unify_Simple, Unify_Structure, and unique_field_defn().

Referenced by at_call(), at_initializer(), at_proc(), finalize(), mergeOperand(), and settype().

void UnificationBasedPtr::collapse Unify_ECR   e [protected]
 

Definition at line 2301 of file unification.cc.

References Unify_Size::leq(), UnifyType::object, OBJECT, UnifyType::objTyp(), Unify_Object::s, settype(), Unify_ECR::type(), unify(), and Unify_Object.

Referenced by ecr(), finalize(), make_unknown(), and unless_zero().

bool UnificationBasedPtr::compatible_type typeNode  ,
typeNode  
[static]
 

Definition at line 3150 of file unification.cc.

References Array, Const, Node::coord(), def, arrayNode::dim(), Func, Prim, Ptr, Struct, Tdef, Node::typ(), typeNode::type(), and Union.

Referenced by make_compatible(), and Unify_Structure::Unify_Structure().

procNode * UnificationBasedPtr::create_synthetic_proc declNode   [protected]
 

Definition at line 3585 of file unification.cc.

References _synthetic_proc, Func, procNode::return_decl(), Node::typ(), and declNode::type().

Referenced by at_decl().

void UnificationBasedPtr::createProcBlock procNode  ,
memoryModel  ,
procLocation  
 

Definition at line 3385 of file unification.cc.

References UnifyType::block(), procNode::decl(), UnifyType::ecr_no_root(), memoryModel::lookup_variable(), Unify_ECR::parent(), procLocation::proc(), proctype(), and Unify_ECR::type().

Referenced by Pointers::determine_call_targets().

Depth Walker::depth   const [inline, inherited]
 

Return which Nodes of an AST should be visited.

A value of SubTree specifies that the entire AST should be traversed. A value of NodeOnly specifies that only the root Node in the AST should be visited.

Definition at line 211 of file walker.h.

Referenced by whileNode::walk(), unitNode::walk(), unionNode::walk(), unaryNode::walk(), threeAddrNode::walk(), ternaryNode::walk(), switchNode::walk(), suespecNode::walk(), subdeclNode::walk(), structNode::walk(), returnNode::walk(), ptrNode::walk(), procNode::walk(), operandNode::walk(), metastmtNode::walk(), metaexprNode::walk(), labelNode::walk(), initializerNode::walk(), ifNode::walk(), idNode::walk(), funcNode::walk(), forNode::walk(), exprstmtNode::walk(), enumNode::walk(), doNode::walk(), declNode::walk(), constNode::walk(), conditiongotoNode::walk(), commaNode::walk(), castNode::walk(), caseNode::walk(), callNode::walk(), blockNode::walk(), binaryNode::walk(), basicblockNode::walk(), attribNode::walk(), arrayNode::walk(), and Walker::Walker().

Unify_ECR * UnificationBasedPtr::ecr operandNode  ,
Unify_Size   ,
Unify_Offset **    offset = NULL
[protected]
 

Definition at line 1227 of file unification.cc.

References operandNode::addr(), Unify_Object::alpha, BLANK, operandNode::cast(), collapse(), Const, idNode::decl(), declSet, ecr(), ecr1(), ensure_sim_obj(), ensure_struct_obj(), field2sue(), operandNode::fields(), Unify_Structure::get(), Id, id_list, id_list_p, operandNode::index(), UnifyType::is_bottom(), is_Sim_Obj, make_compatible(), UnifyType::object, UnifyType::objTyp(), Alpha::offset(), promote(), Sim_Obj_Alpha, Unify_Size::sizeOf(), operandNode::star(), UnifyType::structure, STRUCTURE, Alpha::tao(), Unify_ECR::type(), typeNode::type(), declNode::type(), unique_field_defn(), Unify_Offset::unknown, unless_zero(), Unify_Offset::value(), and operandNode::var().

Unify_ECR* UnificationBasedPtr::ecr threeAddrNode   alloc_site const [inline]
 

Definition at line 383 of file unification.h.

References _alloc.

Unify_ECR* UnificationBasedPtr::ecr declNode   decl const [inline]
 

Definition at line 379 of file unification.h.

References _ecr.

Referenced by alpha(), at_call(), at_threeAddr(), memoryModel::create_memory_object(), ecr(), memoryModel::generate_su_field(), and mergeOperand().

Unify_ECR * UnificationBasedPtr::ecr1 declNode   decl [protected]
 

Definition at line 1369 of file unification.cc.

References _assignments, _ecr, _uses, at_decl(), at_proc(), cur_proc, declNode::decl_location(), declNode::ENUM, Func, linker, Linker::lookup_procedure(), Unify_ECR::root(), declNode::TOP, Node::typ(), and declNode::type().

Referenced by at_initializer(), and ecr().

Unify_ECR * UnificationBasedPtr::ecrDeref UnifyType   container
 

Definition at line 3342 of file unification.cc.

References Unify_Object::alpha, Unify_Simple::alpha, UnifyType::blank, BLANK, UnifyType::block(), Unify_Pending::cjoin, memoryBlock::decl(), UnifyType::ecr(), ensure_sim_obj(), UnifyType::is_bottom(), UnifyType::object, OBJECT, UnifyType::objTyp(), Unify_ECR::pending(), Pendings_p, Unify_Blank::s, Unify_Pendings::set(), UnifyType::simple, SIMPLE, Alpha::tao(), Unify_ECR::type(), and declNode::type().

Referenced by Pointers::assignment_operator(), memoryModel::create_memory_object(), memoryModel::generate_array_elements_for(), memoryModel::initialize_struct(), and Pointers::star_operator().

Unify_ECR * UnificationBasedPtr::ecrField UnifyType   container,
declNode   field,
bool    field_from_annotation
 

Definition at line 3273 of file unification.cc.

References _unique_field_defn, Unify_Object::alpha, BLANK, declSet, UnifyType::ecr(), ensure_struct_obj(), field2sue(), Unify_Structure::fo, Unify_Structure::get(), UnifyType::is_bottom(), make_compatible(), declNode::name(), UnifyType::object, OBJECT, UnifyType::objTyp(), promote(), Unify_Simple::s, UnifyType::simple, SIMPLE, UnifyType::structure, STRUCTURE, Alpha::tao(), and Unify_ECR::type().

Referenced by memoryModel::create_memory_object(), and Pointers::dot_operator().

void UnificationBasedPtr::ensure_no_bottom Unify_ECR   tao,
declNode   decl,
UnifyType   parent
 

Definition at line 2206 of file unification.cc.

References UnifyType::ecr(), UnifyType::is_bottom(), Unify_Parents::parents(), settype(), declNode::type(), Unify_ECR::type(), and Unify_Blank.

Referenced by memoryModel::create_memory_object().

void UnificationBasedPtr::ensure_sim_obj Unify_ECR   tao,
Unify_Size   s
[protected]
 

Definition at line 2177 of file unification.cc.

References UnifyType::blank, BLANK, expand(), UnifyType::is_bottom(), Unify_Size::leq(), UnifyType::objTyp(), Unify_Blank::p, promote(), Unify_Structure::s, Unify_Simple::s, Unify_Blank::s, settype(), UnifyType::simple, SIMPLE, UnifyType::structure, STRUCTURE, Unify_ECR::type(), and Unify_Simple.

Referenced by at_allocation(), at_call(), at_decl(), at_initializer(), at_proc(), at_threeAddr(), ecr(), ecrDeref(), and mergeOperand().

Unify_Structure * UnificationBasedPtr::ensure_struct_obj Unify_ECR   tao,
suespecNode   sue,
bool    redo_pending = false
[protected]
 

Definition at line 2218 of file unification.cc.

References UnifyType::blank, BLANK, UnifyType::block(), Unify_Pending::cjoin, memoryBlock::decl(), EltMap, UnifyType::is_bottom(), Object_Typ, UnifyType::objTyp(), Unify_Blank::p, Unify_ECR::pending(), Pendings_p, promote(), Unify_Blank::s, Unify_Pendings::set(), settype(), UnifyType::structure, STRUCTURE, declNode::type(), Unify_ECR::type(), and Unify_Structure.

Referenced by at_initializer(), ecr(), and ecrField().

void UnificationBasedPtr::expand Unify_ECR   e [protected]
 

Definition at line 2273 of file unification.cc.

References settype(), Unify_ECR::type(), unify(), and Unify_Blank.

Referenced by at_allocation(), at_call(), at_initializer(), at_proc(), cjoin(), ensure_sim_obj(), and mergeOperand().

suespecNode* UnificationBasedPtr::field2sue declNode   d [inline, protected]
 

Definition at line 499 of file unification.h.

Referenced by at_initializer(), ecr(), and ecrField().

void UnificationBasedPtr::finalize   [protected]
 

Definition at line 3180 of file unification.cc.

References _ptr_call, Unify_ECR::allECR(), at_call(), cjoin(), Unify_Pending::cjoin, collapse(), Unify_Pending::collapse, UnifyType::ecr(), finalizing, is_Sim_Obj, join(), Unify_Pending::join_ECR, Unify_Pending::join_Lambda, make_unknown(), Unify_Pending::makeunknown, more_pending, new_pending, OBJECT, Pendings_p, serve_again, Sim_Obj_Lambda, SIMPLE, and Unify_ECR::type().

Referenced by analyze_all().

bool UnificationBasedPtr::is_va_list declNode   decl [static, protected]
 

Definition at line 3568 of file unification.cc.

References Tdef, Node::typ(), and declNode::type().

Referenced by at_call(), at_decl(), at_proc(), and print_ecr().

virtual bool UnificationBasedPtr::isField declNode   f,
bool &    from_annotation
const [inline, virtual]
 

Definition at line 398 of file unification.h.

References _unique_field_defn.

Referenced by memoryModel::create_memory_object().

void UnificationBasedPtr::join Lambda   l1,
Lambda   l2
[protected]
 

Definition at line 2097 of file unification.cc.

References Lambda::addArg(), Lambda::ellipsis(), Unify_Pendings::insert(), UnifyType::is_bottom(), Lambda::is_bottom(), join(), Unify_Pending::join_Lambda, Lambda::m(), Lambda::n(), new_pending, Lambda::pending(), Pendings_p, Unify_ECR::root(), Unify_Pendings::set(), settype(), Lambda::tao(), Lambda::taoR(), and Unify_ECR::type().

void UnificationBasedPtr::join Unify_ECR   e1,
Unify_ECR   e2,
bool *    recursion_detected = NULL
[protected]
 

Definition at line 1980 of file unification.cc.

References Unify_Pendings::cleanup(), finalizing, Unify_Pendings::insert(), UnifyType::is_bottom(), join(), more_pending, new_pending, Unify_ECR::pending(), Pendings_p, UnifyType::procs(), Unify_ECR::root(), Unify_Pendings::set(), settype(), Unify_ECR::type(), unify(), and Unify_ECR::Union().

void UnificationBasedPtr::join Alpha   a1,
Alpha   a2,
bool *    recursion_detected = NULL
[protected]
 

Definition at line 1967 of file unification.cc.

References Unify_Pendings::insert(), make_unknown(), Alpha::offset(), Unify_Offset::pending(), Alpha::tao(), Unify_Offset::value(), and Unify_Offset::zero.

Referenced by at_call(), at_decl(), at_initializer(), cjoin(), finalize(), join(), make_compatible(), merge_EltMap(), mergeOperand(), settype(), and unify().

bool UnificationBasedPtr::make_compatible declSet    n,
Unify_Structure   s,
Unify_ECR   container,
bool    force = false
[protected]
 

Definition at line 2862 of file unification.cc.

References _field2sue, _fieldpos, _unique_field_defn, Unify_Structure::all_str(), compatible_type(), Node::coord(), cur_proc, decl_list, decl_list_p, declSet, suespecNode::fields(), Unify_Structure::fo, Unify_Structure::fto, join(), Unify_Structure::m, suespecNode::owner(), Unify_ECR::root(), Struct, and typeNode::type().

Referenced by at_initializer(), cjoin(), ecr(), ecrField(), and merge_EltMap().

void UnificationBasedPtr::make_unknown Unify_Offset   o [protected]
 

Definition at line 2321 of file unification.cc.

References collapse(), Unify_Pending::collapse, Unify_Pending::makeunknown, Unify_Offset::pending(), Pendings_p, Unify_Pendings::set(), Unify_Offset::value(), and Unify_Offset::zero.

Referenced by at_threeAddr(), finalize(), and join().

virtual void UnificationBasedPtr::mark_alloc stmtNode   stmt,
declNode   source_decl,
declNode   target_decl
[inline, virtual]
 

Definition at line 392 of file unification.h.

void UnificationBasedPtr::merge_EltMap UnifyType   t1,
UnifyType   t2,
Unify_Structure  
[protected]
 

Definition at line 2819 of file unification.cc.

References UnifyType::ecr(), EltMap, FieldOrder, Unify_Structure::fo, join(), Unify_Structure::m, make_compatible(), UnifyType::objTyp(), UnifyType::structure, and STRUCTURE.

Referenced by unify().

void UnificationBasedPtr::mergeOperand operandNode   lhs,
operandNode   rhs,
Unify_Size   
[protected]
 

Definition at line 1160 of file unification.cc.

References _assignments, _ecr, _uses, operandNode::addr(), alpha(), declNode::BLOCK, operandNode::cast(), cjoin(), Const, declNode::decl_location(), ecr(), ensure_sim_obj(), expand(), operandNode::fields(), Func, Id, operandNode::index(), is_dismantler_tmp, join(), Unify_Size::leq(), Sim_Obj_Alpha, Sim_Obj_Size, operandNode::star(), Unify_ECR::type(), and operandNode::var().

Referenced by at_threeAddr().

Order Walker::order   const [inline, inherited]
 

Return the order in which Nodes of an AST should be visited.

Nodes can be visited before their children (Preorder), after their children (Postorder), or both (Both).

Definition at line 203 of file walker.h.

Referenced by df_number_walker::at_node(), whileNode::walk(), unitNode::walk(), unionNode::walk(), unaryNode::walk(), threeAddrNode::walk(), textNode::walk(), ternaryNode::walk(), tdefNode::walk(), switchNode::walk(), suespecNode::walk(), subdeclNode::walk(), structNode::walk(), returnNode::walk(), ptrNode::walk(), procNode::walk(), primNode::walk(), operandNode::walk(), metastmtNode::walk(), metaexprNode::walk(), labelNode::walk(), initializerNode::walk(), ifNode::walk(), idNode::walk(), gotoNode::walk(), funcNode::walk(), forNode::walk(), exprstmtNode::walk(), enumNode::walk(), doNode::walk(), declNode::walk(), continueNode::walk(), constNode::walk(), conditiongotoNode::walk(), commaNode::walk(), castNode::walk(), caseNode::walk(), callNode::walk(), breakNode::walk(), blockNode::walk(), binaryNode::walk(), basicblockNode::walk(), attribNode::walk(), and arrayNode::walk().

void UnificationBasedPtr::print_ecr  
 

Definition at line 3443 of file unification.cc.

References _dismantler_tmp, _ecr, Unify_ECR::allECR(), Unify_Simple::alpha, Unify_Object::alpha, Array, procNode::decl(), decl_list_p, declNode::FORMAL, UnifyType::id(), typeNode::is_ellipsis(), is_Sim_Obj, is_va_list(), declNode::name(), UnifyType::object, OBJECT, UnifyType::objTyp(), Unify_ECR::print(), Unify_ECR::proc(), Sim_Obj_Alpha, UnifyType::simple, SIMPLE, Alpha::tao(), declNode::TOP, Unify_ECR::type(), declNode::type(), and Unify_ECR::var().

Referenced by testUnify::run(), and Pointers::run_unification().

UnifyType* UnificationBasedPtr::proctype procNode   p [inline]
 

Definition at line 388 of file unification.h.

References _proctype.

Referenced by createProcBlock(), Pointers::determine_call_targets(), and memoryModel::~memoryModel().

void UnificationBasedPtr::promote Unify_ECR   e,
Unify_Size   s
[protected]
 

Definition at line 2285 of file unification.cc.

References Unify_Size::leq(), UnifyType::object, OBJECT, UnifyType::objTyp(), Unify_Object::s, settype(), Unify_ECR::type(), unify(), and Unify_Object.

Referenced by cjoin(), ecr(), ecrField(), ensure_sim_obj(), and ensure_struct_obj().

bool UnificationBasedPtr::reachable UnifyType   src,
UnifyTypes   targets,
UnifyTypes   visited
[static]
 

Definition at line 3404 of file unification.cc.

References BLANK, EltMap, UnifyType::is_bottom(), Unify_Structure::m, OBJECT, UnifyType::objTyp(), Sim_Obj_Alpha, SIMPLE, UnifyType::structure, and STRUCTURE.

Referenced by memoryModel::is_in_non_unify_list().

void UnificationBasedPtr::settype Lambda   l,
int    n,
int    m,
Unify_ECR **    t,
Unify_ECR   r,
bool    ellipse
[protected]
 

Definition at line 1951 of file unification.cc.

References join(), Unify_Pending::join_Lambda, Lambda::pending(), Pendings_p, Unify_Pendings::set(), and Lambda::settype().

void UnificationBasedPtr::settype Unify_ECR   e,
UnifyType   t
[protected]
 

Definition at line 1902 of file unification.cc.

References UnifyType::block(), cjoin(), Unify_Pending::cjoin, huge_pending, join(), Unify_Pending::join_ECR, Unify_Pending::join_Lambda, Unify_ECR::pending(), Pendings_p, Unify_Pendings::set(), Unify_ECR::type(), and memoryBlock::unifyType().

Referenced by at_allocation(), at_call(), at_proc(), cjoin(), collapse(), ensure_no_bottom(), ensure_sim_obj(), ensure_struct_obj(), expand(), join(), and promote().

Alpha* UnificationBasedPtr::string_alpha constNode   con [inline]
 

Definition at line 408 of file unification.h.

References _string_alpha.

Referenced by memoryModel::lookup_string_constant().

procNode* UnificationBasedPtr::synthetic_proc declNode   d [inline]
 

Definition at line 410 of file unification.h.

References _synthetic_proc.

Referenced by Unify_Size::sizeOfAssign().

UnifyType * UnificationBasedPtr::unify UnifyType   t1,
UnifyType   t2
[protected]
 

Definition at line 2537 of file unification.cc.

References Unify_Object::alpha, Unify_Simple::alpha, alpha(), UnifyType::blank, BLANK, UnifyType::block(), BOTTOM, UnifyType::ecr(), EltMap, Unify_Parents::equal(), Unify_Size::equal(), Lambda::equal(), Alpha::equal(), FieldOrder, FieldTypeOrder, UnifyType::is_bottom(), is_Sim_Obj, join(), Unify_Object::lambda, Unify_Simple::lambda, merge_EltMap(), memoryBlock::name(), UnifyType::object, OBJECT, Object_Typ, UnifyType::objTyp(), Alpha::offset(), Unify_Blank::p, Unify_Structure::p, Unify_Object::p, Unify_Simple::p, Unify_ECR::root(), Unify_Blank::s, Unify_Structure::s, Unify_Object::s, Unify_Simple::s, Sim_Obj_Alpha, Sim_Obj_Lambda, UnifyType::simple, SIMPLE, UnifyType::structure, STRUCTURE, Alpha::tao(), Unify_ECR::type(), Unify_Object, Unify_Simple, Unify_Structure, Unify_Offset::unknown, and Unify_Offset::value().

Referenced by collapse(), expand(), join(), and promote().

set< Unify_ECR * > UnificationBasedPtr::unique_ecr   const
 

Definition at line 3434 of file unification.cc.

References _ecr.

declNode* UnificationBasedPtr::unique_field_defn declNode   d [inline, protected]
 

Definition at line 497 of file unification.h.

Referenced by at_initializer(), cjoin(), and ecr().

void UnificationBasedPtr::unless_zero Unify_Offset   o,
Unify_ECR   tao
[protected]
 

Definition at line 2341 of file unification.cc.

References collapse(), Unify_Pendings::insert(), Unify_Offset::pending(), Unify_Offset::value(), and Unify_Offset::zero.

Referenced by at_initializer(), and ecr().


Member Data Documentation

TREE map<threeAddrNode*, Unify_ECR*> UnificationBasedPtr::_alloc [protected]
 

Definition at line 420 of file unification.h.

Referenced by at_allocation(), and ecr().

set<procNode*> UnificationBasedPtr::_analyzed_proc [protected]
 

Definition at line 442 of file unification.h.

Referenced by at_proc().

map<declNode*,int> UnificationBasedPtr::_assignments [protected]
 

Definition at line 445 of file unification.h.

Referenced by at_allocation(), at_decl(), at_proc(), ecr1(), and mergeOperand().

TREE int UnificationBasedPtr::_dismantler_tmp [protected]
 

Definition at line 423 of file unification.h.

Referenced by at_decl(), and print_ecr().

TREE map<declNode*, Unify_ECR*> UnificationBasedPtr::_ecr [protected]
 

Definition at line 418 of file unification.h.

Referenced by at_allocation(), at_call(), at_decl(), at_proc(), ecr(), ecr1(), mergeOperand(), print_ecr(), and unique_ecr().

TREE map<declNode*, suespecNode*> UnificationBasedPtr::_field2sue [protected]
 

Definition at line 425 of file unification.h.

Referenced by at_suespec(), and make_compatible().

TREE map<declNode*, decl_list> UnificationBasedPtr::_fieldpos [protected]
 

Definition at line 426 of file unification.h.

Referenced by at_suespec(), and make_compatible().

TREE map<procNode*, UnifyType*> UnificationBasedPtr::_proctype [protected]
 

Definition at line 419 of file unification.h.

Referenced by at_proc(), and proctype().

map<threeAddrNode*,UnifyType*> UnificationBasedPtr::_ptr_call [protected]
 

Definition at line 432 of file unification.h.

Referenced by at_call(), and finalize().

TREE map<constNode*,Alpha*> UnificationBasedPtr::_string_alpha [protected]
 

Definition at line 421 of file unification.h.

Referenced by alpha(), at_initializer(), and string_alpha().

map<declNode*,procNode*> UnificationBasedPtr::_synthetic_proc [protected]
 

Definition at line 441 of file unification.h.

Referenced by at_call(), create_synthetic_proc(), and synthetic_proc().

TREE map<declNode*, declNode*> UnificationBasedPtr::_unique_field_defn [protected]
 

Definition at line 430 of file unification.h.

Referenced by at_decl(), at_suespec(), ecrField(), isField(), and make_compatible().

TREE set<suespecNode*> UnificationBasedPtr::_unique_sue [protected]
 

Definition at line 428 of file unification.h.

Referenced by at_suespec().

map<declNode*,bool> UnificationBasedPtr::_uses [protected]
 

Definition at line 446 of file unification.h.

Referenced by at_allocation(), at_decl(), at_proc(), ecr1(), and mergeOperand().

TREE set<suespecNode*> UnificationBasedPtr::_visited_sue [protected]
 

Definition at line 428 of file unification.h.

Referenced by at_suespec().

procNode* UnificationBasedPtr::cur_proc [protected]
 

Definition at line 435 of file unification.h.

Referenced by at_decl(), at_proc(), ecr1(), and make_compatible().

unitNode* UnificationBasedPtr::cur_unit [protected]
 

Definition at line 434 of file unification.h.

Referenced by at_call().

bool UnificationBasedPtr::finalizing [protected]
 

Definition at line 437 of file unification.h.

Referenced by cjoin(), finalize(), and join().

bool UnificationBasedPtr::inside_call_func [protected]
 

Definition at line 436 of file unification.h.

Referenced by at_allocation(), at_decl(), and at_threeAddr().

Linker& UnificationBasedPtr::linker [protected]
 

Definition at line 440 of file unification.h.

Referenced by at_call(), at_decl(), at_proc(), and ecr1().

set<Unify_Pending*> UnificationBasedPtr::more_pending [protected]
 

Definition at line 438 of file unification.h.

Referenced by cjoin(), finalize(), and join().

bool UnificationBasedPtr::new_pending [protected]
 

Definition at line 437 of file unification.h.

Referenced by cjoin(), finalize(), and join().

bool UnificationBasedPtr::serve_again [protected]
 

Definition at line 437 of file unification.h.

Referenced by cjoin(), and finalize().

int UnificationBasedPtr::unify_points_to_max = 0 [static]
 

Definition at line 16 of file unification.cc.

Referenced by Pointers::assignment_operator(), Pointers::dot_operator(), and Pointers::star_operator().


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

Generated on August 27, 2003
Back to the C-Breeze home page