Polaris: Statement Class Reference

Statement Class Reference

#include <Statement.h>

Inheritance diagram for Statement:

Inheritance graph
[legend]
List of all members.

Public Member Functions

virtual Mutator< Expressioniterate_expressions ()
 Return an iterator over stmt exprs.
virtual int iterate_in_exprs_valid () const
 Check if there are valid in_ref exprs.
virtual Mutator< Expressioniterate_in_exprs_guarded ()
 Return an iterator over in_ref exprs.
virtual int iterate_out_exprs_valid () const
 Check if there are valid out_ref exprs.
virtual Mutator< Expressioniterate_out_exprs_guarded ()
 Return an iterator over out_ref exprs.
virtual int iterate_in_out_exprs_valid () const
 Check if there are valid in_out_ref exprs.
virtual Mutator< Expressioniterate_in_out_exprs_guarded ()
 Return an iterator over in_out_ref exprs.
void simplify_expressions ()
 Statement constructor takes two argument: The statement type and the statement tag.
 Statement (const char *l, STMT_TYPE st)
 Statement constructor takes two arguments: The statement type and the statement tag.
virtual ~Statement ()
virtual Listablelistable_clone () const
 Copy and return a pointer to any Listable item (MUST be implemented correctly by subclasses for List copy functions to work).
virtual Statementclone () const =0
virtual int structures_OK () const =0
int in_out_refs_structures_OK () const
 Check in/out/act _refs sets by saving them and recomputing them, then checking the saved one against the new one.
virtual void convert (BinRep &stmt, ExprTable &etable, Symtab &symtab, const NamelistDict &namelists, const FormatDB &formats, Dictionary< NextEntry > *next_table)
virtual RefSet< Statement > * build_succ (const StmtList &stmts) const
virtual void build_refs ()
 methods which will retrieve data from common fields
STMT_TYPE stmt_class () const
const RefSet< Statement > & succ () const
const RefSet< Statement > & pred () const
const RefSet< Expression > & in_refs () const
const RefSet< Expression > & out_refs () const
const RefSet< Expression > & act_refs () const
Statementnext_ref () const
 return the next element of the list.
Statementprev_ref () const
 void operator delete (void * ptr, size_t size);
Statementouter_ref () const
int line () const
BinRepoverflow () const
const char * tag () const
int tag_defined () const
const char * state () const
List< StringElem > & pre_directives () const
List< StringElem > & post_directives () const
AssertionListassertions () const
 methods which insert data into common fields
void state (const char *s)
void line (int l)
virtual void relink_lptrs (ProgramUnit &p)
 Change pointers within the Statement expressions to point into the given ProgramUnit.
virtual void relink_sptrs (ProgramUnit &p)
 Return the stack of WorkSpaces associated with the statement.
WorkSpaceStackwork_stack () const
PerformanceEstimator * perf_estimator ()
void set_perf_estimator (PerformanceEstimator *pe)
 Performance estimation data.
unsigned long profile ()
void set_profile (unsigned long profile)
virtual void access_table (SymbolAccessMap *map)
 Check whether the access_table exists.
Boolean access_table_exists ()
 Return a reference to the access_table (check access_table_exists() first!).
SymbolAccessMapaccess_table ()
 Iterate through all symbols and SymbolAccess objects.
KeyIterator< Symbol, SymbolAccessiter_access_table_guarded ()
 Add some other statement's access_table to mine.
void incorporate_access_table (const SymbolAccessMap &sam)
 Check whether any info is entered into access_table for the given Symbol.
Boolean symbol_access_exists (Symbol &sym)
 Once symbol_access_exists indicates that info exists, use one of the following to get an Iterator for looking through the AbstractAccess info.
virtual Iterator< AbstractAccessiter_read_guarded (Symbol &sym)
 Before calling one of these routines, call symbol_access_exists to be sure an access table exists and there is data for the symbol in it.
virtual Iterator< AbstractAccessiter_write_guarded (Symbol &sym)
virtual Iterator< AbstractAccessiter_readwrite_guarded (Symbol &sym)
 Insert a set of AbstractAccess objects into the SymbolAccessMap table for a statement.
void ins_access (SymbolAccessMap &map)
 Insert a list of AbstractAccess into the access_table.
void ins_read_access (Symbol &sym, List< AbstractAccess > &readlist)
 Insert a list of AbstractAccess into the access_table.
void ins_write_access (Symbol &sym, List< AbstractAccess > &writelist)
 Insert a list of AbstractAccess into the access_table.
void ins_readwrite_access (Symbol &sym, List< AbstractAccess > &readwritelist)
 Insert read AbstractAccess for a given symbol into the access_table.
void ins_read_access (Symbol &sym, AbstractAccess *)
 Insert write AbstractAccess for a given symbol into the access_table.
void ins_write_access (Symbol &sym, AbstractAccess *)
 Insert readwrite AbstractAccess for a given symbol into the access_table.
void ins_readwrite_access (Symbol &sym, AbstractAccess *)
 Update the flow graph information for a particular statement.
void fix_flow (StmtList &stmts)
 Remove flow links for this statement.
void del_flow (StmtList &stmts)
 called when an unspecified method is called
void error (char *) const
ProgramUnitprogram_unit ()
void program_unit (ProgramUnit *program_unit)
Iterator< Expressioniterate_all_expressions ()
 methods which retrieve statement specific data Will be redefined by sub-classes if field exists
virtual const Expressionlhs () const
virtual Expressionlhs ()
virtual const Expressionrhs () const
virtual Expressionrhs ()
virtual Statementfollow_ref () const
virtual Statementlead_ref () const
virtual Statementmatching_if_ref () const
virtual Statementmatching_endif_ref () const
virtual const Expressionexpr () const
virtual Expressionexpr ()
virtual const Expressionindex () const
virtual Expressionindex ()
virtual const Expressioninit () const
virtual Expressioninit ()
virtual const Expressionlimit () const
virtual Expressionlimit ()
virtual const Expressionstep () const
virtual Expressionstep ()
virtual const Expressionexpr_guarded () const
virtual Expressionexpr_guarded ()
virtual int expr_valid () const
virtual String get_loop_name ()
virtual const Statementtarget_ref () const
virtual Statementtarget_ref ()
virtual ASSIGN_TYPE atype () const
virtual const Formatformat_ref () const
virtual Formatformat_ref ()
virtual const RefList< Statement > & label_list () const
virtual RefList< Statement > & label_list ()
virtual const List< s_control_type > & s_control_guarded () const
virtual List< s_control_type > & s_control_guarded ()
virtual int s_control_valid () const
virtual Boolean marked_parallel () const
 assertion attached.
virtual Boolean marked_serial () const
 assertion attached.
virtual RefSet< Symbol > * private_vars_ref () const
 Expressions from PRIVATE assertion.
virtual const Expressionio_list_guarded () const
virtual Expressionio_list_guarded ()
virtual int io_list_valid () const
virtual const Expressionroutine_guarded () const
virtual Expressionroutine_guarded ()
virtual int routine_valid () const
virtual const Expressionparameters_guarded () const
virtual Expressionparameters_guarded ()
virtual int parameters_valid () const
virtual int value () const
 methods which insert statement specific data will be redefined by sub-classes if field exists
virtual void lhs (Expression *e)
virtual void rhs (Expression *e)
virtual void index (Expression *e)
virtual void init (Expression *e)
virtual void limit (Expression *e)
virtual void step (Expression *e)
virtual void expr (Expression *e)
virtual void target (Statement *s)
virtual void io_list (Expression *e)
virtual void routine (Expression *e)
virtual void parameters (Expression *e)
virtual void value (int i)
 This one is to satisfy Listable.
virtual void print (ostream &o) const
 This one is to satisfy Listable.
virtual void fortran_write (ostream &o, int &indent, char *type="") const =0
virtual void print_debug (ostream &o, int debug) const =0
 prints the statement if debug = 0, print only statement-specific debugging if debug = 1 (to be used in conjunction with print_fields)
virtual void write (ostream &o, int &indent, char *type="") const
 Write out the SymbolAccessMap.
void write_access_table (ostream &o)
 prints the statement in FORTRAN form with indent
void print_fields (ostream &o) const
 prints all additional fields (fields defined in the base class) for debugging
virtual void exchange_convert (VDL &vdl)
 Convert the Statement into the exchange format.
CDGNodecdgnode ()
void cdgnode (CDGNode *n)

Protected Member Functions

void make_overflow (Iterator< BinRep > &iter, const char *exname)
 < ---- helper functions for convert ---------
void empty_overflow ()
 Helper function: Make sure overflow is empty.
int check_common_fields (String &field, BinRep &second, ExprTable &etable, Dictionary< NextEntry > *next_table, char *caller)
 Convert the common fields of a statement return true if a match is found.
virtual void _setptrs (Dictionary< VoidPtrDef > &tags, const FormatDB &formats)
 Copies base values of this into other.
void copy_base (const Statement &other)
 These are fields common to all statement types.
void _add_act_refs (Expression &expr)
 Given an expression in the statement, add to this statement's _act_refs.
void _add_act_params (Expression &expr)
 Given an expression which is a parameter list, add to this statement's _act_refs.
void _add_in_refs (Expression &expr)
 Given an expression in the statement, add to this statement's _in_refs.
void _add_out_refs (Expression &expr)
 Given an expression in the statement, add to this statement's _out_refs ONLY FINDS THE INDEX VARIABLE OF AN EQUAL_OP: (A(I), I=1,N).
void _add_ioread_sets (Expression &expr)
 Given a top-level expression from a READ I/O list, add to the READ's in/out/act _refs.
RefSet< Statement > & modify_succ ()
RefSet< Statement > & modify_pred ()
 Create a modifyable copy of _succ and _pred for internal use.
void tag (const char *s)
 < The tag is needed to avoid duplication.

Protected Attributes

STMT_TYPE _type
 Type of statement.
List< Expression_exprlist
 List of the all the expressions in a statement.
List< Statement_successors_list
 List for _successors.
RefSet< Statement_successors
 successors of control flow
List< Statement_predecessors_list
 List for _predecessors.
RefSet< Statement_predecessors
 predecessors of control flow
List< Expression_in_refs_list
 List for _in_refs.
RefSet< Expression_in_refs
 expressions which read memory
List< Expression_out_refs_list
 List for _out_refs.
RefSet< Expression_out_refs
 expressions which write memory
List< Expression_act_refs_list
 List for _act_refs.
RefSet< Expression_act_refs
 all memory expressions?
AssertionList _assertion_list
 A list of the assertions.
Statement_outer
 innermost enclosing do loop
List< StringElem_pre_directives
 Statement directives.
List< StringElem_post_directives
 before & after the stmt
String _state
String _tag
 xxx _loop_info;
int _line
 line number
WorkSpaceStack _work_stack
 Stack of WorkSpace objects.
BinRep_overflow
 Any overflow information.
SymbolAccessMap_access_table
 by symbol for statement, or whole block if this is a block-type stmt, like DO
CDGNode_cdgnode
 Control Dependence Graph node.
PerformanceEstimator * _perf_estimator
unsigned long _stmtProfile
ProgramUnit_program_unit

Friends

class StmtList
ostream & operator<< (ostream &o, const Statement &st)
 This outputs the statement with all debugging info (ie-all fields!).

Constructor & Destructor Documentation

Statement::Statement const char *  l,
STMT_TYPE  st
 

Statement constructor takes two arguments: The statement type and the statement tag.

Definition at line 1834 of file Statement.cc.

References _access_table, _line, _outer, _overflow, _perf_estimator, _stmtProfile, and register_instance().

Statement::~Statement  )  [virtual]
 

Definition at line 1854 of file Statement.cc.

References _access_table, _overflow, and unregister_instance().


Member Function Documentation

void Statement::make_overflow Iterator< BinRep > &  iter,
const char *  exname
[protected]
 

< ---- helper functions for convert ---------

Definition at line 1296 of file Statement.cc.

References _overflow, BinRep::ins(), BinRep::put_set(), and warn_overflow_map().

void Statement::empty_overflow  )  [protected]
 

Helper function: Make sure overflow is empty.

Definition at line 1312 of file Statement.cc.

References _overflow.

int Statement::check_common_fields String field,
BinRep second,
ExprTable etable,
Dictionary< NextEntry > *  next_table,
char *  caller
[protected]
 

Convert the common fields of a statement return true if a match is found.

Discard (rebuild later) convert_expr_list(second, _in_refs, _in_refs_list, etable, caller);

Discard (rebuild later) convert_expr_list(second, _out_refs, _out_refs_list, etable, caller);

Discard (rebuild later) convert_expr_list(second, _act_refs, _act_refs_list, etable, caller);

Definition at line 1605 of file Statement.cc.

References _assertion_list, _line, _outer, _pre_directives, _predecessors, _predecessors_list, _successors, _successors_list, _tag, convert_assert_list(), convert_stmt_list(), convert_string_list(), List< T >::entries(), and temp_stmt_ptr().

virtual void Statement::_setptrs Dictionary< VoidPtrDef > &  tags,
const FormatDB formats
[protected, virtual]
 

Copies base values of this into other.

Reimplemented in ArithmeticIfStmt, AssignedGotoStmt, AssignStmt, BlockEntryStmt, BlockExitStmt, ComputedGotoStmt, DoStmt, ElseIfStmt, ElseStmt, EndDoStmt, GotoStmt, IfStmt, ImpliedGotoStmt, IOStmt, StmtPointer, and WhileStmt.

Referenced by BlockExitStmt::_setptrs(), BlockEntryStmt::_setptrs(), WhileStmt::_setptrs(), AssignedGotoStmt::_setptrs(), ComputedGotoStmt::_setptrs(), ArithmeticIfStmt::_setptrs(), GotoStmt::_setptrs(), IOStmt::_setptrs(), AssignStmt::_setptrs(), ElseStmt::_setptrs(), ImpliedGotoStmt::_setptrs(), ElseIfStmt::_setptrs(), IfStmt::_setptrs(), EndDoStmt::_setptrs(), and DoStmt::_setptrs().

void Statement::copy_base const Statement other  )  [protected]
 

These are fields common to all statement types.

... _loop_info = other._loop_info;

Definition at line 1323 of file Statement.cc.

References _access_table, _act_refs, _assertion_list, _exprlist, _in_refs, _line, _out_refs, _outer, _overflow, _post_directives, _pre_directives, _predecessors, _state, _successors, _tag, _type, RefSet< T >::clear(), SymbolAccessMap::clone(), List< T >::make_static_list(), and List< T >::modify().

Referenced by AllocateStmt::AllocateStmt(), ArithmeticIfStmt::ArithmeticIfStmt(), AssignedGotoStmt::AssignedGotoStmt(), AssignmentStmt::AssignmentStmt(), AssignStmt::AssignStmt(), BlockEntryStmt::BlockEntryStmt(), BlockExitStmt::BlockExitStmt(), CallStmt::CallStmt(), ComputedGotoStmt::ComputedGotoStmt(), DeallocateStmt::DeallocateStmt(), DirectiveStmt::DirectiveStmt(), DoStmt::DoStmt(), ElseIfStmt::ElseIfStmt(), ElseStmt::ElseStmt(), EndDoStmt::EndDoStmt(), EndIfStmt::EndIfStmt(), EntryStmt::EntryStmt(), FlowEntryStmt::FlowEntryStmt(), FlowExitStmt::FlowExitStmt(), GotoStmt::GotoStmt(), IfStmt::IfStmt(), ImpliedGotoStmt::ImpliedGotoStmt(), IOStmt::IOStmt(), LabelStmt::LabelStmt(), NullifyStmt::NullifyStmt(), BlockExitStmt::operator=(), BlockEntryStmt::operator=(), WhileStmt::operator=(), DirectiveStmt::operator=(), NullifyStmt::operator=(), DeallocateStmt::operator=(), AllocateStmt::operator=(), AssignedGotoStmt::operator=(), ComputedGotoStmt::operator=(), ArithmeticIfStmt::operator=(), GotoStmt::operator=(), LabelStmt::operator=(), ReturnStmt::operator=(), EntryStmt::operator=(), CallStmt::operator=(), FlowExitStmt::operator=(), FlowEntryStmt::operator=(), PauseStmt::operator=(), StopStmt::operator=(), IOStmt::operator=(), AssignStmt::operator=(), ElseStmt::operator=(), EndIfStmt::operator=(), ImpliedGotoStmt::operator=(), ElseIfStmt::operator=(), IfStmt::operator=(), EndDoStmt::operator=(), DoStmt::operator=(), AssignmentStmt::operator=(), StmtPointer::operator=(), PauseStmt::PauseStmt(), ReturnStmt::ReturnStmt(), StmtPointer::StmtPointer(), StopStmt::StopStmt(), and WhileStmt::WhileStmt().

void Statement::_add_act_refs Expression expr  )  [protected]
 

Given an expression in the statement, add to this statement's _act_refs.

If so, sends the parameter list to add_act_params to check whether any of the parameters may be included in the _act_refs set. If not, the expression's subexpressions are checked for FUNCTION_CALL_OPs recursively.

Definition at line 1033 of file Statement.cc.

References _add_act_params(), Expression::arg_list(), expr(), FUNCTION_CALL_OP, Expression::op(), Expression::parameters_guarded(), Expression::parameters_valid(), and List< T >::valid().

Referenced by _add_act_params(), _add_ioread_sets(), WhileStmt::build_refs(), NullifyStmt::build_refs(), AllocateStmt::build_refs(), AssignedGotoStmt::build_refs(), ComputedGotoStmt::build_refs(), ArithmeticIfStmt::build_refs(), ReturnStmt::build_refs(), IOStmt::build_refs(), AssignStmt::build_refs(), ElseIfStmt::build_refs(), IfStmt::build_refs(), DoStmt::build_refs(), and AssignmentStmt::build_refs().

void Statement::_add_act_params Expression expr  )  [protected]
 

Given an expression which is a parameter list, add to this statement's _act_refs.

Looks at each argument in turn. If it is a simple ID_OP, or ARRAY_REF_OP, then it is put in the _act_refs set. Otherwise, it is just checked for embedded FUNCTION_CALL_OPs.

Definition at line 1054 of file Statement.cc.

References _act_refs, _add_act_refs(), Expression::arg_list(), ARRAY_REF_OP, COMMA_OP, expr(), ID_OP, RefSet< T >::ins(), OMEGA_OP, Expression::op(), SUBSTRING_OP, and List< T >::valid().

Referenced by _add_act_refs(), and CallStmt::build_refs().

void Statement::_add_in_refs Expression expr  )  [protected]
 

Given an expression in the statement, add to this statement's _in_refs.

If so, add it to the _in_refs set. If not, whether it is a call of some kind, so as to carefully ignore the ID_OP of the name of the function, but still check the parameters. For all other types of expressions, recursively check them for IDs and ARRAY_REFs to add to the set.

... Ignore the function_exp ID_OP !!

... Fall through into other psuedo-assignments

... Ignore the index_id_expression ID_OP !! (this is written)

Definition at line 1134 of file Statement.cc.

References _in_refs, ALPHA_OP, Expression::arg_list(), ARRAY_REF_OP, Expression::bound(), EQUAL_OP, expr(), FUNCTION_CALL_OP, GAMMA_OP, Expression::gate(), ID_OP, RefSet< T >::ins(), INTRINSIC_CALL_OP, Expression::iteration_space(), LAMBDA_CALL_OP, MU_OP, Expression::op(), Expression::parameters_guarded(), Expression::parameters_valid(), Expression::subscript(), SUBSTRING_OP, and List< T >::valid().

Referenced by _add_ioread_sets(), WhileStmt::build_refs(), NullifyStmt::build_refs(), AllocateStmt::build_refs(), AssignedGotoStmt::build_refs(), ComputedGotoStmt::build_refs(), ArithmeticIfStmt::build_refs(), ReturnStmt::build_refs(), CallStmt::build_refs(), IOStmt::build_refs(), AssignStmt::build_refs(), ElseIfStmt::build_refs(), IfStmt::build_refs(), DoStmt::build_refs(), and AssignmentStmt::build_refs().

void Statement::_add_out_refs Expression expr  )  [protected]
 

Given an expression in the statement, add to this statement's _out_refs ONLY FINDS THE INDEX VARIABLE OF AN EQUAL_OP: (A(I), I=1,N).

EqualExpr is the ONLY case where you can tell from the expression alone that a variable is being written to.

Definition at line 1181 of file Statement.cc.

References _out_refs, Expression::arg_list(), EQUAL_OP, expr(), Expression::index_id(), RefSet< T >::ins(), Expression::op(), and List< T >::valid().

Referenced by IOStmt::build_refs().

void Statement::_add_ioread_sets Expression expr  )  [protected]
 

Given a top-level expression from a READ I/O list, add to the READ's in/out/act _refs.

The expression which is the argument MUST be an element of the CommaExpr which is the _iolist of a READ statement. This is a special case, because each "top-level" ID or ARRAY is taken to be written-to (by the READ statement), while everything else is read from. One complication is due to the fact that a function call with parameters may appear in a subscript, or in the iteration space expressions, so these parameters must be added to the _out_refs.

NOTE that the _out_refs are not complete after this is through- the caller still needs to add all members of the _act_refs set to the _out_refs set upon return.

Definition at line 1095 of file Statement.cc.

References _add_act_refs(), _add_in_refs(), _out_refs, Expression::arg_list(), ARRAY_REF_OP, Expression::bound(), Iterator< T >::current(), DO_OP, EQUAL_OP, expr(), ID_OP, Expression::index_id(), RefSet< T >::ins(), Expression::iolist(), Expression::iteration_space(), Expression::iterator(), Expression::op(), Expression::subscript(), SUBSTRING_OP, and Iterator< T >::valid().

Referenced by IOStmt::build_refs().

RefSet< Statement > & Statement::modify_succ  )  [inline, protected]
 

Definition at line 628 of file Statement.h.

References _successors.

Referenced by StmtList::delete_flow_graph(), StmtList::ins_after(), and StmtList::split_elseif().

RefSet< Statement > & Statement::modify_pred  )  [inline, protected]
 

Create a modifyable copy of _succ and _pred for internal use.

Definition at line 634 of file Statement.h.

References _predecessors.

Referenced by StmtList::delete_flow_graph(), and StmtList::split_elseif().

void Statement::tag const char *  s  )  [inline, protected]
 

< The tag is needed to avoid duplication.

Definition at line 324 of file Statement.h.

References _tag.

Referenced by _calc_loop_range(), _dump_workspaces(), ControlRangeDict::_get_range_ref(), AssignStmt::_setptrs(), accessor_test(), DDgraphTester::add(), IPCPProcData::add_constant_set(), DDgraphTester::add_dditerator(), clear_cdg_visited(), AbstractAccess::compute_new_dimension(), dcc_dfs(), intersect_ARDs(), main(), old_pEVAL(), PropConstWS::pretty_print(), ControlRangeDict::pretty_print(), SubroutineSymbol::print(), FunctionSymbol::print(), ProgramSymbol::print(), SSAFullRangeDict::print(), SSAFullRangeData::print(), SSARangeOrData::print(), SSAControlRangeDict::print(), SSAControlRangeData::print(), RangeAccessor::print(), PropRangeEdge::print(), PropConstElem::print(), PropConstValue::print(), pDominatorWorkSpace::print(), GSAWorkSpace::print(), GSAFullRangeDict::print(), GSAFullRangeData::print(), GSARangeOrData::print(), GSAControlRangeDict::print(), GSAControlRangeData::print(), DominatorWorkSpace::print(), CDGNode::print(), BlockExitStmt::print_debug(), BlockEntryStmt::print_debug(), WhileStmt::print_debug(), GotoStmt::print_debug(), ElseStmt::print_debug(), EndIfStmt::print_debug(), ImpliedGotoStmt::print_debug(), ElseIfStmt::print_debug(), IfStmt::print_debug(), EndDoStmt::print_debug(), DoStmt::print_debug(), print_fields(), print_stmt_tags(), SubroutineSymbol::relink_dptrs(), FunctionSymbol::relink_dptrs(), ProgramSymbol::relink_dptrs(), LabelExpr::relink_eptrs(), DDgraphTester::show_active_arcs(), DDgraphTester::show_arcs(), DDgraphTester::show_program(), SimBiGraph::SimBiGraph(), SimGraph::SimGraph(), split_multiple_entries(), stmt_toporder(), write_DF(), write_idom(), write_pDF(), and write_pidom().

Mutator< Expression > Statement::iterate_expressions  )  [virtual]
 

Return an iterator over stmt exprs.

Definition at line 1194 of file Statement.cc.

References _exprlist.

Referenced by _normalize_func_calls(), ProgramUnit::_propagate_types(), ProgramUnit::clean(), clean_statement(), SSAProgramUnit::convert_to_standard(), enforce_standard_within_bounds(), main(), optimize_ssa_beta(), optimize_ssa_eta(), optimize_ssa_gamma(), optimize_ssa_mu(), optimize_ssa_zero(), remove_all_statement_functions(), rename_all_occurences(), and simplify_expressions().

int Statement::iterate_in_exprs_valid  )  const [virtual]
 

Check if there are valid in_ref exprs.

Reimplemented in AssignmentStmt, and CallStmt.

Definition at line 1200 of file Statement.cc.

References _exprlist, and List< T >::entries().

Mutator< Expression > Statement::iterate_in_exprs_guarded  )  [virtual]
 

Return an iterator over in_ref exprs.

Reimplemented in AssignmentStmt, and CallStmt.

Definition at line 1206 of file Statement.cc.

References _exprlist.

Referenced by fix_alternate_expr().

int Statement::iterate_out_exprs_valid  )  const [virtual]
 

Check if there are valid out_ref exprs.

Reimplemented in AssignmentStmt.

Definition at line 1212 of file Statement.cc.

Mutator< Expression > Statement::iterate_out_exprs_guarded  )  [virtual]
 

Return an iterator over out_ref exprs.

Reimplemented in AssignmentStmt.

Definition at line 1218 of file Statement.cc.

Referenced by fix_alternate_expr().

int Statement::iterate_in_out_exprs_valid  )  const [virtual]
 

Check if there are valid in_out_ref exprs.

Reimplemented in CallStmt.

Definition at line 1227 of file Statement.cc.

Mutator< Expression > Statement::iterate_in_out_exprs_guarded  )  [virtual]
 

Return an iterator over in_out_ref exprs.

Reimplemented in CallStmt.

Definition at line 1233 of file Statement.cc.

void Statement::simplify_expressions  ) 
 

Statement constructor takes two argument: The statement type and the statement tag.

Definition at line 1242 of file Statement.cc.

References build_refs(), iterate_expressions(), and simplify().

Listable * Statement::listable_clone  )  const [virtual]
 

Copy and return a pointer to any Listable item (MUST be implemented correctly by subclasses for List copy functions to work).

Implements Listable.

Definition at line 1927 of file Statement.cc.

References clone(), and dbx_statement_cloning_debug_level.

virtual Statement* Statement::clone  )  const [pure virtual]
 

Implemented in AllocateStmt, ArithmeticIfStmt, AssignedGotoStmt, AssignmentStmt, AssignStmt, BlockEntryStmt, BlockExitStmt, CallStmt, ComputedGotoStmt, DeallocateStmt, DirectiveStmt, DoStmt, ElseIfStmt, ElseStmt, EndDoStmt, EndIfStmt, EntryStmt, FlowEntryStmt, FlowExitStmt, GotoStmt, IfStmt, ImpliedGotoStmt, IOStmt, LabelStmt, NullifyStmt, PauseStmt, ReturnStmt, StmtPointer, StopStmt, and WhileStmt.

Referenced by _translate_range(), cdg2cfg(), AbstractAccess::compute_new_dimension(), eg_backtrack(), eg_compare(), GSAFullRangeData::GSAFullRangeData(), listable_clone(), and SSAFullRangeData::SSAFullRangeData().

virtual int Statement::structures_OK  )  const [pure virtual]
 

Implemented in AllocateStmt, ArithmeticIfStmt, AssignedGotoStmt, AssignmentStmt, AssignStmt, BlockEntryStmt, BlockExitStmt, CallStmt, ComputedGotoStmt, DeallocateStmt, DirectiveStmt, DoStmt, ElseIfStmt, ElseStmt, EndDoStmt, EndIfStmt, EntryStmt, FlowEntryStmt, FlowExitStmt, GotoStmt, IfStmt, ImpliedGotoStmt, IOStmt, LabelStmt, NullifyStmt, PauseStmt, ReturnStmt, StmtPointer, StopStmt, and WhileStmt.

Referenced by _dump_workspaces(), SSAFullRangeData::structures_OK(), PropConstValue::structures_OK(), GSAFullRangeData::structures_OK(), and LabelExpr::structures_OK().

int Statement::in_out_refs_structures_OK  )  const
 

Check in/out/act _refs sets by saving them and recomputing them, then checking the saved one against the new one.

... Check _act_refs:

... Check _in_refs:

... Check _out_refs:

Definition at line 1874 of file Statement.cc.

References _act_refs, _in_refs, and _out_refs.

Referenced by BlockExitStmt::structures_OK(), BlockEntryStmt::structures_OK(), WhileStmt::structures_OK(), DirectiveStmt::structures_OK(), NullifyStmt::structures_OK(), DeallocateStmt::structures_OK(), AllocateStmt::structures_OK(), AssignedGotoStmt::structures_OK(), ComputedGotoStmt::structures_OK(), ArithmeticIfStmt::structures_OK(), GotoStmt::structures_OK(), LabelStmt::structures_OK(), ReturnStmt::structures_OK(), EntryStmt::structures_OK(), CallStmt::structures_OK(), FlowExitStmt::structures_OK(), FlowEntryStmt::structures_OK(), PauseStmt::structures_OK(), StopStmt::structures_OK(), IOStmt::structures_OK(), AssignStmt::structures_OK(), ElseStmt::structures_OK(), EndIfStmt::structures_OK(), ImpliedGotoStmt::structures_OK(), ElseIfStmt::structures_OK(), IfStmt::structures_OK(), EndDoStmt::structures_OK(), DoStmt::structures_OK(), and AssignmentStmt::structures_OK().

virtual void Statement::convert BinRep stmt,
ExprTable etable,
Symtab symtab,
const NamelistDict namelists,
const FormatDB formats,
Dictionary< NextEntry > *  next_table
[virtual]
 

Reimplemented in AllocateStmt, ArithmeticIfStmt, AssignedGotoStmt, AssignmentStmt, AssignStmt, BlockEntryStmt, BlockExitStmt, CallStmt, ComputedGotoStmt, DeallocateStmt, DirectiveStmt, DoStmt, ElseIfStmt, ElseStmt, EndDoStmt, EndIfStmt, EntryStmt, FlowEntryStmt, FlowExitStmt, GotoStmt, IfStmt, ImpliedGotoStmt, IOStmt, LabelStmt, NullifyStmt, PauseStmt, ReturnStmt, StmtPointer, StopStmt, and WhileStmt.

Referenced by StmtList::convert().

virtual RefSet<Statement>* Statement::build_succ const StmtList stmts  )  const [virtual]
 

Reimplemented in ArithmeticIfStmt, AssignedGotoStmt, BlockEntryStmt, BlockExitStmt, CallStmt, ComputedGotoStmt, DoStmt, ElseIfStmt, ElseStmt, EndDoStmt, FlowEntryStmt, FlowExitStmt, GotoStmt, IfStmt, ImpliedGotoStmt, IOStmt, ReturnStmt, StopStmt, and WhileStmt.

Referenced by fix_flow().

void Statement::build_refs  )  [virtual]
 

methods which will retrieve data from common fields

Reimplemented in AllocateStmt, ArithmeticIfStmt, AssignedGotoStmt, AssignmentStmt, AssignStmt, CallStmt, ComputedGotoStmt, DeallocateStmt, DirectiveStmt, DoStmt, ElseIfStmt, IfStmt, IOStmt, NullifyStmt, ReturnStmt, and WhileStmt.

Definition at line 2353 of file Statement.cc.

References _act_refs, _in_refs, _out_refs, and RefSet< T >::clear().

Referenced by _normalize_func_calls(), StmtList::build_all_refs(), clean_statement(), StmtList::convert(), SSAProgramUnit::convert_to_standard(), StmtList::ins_after(), optimize_ssa_beta(), optimize_ssa_eta(), optimize_ssa_gamma(), optimize_ssa_mu(), optimize_ssa_zero(), process(), remap_args_precalc(), remove_all_statement_functions(), and simplify_expressions().

STMT_TYPE Statement::stmt_class  )  const [inline]
 

Definition at line 379 of file Statement.h.

References _type.

Referenced by EvolutionGraph::_add_approximations(), _add_call_returns(), _add_control_assigns(), EvolutionGraph::_add_evolutions(), _any_reached_uses(), EvolutionGraph::_build(), _build_call_jump_functions(), _calc_loop_range(), _collect_candidates(), _delete_dead_code(), _determine_entry_points(), _find_scalar_sources(), _init_ipcp_workspaces(), _is_block_unreachable(), _iterate_to_fixed_point(), _make_nonlocals_modified_at_calls(), _make_nonlocals_used_at_calls(), _normalize_func_calls(), _patch_flow_graph(), EvolutionGraph::_relax(), _remove_local_effects_from_expr1(), _remove_unreachable(), Translator::actual(), add_dummy_eta_assignments_after_loops(), add_dummy_global_assignments_at_calls(), build_in_out_set(), build_in_out_sets(), ReturnStmt::build_succ(), FlowEntryStmt::build_succ(), StopStmt::build_succ(), callsite(), cdg2cfg(), AbstractAccess::check_access_patterns(), check_five_types(), clean_program(), clean_statement(), clone_loop(), clone_loop_body(), coalese_loop_pu(), collect_ar_statistics(), Program::compute_call_lists(), StmtList::contains_DO(), StmtList::convert(), SSAProgramUnit::convert_to_standard(), def_loop(), StmtList::del(), determine_loop_ranges(), DFS_S(), discriminate_phi(), eg_backtrack(), eliminate_unreachable_statements(), find_preds(), StmtList::first(), float_entry_points(), force_parallel(), gating(), gen_maymods(), generate_maymods(), get_back_sym(), get_falses(), get_gates_from_trace(), get_imu(), get_in(), get_in_out(), get_out(), get_preds_from_trace(), EvolutionGraph::get_trace_details(), get_trues(), has_known_iteration_space(), SSAProgramUnit::init_variable_set(), SSAProgramUnit::insert_phi_stmt(), insert_pseudo_assignment_stmts(), InsertPhiStmt(), is_mu_sym(), is_perfect_nest(), label_stmt_scopes(), StmtList::last(), last_gsa_symbol(), localize_goto(), loop(), main(), MakeDefMap(), mark_loops_with_location(), matching_else(), modify_dummy_eta_assignments_after_loops(), normalize_cfg(), normalize_loop_pu(), optimize_ssa_beta(), optimize_ssa_eta(), optimize_ssa_gamma(), optimize_ssa_mu(), parse_directives(), peel_first_loop_pu(), peel_last_loop_pu(), SSAProgramUnit::place_phi_functions(), preroll_loop_pu(), Predicates::print(), print_stmt_list(), PropConstWS::PropConstWS(), SubroutineSymbol::relink_dptrs(), InlineObject::remap_arg_names(), remap_args_precalc(), remove_dummy_assignments(), remove_gotos(), remove_trivial_gotos(), remove_unreachable_code(), SSAProgramUnit::rename_variables(), reverse_loop_pu(), SSAProgramUnit::SEARCH(), DDgraphTester::show_program(), sink_return_points(), skip_blocks(), sort_loops_postorder_lr(), sort_loops_preorder_lr(), StmtList::split_elseif(), split_multiple_entries(), LabelExpr::stmt(), strip_horiz_loop_pu(), strip_vert_loop_pu(), trace_defs(), trace_unique_def(), TranslateObject::translate_GSA_symbol_refs(), InlineObject::translate_symbol_refs(), translate_var(), and unroll_loop_pu().

const RefSet<Statement>& Statement::succ  )  const [inline]
 

Definition at line 382 of file Statement.h.

References _successors.

Referenced by _add_flow_edges(), _any_reached_uses(), _calc_toporder1(), _iterate_to_fixed_point(), cdg(), cfg2dt(), cfg2pdt(), DFS(), DFS_S(), DominanceFrontier(), exchange_convert(), gating(), pDominator(), PropConstWS::PropConstWS(), remove_trivial_gotos(), and SSAProgramUnit::SEARCH().

const RefSet<Statement>& Statement::pred  )  const [inline]
 

Definition at line 384 of file Statement.h.

References _predecessors.

Referenced by _calc_loop_range(), _init_data_preds(), _iterate_to_fixed_point(), _normalize_func_calls(), _put_pred_on_work_list(), _use_widening_operator(), cfg2dt(), cfg2pdt(), StmtList::del(), Dominator(), Dominator_S(), exchange_convert(), gating(), insert_pseudo_assignment_stmts(), InsertPhiStmt(), pDFS(), pDominanceFrontier(), SSAProgramUnit::place_phi_functions(), PropConstWS::PropConstWS(), remove_gotos(), remove_trivial_gotos(), and SSAProgramUnit::SEARCH().

const RefSet<Expression>& Statement::in_refs  )  const [inline]
 

Definition at line 387 of file Statement.h.

References _in_refs.

Referenced by _any_reached_uses(), _collect_candidates(), accessor_test(), DDgraphTester::add(), DDgraphTester::add_dditerator(), build_in_out_set(), SSAProgramUnit::convert_to_standard(), DDiterator::DDiterator(), exchange_convert(), optimize_ssa_beta(), optimize_ssa_eta(), optimize_ssa_gamma(), optimize_ssa_mu(), optimize_ssa_zero(), Predicates::Predicates(), DDiterator::reset(), SSAProgramUnit::SEARCH(), DDiterator::set_to_last(), DDgraphTester::show_active_arcs(), and DDgraphTester::show_arcs().

const RefSet<Expression>& Statement::out_refs  )  const [inline]
 

Definition at line 389 of file Statement.h.

References _out_refs.

Referenced by EvolutionGraph::_add_evolutions(), EvolutionGraph::_build(), accessor_test(), DDgraphTester::add(), DDgraphTester::add_dditerator(), add_dummy_eta_assignments_after_loops(), SSAProgramUnit::convert_to_standard(), DDiterator::DDiterator(), DFS_S(), exchange_convert(), gen_maymods(), SSAProgramUnit::init_variable_set(), last_gsa_symbol(), loop_variant_scalars(), loop_variant_vars(), MakeDefMap(), optimize_ssa_beta(), optimize_ssa_eta(), optimize_ssa_gamma(), optimize_ssa_mu(), optimize_ssa_zero(), Predicates::Predicates(), DDiterator::reset(), DDiterator::set_to_last(), DDgraphTester::show_active_arcs(), and DDgraphTester::show_arcs().

const RefSet<Expression>& Statement::act_refs  )  const [inline]
 

Definition at line 391 of file Statement.h.

References _act_refs.

Referenced by _make_nonlocals_modified_at_calls(), and exchange_convert().

Statement* Statement::next_ref  )  const [inline]
 

return the next element of the list.

Reimplemented from Listable.

Definition at line 394 of file Statement.h.

References Listable::next_ref().

Referenced by EvolutionGraph::_add_approximations(), EvolutionGraph::_add_evolutions(), EvolutionGraph::_build(), IntraPCodeDomain::_build_map(), _calc_loop_range(), _const_if_succ(), _delete_dead_code(), _filter_arrays(), _find_scalar_sources(), _get_ra(), _iterate_to_fixed_point(), _patch_flow_graph(), _remove_unreachable(), Translator::actual(), add_dummy_eta_assignments_after_loops(), add_dummy_global_assignments_at_calls(), build_dt(), build_in_out_sets(), build_pdt(), FlowEntryStmt::build_succ(), cdg2cfg(), cfg2dt(), clean_after_standard_enforcement(), clean_statement(), StmtList::create_assertions(), StmtList::del(), determine_loop_ranges(), dt2cfg(), eliminate_unreachable_statements(), enforce_standard_within_bounds(), exchange_convert(), InterPCodeDomain::expand_context_after(), IntraPCodeDomain::expand_context_after(), IntraPCodeDomain::expand_context_before(), find_postamble(), find_preds(), float_entry_points(), gen_maymods(), get_in(), get_in_out(), get_out(), IntraPCodeDomain::IntraPCodeDomain(), is_perfect_nest(), last_gsa_symbol(), matching_else(), modify_dummy_eta_assignments_after_loops(), Predicates::Predicates(), remap_args_precalc(), remove_dummy_assignments(), remove_gotos(), remove_trivial_gotos(), sink_return_points(), skip_blocks(), sort_loops_postorder_lr(), sort_loops_preorder_lr(), and translate_var().

Statement* Statement::prev_ref  )  const [inline]
 

void operator delete (void * ptr, size_t size);

Reimplemented from Listable.

Definition at line 397 of file Statement.h.

References Listable::prev_ref().

Referenced by _add_control_assigns(), _init_data_preds(), _normalize_func_calls(), _remove_unreachable(), build_in_out_set(), callsite(), cfg2pdt(), clean_after_standard_enforcement(), clean_program(), clean_statement(), StmtList::convert(), StmtList::create_assertions(), StmtList::del(), discriminate_phi(), exchange_convert(), find_preamble(), float_entry_points(), get_preds_from_trace(), has_known_iteration_space(), IntraPCodeDomain::IntraPCodeDomain(), is_perfect_nest(), last_gsa_symbol(), loop(), parse_directives(), pdt2cfg(), Predicates::Predicates(), remap_args_precalc(), remove_gotos(), sink_return_points(), StmtList::split_elseif(), and trace_defs().

Statement* Statement::outer_ref  )  const [inline]
 

Definition at line 400 of file Statement.h.

References _outer.

Referenced by _any_escaping_gotos(), _filter_arrays(), common_outer(), def_loop(), eg_backtrack(), eg_compare(), exchange_convert(), find_loop_same_level(), in_a_parallel_loop(), inner(), is_mu_sym(), localize_goto(), loop_variant(), main(), EvolutionGraph::min_distance(), propagate_outermost_DOs(), range_stmt(), and trace_defs().

int Statement::line  )  const [inline]
 

Definition at line 403 of file Statement.h.

References _line.

Referenced by cdg2cfg(), exchange_convert(), IntraPCodeDomain::print(), and print_stmt_list().

BinRep* Statement::overflow  )  const [inline]
 

Definition at line 406 of file Statement.h.

References _overflow.

const char* Statement::tag  )  const [inline]
 

Definition at line 409 of file Statement.h.

References _tag.

Referenced by BlockExitStmt::exchange_convert(), BlockEntryStmt::exchange_convert(), WhileStmt::exchange_convert(), DirectiveStmt::exchange_convert(), NullifyStmt::exchange_convert(), DeallocateStmt::exchange_convert(), AllocateStmt::exchange_convert(), AssignedGotoStmt::exchange_convert(), ComputedGotoStmt::exchange_convert(), ArithmeticIfStmt::exchange_convert(), GotoStmt::exchange_convert(), LabelStmt::exchange_convert(), ReturnStmt::exchange_convert(), EntryStmt::exchange_convert(), CallStmt::exchange_convert(), FlowExitStmt::exchange_convert(), FlowEntryStmt::exchange_convert(), PauseStmt::exchange_convert(), StopStmt::exchange_convert(), IOStmt::exchange_convert(), AssignStmt::exchange_convert(), ElseStmt::exchange_convert(), EndIfStmt::exchange_convert(), ImpliedGotoStmt::exchange_convert(), ElseIfStmt::exchange_convert(), IfStmt::exchange_convert(), EndDoStmt::exchange_convert(), DoStmt::exchange_convert(), AssignmentStmt::exchange_convert(), exchange_convert(), and StmtPointer::exchange_convert().

int Statement::tag_defined  )  const [inline]
 

Definition at line 412 of file Statement.h.

References _tag, and String::defined().

Referenced by SubroutineSymbol::relink_dptrs().

const char* Statement::state  )  const [inline]
 

Definition at line 415 of file Statement.h.

References _state.

List<StringElem>& Statement::pre_directives  )  const [inline]
 

Definition at line 418 of file Statement.h.

References _pre_directives.

Referenced by StmtList::create_assertions(), print_stmt_list(), StmtList::remove_directives(), and DDgraphTester::show_program().

List<StringElem>& Statement::post_directives  )  const [inline]
 

Definition at line 420 of file Statement.h.

References _post_directives.

Referenced by StmtList::create_assertions(), Directive::generate_omp_critical_directive(), print_stmt_list(), StmtList::remove_directives(), and DDgraphTester::show_program().

AssertionList& Statement::assertions  )  const [inline]
 

methods which insert data into common fields

Definition at line 423 of file Statement.h.

References _assertion_list.

Referenced by _add_asserts_to_ranges(), _compute_private_kill_sets(), _delete_dead_code(), _norm_func_calls1(), add_dummy_global_assignments_at_calls(), IPCPProcData::add_maymods(), cdg2cfg(), ProgramUnit::clean(), clean_program(), clone_loop(), clone_loop_body(), SSAProgramUnit::convert_to_standard(), StmtList::create_directives(), ProgramUnit::distribution_of(), force_parallel(), Directive::generate_omp_do_directive(), DoStmt::get_loop_name(), mark_loops_with_location(), DoStmt::marked_parallel(), DoStmt::marked_serial(), peel_loop_last(), print_fields(), DoStmt::private_vars_ref(), remove_maymod_assertions(), and remove_preamble().

void Statement::state const char *  s  )  [inline]
 

Definition at line 428 of file Statement.h.

References _state.

void Statement::line int  l  )  [inline]
 

Definition at line 431 of file Statement.h.

References _line.

void Statement::relink_lptrs ProgramUnit p  )  [virtual]
 

Change pointers within the Statement expressions to point into the given ProgramUnit.

Implements Relinkable.

Definition at line 1258 of file Statement.cc.

References _access_table, _assertion_list, _exprlist, access_table(), Map< S, T >::grab(), Map< S, T >::ins(), Expression::relink_eptrs(), relink_sptrs(), and List< T >::valid().

virtual void Statement::relink_sptrs ProgramUnit p  )  [virtual]
 

Return the stack of WorkSpaces associated with the statement.

Reimplemented in AssignStmt, CallStmt, EntryStmt, and IOStmt.

Referenced by relink_lptrs().

WorkSpaceStack& Statement::work_stack  )  const [inline]
 

Definition at line 442 of file Statement.h.

References _work_stack.

Referenced by _init_ipcp_workspaces(), _init_workspaces(), _ipcp_build_jump_functions(), _ipcp_propagate_constants(), _patch_flow_graph(), _propagate_constants1(), _remove_unreachable(), build_dt(), build_pdt(), cfg2dt(), cfg2pdt(), ProgramUnit::clean_workspace(), COMPRESS(), COMPRESS_PATH(), COMPRESS_S(), SSAProgramUnit::convert_to_SSA(), DFS(), DFS_S(), DominanceFrontier(), Dominator(), Dominator_S(), dt2cfg(), EVAL(), EVAL_S(), gating(), SSAProgramUnit::insert_phi_stmt(), insert_pseudo_assignment_stmts(), InsertPhiStmt(), LINK_PATH(), LINK_S(), SSAProgramUnit::make_phi_function(), old_pCOMPRESS(), old_pEVAL(), old_pLINK(), oldCOMPRESS(), oldEVAL(), oldLINK(), pCOMPRESS(), pDFS(), pDominanceFrontier(), pDominator(), pdt2cfg(), pdt_parent(), pEVAL(), SSAProgramUnit::place_phi_functions(), SSAProgramUnit::SEARCH(), stmt_toporder(), write_DF(), write_idom(), write_pDF(), and write_pidom().

PerformanceEstimator * Statement::perf_estimator  )  [inline]
 

Definition at line 648 of file Statement.h.

References _perf_estimator.

void Statement::set_perf_estimator PerformanceEstimator *  pe  )  [inline]
 

Performance estimation data.

Definition at line 654 of file Statement.h.

References _perf_estimator.

unsigned long Statement::profile  )  [inline]
 

Definition at line 450 of file Statement.h.

References _stmtProfile.

void Statement::set_profile unsigned long  profile  )  [inline]
 

Definition at line 451 of file Statement.h.

References _stmtProfile.

virtual void Statement::access_table SymbolAccessMap map  )  [inline, virtual]
 

Check whether the access_table exists.

Definition at line 454 of file Statement.h.

References _access_table.

Boolean Statement::access_table_exists  ) 
 

Return a reference to the access_table (check access_table_exists() first!).

Definition at line 1377 of file Statement.cc.

References _access_table, False, and True.

Referenced by check_access_patterns().

SymbolAccessMap & Statement::access_table  ) 
 

Iterate through all symbols and SymbolAccess objects.

Definition at line 1399 of file Statement.cc.

References _access_table.

Referenced by relink_lptrs().

KeyIterator< Symbol, SymbolAccess > Statement::iter_access_table_guarded  ) 
 

Add some other statement's access_table to mine.

Definition at line 1511 of file Statement.cc.

References _access_table.

Referenced by check_access_patterns().

void Statement::incorporate_access_table const SymbolAccessMap sam  ) 
 

Check whether any info is entered into access_table for the given Symbol.

Definition at line 1405 of file Statement.cc.

References _access_table, and SymbolAccessMap::incorporate().

Boolean Statement::symbol_access_exists Symbol sym  ) 
 

Once symbol_access_exists indicates that info exists, use one of the following to get an Iterator for looking through the AbstractAccess info.

Definition at line 1387 of file Statement.cc.

References _access_table, False, ProtoMap< S, T >::find_ref(), and True.

Iterator< AbstractAccess > Statement::iter_read_guarded Symbol sym  )  [virtual]
 

Before calling one of these routines, call symbol_access_exists to be sure an access table exists and there is data for the symbol in it.

Definition at line 1525 of file Statement.cc.

References _access_table, ProtoMap< S, T >::find_ref(), and SymbolAccess::iter_read().

Iterator< AbstractAccess > Statement::iter_write_guarded Symbol sym  )  [virtual]
 

Definition at line 1540 of file Statement.cc.

References _access_table, ProtoMap< S, T >::find_ref(), and SymbolAccess::iter_write().

Iterator< AbstractAccess > Statement::iter_readwrite_guarded Symbol sym  )  [virtual]
 

Insert a set of AbstractAccess objects into the SymbolAccessMap table for a statement.

Definition at line 1555 of file Statement.cc.

References _access_table, ProtoMap< S, T >::find_ref(), and SymbolAccess::iter_readwrite().

void Statement::ins_access SymbolAccessMap map  ) 
 

Insert a list of AbstractAccess into the access_table.

Definition at line 1411 of file Statement.cc.

References ins_read_access(), ins_readwrite_access(), ins_write_access(), SymbolAccess::muter_read(), SymbolAccess::muter_readwrite(), and SymbolAccess::muter_write().

void Statement::ins_read_access Symbol sym,
List< AbstractAccess > &  readlist
 

Insert a list of AbstractAccess into the access_table.

Definition at line 1439 of file Statement.cc.

Referenced by ins_access().

void Statement::ins_write_access Symbol sym,
List< AbstractAccess > &  writelist
 

Insert a list of AbstractAccess into the access_table.

Definition at line 1459 of file Statement.cc.

Referenced by ins_access().

void Statement::ins_readwrite_access Symbol sym,
List< AbstractAccess > &  readwritelist
 

Insert read AbstractAccess for a given symbol into the access_table.

Definition at line 1449 of file Statement.cc.

Referenced by ins_access().

void Statement::ins_read_access Symbol sym,
AbstractAccess aa
 

Insert write AbstractAccess for a given symbol into the access_table.

... Didn't have a SymbolAccess for this symbol before

Definition at line 1469 of file Statement.cc.

References _access_table, SymbolAccess::add_read(), ProtoMap< S, T >::find_ref(), and Map< S, T >::ins().

void Statement::ins_write_access Symbol sym,
AbstractAccess aa
 

Insert readwrite AbstractAccess for a given symbol into the access_table.

... Didn't have a SymbolAccess for this symbol before

Definition at line 1483 of file Statement.cc.

References _access_table, SymbolAccess::add_write(), ProtoMap< S, T >::find_ref(), and Map< S, T >::ins().

void Statement::ins_readwrite_access Symbol sym,
AbstractAccess aa
 

Update the flow graph information for a particular statement.

... Didn't have a SymbolAccess for this symbol before

Definition at line 1497 of file Statement.cc.

References _access_table, SymbolAccess::add_readwrite(), ProtoMap< S, T >::find_ref(), and Map< S, T >::ins().

void Statement::fix_flow StmtList stmts  ) 
 

Remove flow links for this statement.

Update the pred() and succ() fields of all affected statements.

Definition at line 2366 of file Statement.cc.

References _successors, build_succ(), RefSet< T >::del(), RefSet< T >::ins(), RefSet< T >::member(), and RefSet< T >::valid().

Referenced by StmtList::create_flow_graph(), StmtList::del(), StmtList::ins_before(), StmtList::split_elseif(), and StmtList::StmtList().

void Statement::del_flow StmtList stmts  ) 
 

called when an unspecified method is called

Referenced by StmtList::del().

void Statement::error char *   )  const
 

Definition at line 1820 of file Statement.cc.

References _type, and type_string.

Referenced by expr(), expr_guarded(), get_loop_name(), index(), init(), io_list_guarded(), label_list(), lhs(), limit(), parameters_guarded(), rhs(), routine_guarded(), s_control_guarded(), step(), and value().

ProgramUnit* Statement::program_unit  )  [inline]
 

Definition at line 508 of file Statement.h.

References _program_unit.

Referenced by program_unit().

void Statement::program_unit ProgramUnit program_unit  )  [inline]
 

Definition at line 509 of file Statement.h.

References _program_unit, and program_unit().

Iterator< Expression > Statement::iterate_all_expressions  )  [inline]
 

methods which retrieve statement specific data Will be redefined by sub-classes if field exists

Definition at line 661 of file Statement.h.

References _exprlist.

const Expression & Statement::lhs  )  const [virtual]
 

Reimplemented in AssignmentStmt, and AssignStmt.

Definition at line 1946 of file Statement.cc.

References error().

Referenced by EvolutionGraph::_add_approximations(), _any_reached_uses(), EvolutionGraph::_build(), _collect_candidates(), _make_nonlocals_modified_at_calls(), clean_statement(), DFS_S(), fix_alternate_expr(), gen_maymods(), get_back_sym(), get_in(), get_in_out(), get_out(), has_known_iteration_space(), SSAProgramUnit::init_variable_set(), is_mu_sym(), last_gsa_symbol(), MakeDefMap(), modify_dummy_eta_assignments_after_loops(), normalize_loop(), optimize_ssa_eta(), optimize_ssa_gamma(), optimize_ssa_mu(), process(), remove_assigned_goto_stmts(), remove_dummy_assignments(), SSAProgramUnit::SEARCH(), SEARCH(), and trace_defs().

Expression & Statement::lhs  )  [virtual]
 

Reimplemented in AssignmentStmt, and AssignStmt.

Definition at line 1953 of file Statement.cc.

References error().

const Expression & Statement::rhs  )  const [virtual]
 

Reimplemented in AssignmentStmt.

Definition at line 1960 of file Statement.cc.

References error().

Referenced by EvolutionGraph::_add_approximations(), EvolutionGraph::_add_evolutions(), EvolutionGraph::_build(), _build_call_jump_functions(), _collect_candidates(), _find_scalar_sources(), _init_data_preds(), _normalize_func_calls(), add_dummy_global_assignments_at_calls(), build_in_out_set(), callsite(), clean_program(), clean_statement(), Program::compute_call_lists(), SSAProgramUnit::convert_to_standard(), generate_maymods(), get_back_sym(), get_gates_from_trace(), get_imu(), get_in(), get_in_out(), get_out(), get_preds_from_trace(), EvolutionGraph::get_trace_details(), InsertPhiStmt(), is_mu_sym(), last_gsa_symbol(), loop(), main(), modify_dummy_eta_assignments_after_loops(), optimize_ssa_beta(), optimize_ssa_eta(), optimize_ssa_gamma(), optimize_ssa_mu(), process(), InlineObject::remap_arg_names(), remap_args_precalc(), remove_dummy_assignments(), SSAProgramUnit::rename_variables(), SSAProgramUnit::SEARCH(), SEARCH(), trace_defs(), trace_unique_def(), and TranslateObject::translate_GSA_symbol_refs().

Expression & Statement::rhs  )  [virtual]
 

Reimplemented in AssignmentStmt.

Definition at line 1967 of file Statement.cc.

References error().

Statement * Statement::follow_ref  )  const [virtual]
 

Reimplemented in BlockEntryStmt, BlockExitStmt, DoStmt, ElseIfStmt, ElseStmt, EndDoStmt, IfStmt, ImpliedGotoStmt, and WhileStmt.

Definition at line 1974 of file Statement.cc.

Referenced by EvolutionGraph::_add_approximations(), _add_control_assigns(), EvolutionGraph::_add_evolutions(), EvolutionGraph::_build(), _calc_loop_range(), _const_if_succ(), _delete_dead_code(), _get_ra(), _iterate_to_fixed_point(), _remove_unreachable(), add_dummy_eta_assignments_after_loops(), cdg2cfg(), StmtList::del(), determine_loop_ranges(), eg_range_array_1_to_i(), eliminate_loop(), enclosing_scope(), enforce_standard_within_bounds(), exchange_convert(), Directive::generate_omp_critical_directive(), is_perfect_nest(), last_gsa_symbol(), modify_dummy_eta_assignments_after_loops(), peel_loop_last(), Predicates::Predicates(), propagate_outermost_DOs(), range_stmt(), remove_trivial_gotos(), SSAProgramUnit::SEARCH(), skip_blocks(), sort_loops_postorder_lr(), sort_loops_preorder_lr(), and StmtList::split_elseif().

Statement * Statement::lead_ref  )  const [virtual]
 

Reimplemented in ElseIfStmt, ElseStmt, and EndIfStmt.

Definition at line 1980 of file Statement.cc.

Referenced by exchange_convert(), matching_else(), and StmtList::split_elseif().

Statement * Statement::matching_if_ref  )  const [virtual]
 

Reimplemented in EndIfStmt.

Definition at line 1986 of file Statement.cc.

Referenced by remove_unreachable_code(), and StmtList::split_elseif().

Statement * Statement::matching_endif_ref  )  const [virtual]
 

Reimplemented in IfStmt.

Definition at line 1992 of file Statement.cc.

Referenced by EvolutionGraph::_add_approximations(), _remove_unreachable(), cdg2cfg(), clean_after_standard_enforcement(), find_preds(), matching_else(), and skip_blocks().

const Expression & Statement::expr  )  const [virtual]
 

Reimplemented in ArithmeticIfStmt, AssignedGotoStmt, ComputedGotoStmt, ElseIfStmt, IfStmt, and WhileStmt.

Definition at line 2054 of file Statement.cc.

References error().

Referenced by _add_act_params(), _add_act_refs(), _add_control_assigns(), _add_in_refs(), _add_ioread_sets(), _add_out_refs(), add_dummy_eta_assignments_after_loops(), cdg2cfg(), convert_arithmetic_if(), infer_preds(), localize_goto(), normalize_cfg(), remove_assigned_goto_stmts(), and remove_gotos().

Expression & Statement::expr  )  [virtual]
 

Reimplemented in ArithmeticIfStmt, AssignedGotoStmt, ComputedGotoStmt, ElseIfStmt, IfStmt, and WhileStmt.

Definition at line 2061 of file Statement.cc.

References error().

const Expression & Statement::index  )  const [virtual]
 

Reimplemented in DoStmt.

Definition at line 1998 of file Statement.cc.

References error().

Referenced by EvolutionGraph::_add_evolutions(), _any_reached_uses(), EvolutionGraph::_back_edge(), EvolutionGraph::_build(), EvolutionGraph::_compute_acyclic_evolutions(), EvolutionGraph::_compute_cyclic_evolutions(), EvolutionGraph::_local_range(), EvolutionGraph::_possible_ranges(), _remove_unreachable(), _update_enddo_succs(), cdg2cfg(), enforce_standard_within_bounds(), force_parallel(), insert_pseudo_assignment_stmts(), and SSAProgramUnit::place_phi_functions().

Expression & Statement::index  )  [virtual]
 

Reimplemented in DoStmt.

Definition at line 2005 of file Statement.cc.

References error().

const Expression & Statement::init  )  const [virtual]
 

Reimplemented in DoStmt.

Definition at line 2012 of file Statement.cc.

References error().

Referenced by EvolutionGraph::_local_range(), EvolutionGraph::_possible_ranges(), _remove_unreachable(), cdg2cfg(), eliminate_loop(), enforce_standard_within_bounds(), normalize_loop(), peel_loop_first(), and peel_loop_last().

Expression & Statement::init  )  [virtual]
 

Reimplemented in DoStmt.

Definition at line 2019 of file Statement.cc.

References error().

const Expression & Statement::limit  )  const [virtual]
 

Reimplemented in DoStmt.

Definition at line 2026 of file Statement.cc.

References error().

Referenced by EvolutionGraph::_local_range(), EvolutionGraph::_possible_ranges(), _remove_unreachable(), add_dummy_eta_assignments_after_loops(), cdg2cfg(), enforce_standard_within_bounds(), peel_loop_first(), peel_loop_last(), and preroll_loop().

Expression & Statement::limit  )  [virtual]
 

Reimplemented in DoStmt.

Definition at line 2033 of file Statement.cc.

References error().

const Expression & Statement::step  )  const [virtual]
 

Reimplemented in DoStmt.

Definition at line 2040 of file Statement.cc.

References error().

Referenced by EvolutionGraph::_compute_acyclic_evolutions(), _update_enddo_succs(), and cdg2cfg().

Expression & Statement::step  )  [virtual]
 

Reimplemented in DoStmt.

Definition at line 2047 of file Statement.cc.

References error().

const Expression & Statement::expr_guarded  )  const [virtual]
 

Reimplemented in PauseStmt, ReturnStmt, and StopStmt.

Definition at line 2068 of file Statement.cc.

References error().

Referenced by ReturnStmt::build_refs().

Expression & Statement::expr_guarded  )  [virtual]
 

Reimplemented in PauseStmt, ReturnStmt, and StopStmt.

Definition at line 2075 of file Statement.cc.

References error().

int Statement::expr_valid  )  const [virtual]
 

Reimplemented in PauseStmt, ReturnStmt, and StopStmt.

Definition at line 2082 of file Statement.cc.

Referenced by ReturnStmt::build_refs(), and sink_return_points().

String Statement::get_loop_name  )  [virtual]
 

Reimplemented in DoStmt.

Definition at line 2287 of file Statement.cc.

References error().

Referenced by EvolutionGraph::_build(), clone_loop(), clone_loop_body(), peel_loop_last(), and propagate_outermost_DOs().

const Statement * Statement::target_ref  )  const [virtual]
 

Reimplemented in AssignStmt, and GotoStmt.

Definition at line 2088 of file Statement.cc.

Referenced by float_entry_points(), remove_assigned_goto_stmts(), remove_gotos(), and remove_trivial_gotos().

Statement * Statement::target_ref  )  [virtual]
 

Reimplemented in AssignStmt, and GotoStmt.

Definition at line 2094 of file Statement.cc.

ASSIGN_TYPE Statement::atype  )  const [virtual]
 

Reimplemented in AssignStmt.

Definition at line 2100 of file Statement.cc.

References INVALID_ASSIGN.

Referenced by remove_assigned_goto_stmts().

const Format * Statement::format_ref  )  const [virtual]
 

Reimplemented in AssignStmt.

Definition at line 2106 of file Statement.cc.

Format * Statement::format_ref  )  [virtual]
 

Reimplemented in AssignStmt.

Definition at line 2112 of file Statement.cc.

const RefList< Statement > & Statement::label_list  )  const [virtual]
 

Reimplemented in ArithmeticIfStmt, AssignedGotoStmt, and ComputedGotoStmt.

Definition at line 2118 of file Statement.cc.

References error().

Referenced by _const_if_succ(), localize_goto(), and normalize_cfg().

RefList< Statement > & Statement::label_list  )  [virtual]
 

Reimplemented in ArithmeticIfStmt, AssignedGotoStmt, and ComputedGotoStmt.

Definition at line 2125 of file Statement.cc.

References error().

const List< s_control_type > & Statement::s_control_guarded  )  const [virtual]
 

Reimplemented in IOStmt.

Definition at line 2132 of file Statement.cc.

References error().

Referenced by ProgramUnit::clean().

List< s_control_type > & Statement::s_control_guarded  )  [virtual]
 

Reimplemented in IOStmt.

Definition at line 2139 of file Statement.cc.

References error().

int Statement::s_control_valid  )  const [virtual]
 

Reimplemented in IOStmt.

Definition at line 2146 of file Statement.cc.

References False.

Referenced by ProgramUnit::clean().

Boolean Statement::marked_parallel  )  const [virtual]
 

assertion attached.

Reimplemented in DoStmt.

Definition at line 987 of file Statement.cc.

Boolean Statement::marked_serial  )  const [virtual]
 

assertion attached.

Reimplemented in DoStmt.

Definition at line 995 of file Statement.cc.

RefSet< Symbol > * Statement::private_vars_ref  )  const [virtual]
 

Expressions from PRIVATE assertion.

Reimplemented in DoStmt.

Definition at line 1003 of file Statement.cc.

const Expression & Statement::io_list_guarded  )  const [virtual]
 

Reimplemented in IOStmt.

Definition at line 2152 of file Statement.cc.

References error().

Expression & Statement::io_list_guarded  )  [virtual]
 

Reimplemented in IOStmt.

Definition at line 2159 of file Statement.cc.

References error().

int Statement::io_list_valid  )  const [virtual]
 

Reimplemented in IOStmt.

Definition at line 1940 of file Statement.cc.

const Expression & Statement::routine_guarded  )  const [virtual]
 

Reimplemented in CallStmt, and EntryStmt.

Definition at line 2166 of file Statement.cc.

References error().

Referenced by add_dummy_global_assignments_at_calls(), Program::compute_call_lists(), Program::entry_points(), IPCPProcData::IPCPProcData(), CallSite::print(), InlineObject::remap_arg_names(), ProgramUnit::routine_name_ref(), and split_multiple_entries().

Expression & Statement::routine_guarded  )  [virtual]
 

Reimplemented in CallStmt, and EntryStmt.

Definition at line 2173 of file Statement.cc.

References error().

int Statement::routine_valid  )  const [virtual]
 

Reimplemented in CallStmt, and EntryStmt.

Definition at line 2180 of file Statement.cc.

Referenced by Program::entry_points(), and ProgramUnit::routine_name_ref().

const Expression & Statement::parameters_guarded  )  const [virtual]
 

Reimplemented in AllocateStmt, CallStmt, DeallocateStmt, and EntryStmt.

Definition at line 2186 of file Statement.cc.

References error().

Referenced by _normalize_func_calls(), SSAProgramUnit::convert_to_standard(), optimize_ssa_beta(), InlineObject::remap_arg_names(), and remap_args_precalc().

Expression & Statement::parameters_guarded  )  [virtual]
 

Reimplemented in AllocateStmt, CallStmt, DeallocateStmt, and EntryStmt.

Definition at line 2193 of file Statement.cc.

References error().

int Statement::parameters_valid  )  const [virtual]
 

Reimplemented in AllocateStmt, CallStmt, DeallocateStmt, and EntryStmt.

Definition at line 2200 of file Statement.cc.

Referenced by NullifyStmt::exchange_convert(), InlineObject::remap_arg_names(), and remap_args_precalc().

int Statement::value  )  const [virtual]
 

methods which insert statement specific data will be redefined by sub-classes if field exists

Reimplemented in LabelStmt.

Definition at line 2206 of file Statement.cc.

References error().

Referenced by StmtList::del(), pDominatorWorkSpace::print(), GSAWorkSpace::print(), DominatorWorkSpace::print(), AssignStmt::print_debug(), and print_target_labels().

virtual void Statement::lhs Expression e  )  [virtual]
 

Reimplemented in AssignmentStmt, and AssignStmt.

virtual void Statement::rhs Expression e  )  [virtual]
 

Reimplemented in AssignmentStmt.

virtual void Statement::index Expression e  )  [virtual]
 

Reimplemented in DoStmt.

virtual void Statement::init Expression e  )  [virtual]
 

Reimplemented in DoStmt.

virtual void Statement::limit Expression e  )  [virtual]
 

Reimplemented in DoStmt.

virtual void Statement::step Expression e  )  [virtual]
 

Reimplemented in DoStmt.

virtual void Statement::expr Expression e  )  [virtual]
 

Reimplemented in ArithmeticIfStmt, AssignedGotoStmt, ComputedGotoStmt, ElseIfStmt, IfStmt, PauseStmt, ReturnStmt, StopStmt, and WhileStmt.

virtual void Statement::target Statement s  )  [virtual]
 

Reimplemented in AssignStmt, and GotoStmt.

virtual void Statement::io_list Expression e  )  [virtual]
 

Reimplemented in IOStmt.

virtual void Statement::routine Expression e  )  [virtual]
 

Reimplemented in CallStmt, and EntryStmt.

Referenced by ProgramUnit::create_program_unit().

virtual void Statement::parameters Expression e  )  [virtual]
 

Reimplemented in AllocateStmt, CallStmt, DeallocateStmt, EntryStmt, and NullifyStmt.

virtual void Statement::value int  i  )  [virtual]
 

This one is to satisfy Listable.

Reimplemented in LabelStmt.

void Statement::print ostream &  o  )  const [virtual]
 

This one is to satisfy Listable.

Implements Listable.

Definition at line 2296 of file Statement.cc.

Referenced by cdg2cfg().

virtual void Statement::fortran_write ostream &  o,
int &  indent,
char *  type = ""
const [pure virtual]
 

Implemented in AllocateStmt, ArithmeticIfStmt, AssignedGotoStmt, AssignmentStmt, AssignStmt, BlockEntryStmt, BlockExitStmt, CallStmt, ComputedGotoStmt, DeallocateStmt, DirectiveStmt, DoStmt, ElseIfStmt, ElseStmt, EndDoStmt, EndIfStmt, EntryStmt, FlowEntryStmt, FlowExitStmt, GotoStmt, IfStmt, ImpliedGotoStmt, IOStmt, LabelStmt, NullifyStmt, PauseStmt, ReturnStmt, StmtPointer, StopStmt, and WhileStmt.

Referenced by _dump_workspaces(), and main().

virtual void Statement::print_debug ostream &  o,
int  debug
const [pure virtual]
 

prints the statement if debug = 0, print only statement-specific debugging if debug = 1 (to be used in conjunction with print_fields)

Print was primarily designed to be used by other functions, to better output statements we suggest using the << operator to print with debugging info or the write method to print in FORTRAN form

Implemented in AllocateStmt, ArithmeticIfStmt, AssignedGotoStmt, AssignmentStmt, AssignStmt, BlockEntryStmt, BlockExitStmt, CallStmt, ComputedGotoStmt, DeallocateStmt, DirectiveStmt, DoStmt, ElseIfStmt, ElseStmt, EndDoStmt, EndIfStmt, EntryStmt, FlowEntryStmt, FlowExitStmt, GotoStmt, IfStmt, ImpliedGotoStmt, IOStmt, LabelStmt, NullifyStmt, PauseStmt, ReturnStmt, StmtPointer, StopStmt, and WhileStmt.

Referenced by _delete_dead_code(), _dump_workspaces(), _iterate_to_fixed_point(), _remove_unreachable(), SSAControlRangeDict::print(), IPCPProcData::print(), IPCPCallData::print(), and GSAControlRangeDict::print().

virtual void Statement::write ostream &  o,
int &  indent,
char *  type = ""
const [virtual]
 

Write out the SymbolAccessMap.

Referenced by _iterate_to_fixed_point_phase(), cdg2cfg(), InlineObject::inline_expand(), Predicates::print(), GlobalDefSite::print(), IntraPCodeDomain::print(), print_gmap(), print_stmt_list(), DDgraphTester::show_program(), translate_one_symbol(), and ProgramUnit::write().

void Statement::write_access_table ostream &  o  ) 
 

prints the statement in FORTRAN form with indent

Definition at line 1369 of file Statement.cc.

References _access_table, and SymbolAccessMap::write().

Referenced by print_stmt_list().

void Statement::print_fields ostream &  o  )  const
 

prints all additional fields (fields defined in the base class) for debugging

... comment '{'

Definition at line 1691 of file Statement.cc.

References _access_table, _act_refs, _in_refs, _line, _out_refs, _outer, _overflow, _post_directives, _pre_directives, _predecessors, _successors, _type, _work_stack, assertions(), WorkSpaceStack::entries(), List< T >::entries(), RefSet< T >::entries(), ENTRY_STMT, print_expr_list(), print_stmt_tags(), print_string_list(), and tag().

void Statement::exchange_convert VDL vdl  )  [virtual]
 

Convert the Statement into the exchange format.

... Fill in the common fields.

... successors

... predecessors

... in_refs

... out_refs

... act_refs

Reimplemented in AllocateStmt, ArithmeticIfStmt, AssignedGotoStmt, AssignmentStmt, AssignStmt, BlockEntryStmt, BlockExitStmt, CallStmt, ComputedGotoStmt, DeallocateStmt, DirectiveStmt, DoStmt, ElseIfStmt, ElseStmt, EndDoStmt, EndIfStmt, EntryStmt, FlowEntryStmt, FlowExitStmt, GotoStmt, IfStmt, ImpliedGotoStmt, IOStmt, LabelStmt, NullifyStmt, PauseStmt, ReturnStmt, StmtPointer, StopStmt, and WhileStmt.

Definition at line 858 of file Statement.cc.

References act_refs(), BinRep::find_ref(), follow_ref(), in_refs(), List< T >::ins(), Set< T >::ins(), List< T >::ins_last(), lead_ref(), line(), next_ref(), out_refs(), outer_ref(), pred(), prev_ref(), succ(), tag(), BinRep::to_set(), BinRep::to_tuple(), and RefSet< T >::valid().

Referenced by StmtList::exchange_convert(), BlockExitStmt::exchange_convert(), BlockEntryStmt::exchange_convert(), WhileStmt::exchange_convert(), DirectiveStmt::exchange_convert(), NullifyStmt::exchange_convert(), DeallocateStmt::exchange_convert(), AllocateStmt::exchange_convert(), AssignedGotoStmt::exchange_convert(), ComputedGotoStmt::exchange_convert(), ArithmeticIfStmt::exchange_convert(), GotoStmt::exchange_convert(), LabelStmt::exchange_convert(), ReturnStmt::exchange_convert(), EntryStmt::exchange_convert(), CallStmt::exchange_convert(), FlowExitStmt::exchange_convert(), FlowEntryStmt::exchange_convert(), PauseStmt::exchange_convert(), StopStmt::exchange_convert(), IOStmt::exchange_convert(), AssignStmt::exchange_convert(), ElseStmt::exchange_convert(), EndIfStmt::exchange_convert(), ImpliedGotoStmt::exchange_convert(), ElseIfStmt::exchange_convert(), IfStmt::exchange_convert(), EndDoStmt::exchange_convert(), DoStmt::exchange_convert(), AssignmentStmt::exchange_convert(), and StmtPointer::exchange_convert().

CDGNode * Statement::cdgnode  )  [inline]
 

Definition at line 638 of file Statement.h.

References _cdgnode.

Referenced by cdg(), clear_cdg_visited(), detect_cdg_cycles(), evaluate_dag2tree(), pdt_parent(), and uncdg().

void Statement::cdgnode CDGNode n  )  [inline]
 

Definition at line 642 of file Statement.h.

References _cdgnode.


Friends And Related Function Documentation

friend class StmtList [friend]
 

Reimplemented in BlockEntryStmt, BlockExitStmt, DoStmt, ElseIfStmt, ElseStmt, EndDoStmt, EndIfStmt, IfStmt, ImpliedGotoStmt, LabelStmt, and WhileStmt.

Definition at line 238 of file Statement.h.

ostream& operator<< ostream &  o,
const Statement st
[friend]
 

This outputs the statement with all debugging info (ie-all fields!).

... delete src_line; ... delete dbg_line; ... silvius: fixed above

Definition at line 1761 of file Statement.cc.


Member Data Documentation

STMT_TYPE Statement::_type [protected]
 

Type of statement.

Definition at line 256 of file Statement.h.

Referenced by copy_base(), error(), print_fields(), and stmt_class().

List<Expression> Statement::_exprlist [protected]
 

List of the all the expressions in a statement.

Definition at line 259 of file Statement.h.

Referenced by copy_base(), iterate_all_expressions(), iterate_expressions(), iterate_in_exprs_guarded(), iterate_in_exprs_valid(), and relink_lptrs().

List<Statement> Statement::_successors_list [protected]
 

List for _successors.

Definition at line 261 of file Statement.h.

Referenced by check_common_fields().

RefSet<Statement> Statement::_successors [protected]
 

successors of control flow

Definition at line 262 of file Statement.h.

Referenced by check_common_fields(), copy_base(), fix_flow(), modify_succ(), print_fields(), and succ().

List<Statement> Statement::_predecessors_list [protected]
 

List for _predecessors.

Definition at line 263 of file Statement.h.

Referenced by check_common_fields().

RefSet<Statement> Statement::_predecessors [protected]
 

predecessors of control flow

Definition at line 264 of file Statement.h.

Referenced by check_common_fields(), copy_base(), modify_pred(), pred(), and print_fields().

List<Expression> Statement::_in_refs_list [protected]
 

List for _in_refs.

Definition at line 266 of file Statement.h.

RefSet<Expression> Statement::_in_refs [protected]
 

expressions which read memory

Definition at line 267 of file Statement.h.

Referenced by _add_in_refs(), build_refs(), copy_base(), in_out_refs_structures_OK(), in_refs(), and print_fields().

List<Expression> Statement::_out_refs_list [protected]
 

List for _out_refs.

Definition at line 268 of file Statement.h.

RefSet<Expression> Statement::_out_refs [protected]
 

expressions which write memory

Definition at line 269 of file Statement.h.

Referenced by _add_ioread_sets(), _add_out_refs(), build_refs(), copy_base(), in_out_refs_structures_OK(), out_refs(), and print_fields().

List<Expression> Statement::_act_refs_list [protected]
 

List for _act_refs.

Definition at line 270 of file Statement.h.

RefSet<Expression> Statement::_act_refs [protected]
 

all memory expressions?

Definition at line 271 of file Statement.h.

Referenced by _add_act_params(), act_refs(), build_refs(), copy_base(), in_out_refs_structures_OK(), and print_fields().

AssertionList Statement::_assertion_list [protected]
 

A list of the assertions.

Definition at line 273 of file Statement.h.

Referenced by assertions(), check_common_fields(), copy_base(), and relink_lptrs().

Statement* Statement::_outer [protected]
 

innermost enclosing do loop

Definition at line 275 of file Statement.h.

Referenced by check_common_fields(), copy_base(), outer_ref(), print_fields(), and Statement().

List<StringElem> Statement::_pre_directives [protected]
 

Statement directives.

Definition at line 277 of file Statement.h.

Referenced by check_common_fields(), copy_base(), pre_directives(), and print_fields().

List<StringElem> Statement::_post_directives [protected]
 

before & after the stmt

Definition at line 278 of file Statement.h.

Referenced by copy_base(), post_directives(), and print_fields().

String Statement::_state [protected]
 

Definition at line 280 of file Statement.h.

Referenced by copy_base(), and state().

String Statement::_tag [protected]
 

xxx _loop_info;

S10)

Definition at line 281 of file Statement.h.

Referenced by check_common_fields(), copy_base(), StmtList::del(), StmtList::retag(), StmtList::split_elseif(), tag(), and tag_defined().

int Statement::_line [protected]
 

line number

Definition at line 284 of file Statement.h.

Referenced by check_common_fields(), copy_base(), line(), print_fields(), and Statement().

WorkSpaceStack Statement::_work_stack [protected]
 

Stack of WorkSpace objects.

Definition at line 285 of file Statement.h.

Referenced by print_fields(), and work_stack().

BinRep* Statement::_overflow [protected]
 

Any overflow information.

Definition at line 286 of file Statement.h.

Referenced by copy_base(), empty_overflow(), make_overflow(), overflow(), print_fields(), Statement(), and ~Statement().

SymbolAccessMap* Statement::_access_table [protected]
 

by symbol for statement, or whole block if this is a block-type stmt, like DO

Definition at line 288 of file Statement.h.

Referenced by access_table(), access_table_exists(), copy_base(), incorporate_access_table(), ins_read_access(), ins_readwrite_access(), ins_write_access(), iter_access_table_guarded(), iter_read_guarded(), iter_readwrite_guarded(), iter_write_guarded(), print_fields(), relink_lptrs(), Statement(), symbol_access_exists(), write_access_table(), and ~Statement().

CDGNode* Statement::_cdgnode [protected]
 

Control Dependence Graph node.

Definition at line 293 of file Statement.h.

Referenced by cdgnode().

PerformanceEstimator* Statement::_perf_estimator [protected]
 

Definition at line 296 of file Statement.h.

Referenced by perf_estimator(), set_perf_estimator(), and Statement().

unsigned long Statement::_stmtProfile [protected]
 

Definition at line 297 of file Statement.h.

Referenced by profile(), set_profile(), and Statement().

ProgramUnit* Statement::_program_unit [protected]
 

Definition at line 328 of file Statement.h.

Referenced by program_unit().


The documentation for this class was generated from the following files:
 © 1995-2005 University of Illinois, Urbana-Champaign. All rights reserved.  Fri Mar 25 23:08:19 2005