EvolutionGraph.cc File Reference
Go to the source code of this file.
|
Functions |
| const char * | node_name (const Symbol *s) |
| Expression * | node_value (const Symbol *s) |
| String | loop_name (Statement *loop) |
| static void | get_imu (const Symbol &mu, ProgramUnit &pgm, Symbol *&imu, bool &is_defined) |
| | Find the incoming value for given mu symbol.
|
| static void | _add_eg (ProgramUnit *pgm, Statement *loop, EvolutionGraph *eg) |
| static void | _remove_eg (ProgramUnit *pgm, Statement *loop) |
| static void | _remove_egs (ProgramUnit *pgm) |
| void | remove_egs (ProgramUnit &pgm) |
| | Will not return the range over the whole loop, but for just an iteration.
|
| EvolutionGraph * | _get_eg (ProgramUnit *pgm, Statement *loop) |
| static void | print_evolutions (map< const Symbol *, map< const Symbol *, Evolution< Expression > > > &evs, const char *type, ostream &o) |
| static void | print_input_values (map< const Symbol *, Evolution< Expression > > &ivs, const char *type, ostream &o) |
| Expression * | _eg_forward_substitute (EvolutionGraph *eg, ProgramUnit &pgm, DoStmt *loop, Expression *expr) |
| static void | remove_source (EvolutionGraph::EvolutionMap &em, Symbol *source) |
| Evolution< Expression > | get_translated_evolution (Translator &trans, ProgramUnit &caller, ProgramUnit &callee, Statement &callsite, Evolution< Expression > &original) |
| static bool | has_known_iteration_space (DoStmt &dostmt) |
| static RangeExpr * | _range (const Evolution< Expression > &ev) |
| static Expression * | _embed_symbolic_range (Expression *range, ProgramUnit &pgm, RangeAccessor *ra, set< Symbol * > &dummies) |
| static Expression * | _filter_arrays (Expression *expr, ProgramUnit &pgm, Statement *loop, set< Symbol * > &dummies, RangeAccessor *ra) |
| | Embeds the tightest known range for array references.
|
| static Expression * | _filter_arrays (Expression *expr, ProgramUnit &pgm, Statement *loop) |
| static void | _cleanup_map (map< Symbol *, Expression * > &m) |
| static bool | included (Evolution< Expression > &ev1, Evolution< Expression > &ev2, bool complementary, ProgramUnit &pgm, RangeAccessor *ra) |
| | Returns true if ev1 is included in ev2*complementary.
|
| static bool | disjoint (Evolution< Expression > &ev1, Evolution< Expression > &ev2, bool complementary, ProgramUnit &pgm, RangeAccessor *ra) |
| | Returns true if ev1 may be disjoint from ev2*complementary.
|
| static void | print_trace (pair< list< Symbol * >, Evolution< Expression > > &trace) |
| static bool | _incompatible_ranges (const pair< RangeExpr *, bool > &range1, const pair< RangeExpr *, bool > &range2, RangeAccessor &ra) |
| | Return true only if sure.
|
| void | _print_range (const char *sname, const pair< RangeExpr *, bool > &r) |
Variables |
| static Symbol * | ZERO = 0 |
| | BEGIN local constants and simple defs.
|
static map< ProgramUnit *,
map< Statement *, EvolutionGraph * > > | _egs |
| | BEGIN EG repository management.
|
Function Documentation
| const char* node_name |
( |
const Symbol * |
s |
) |
[inline] |
|
|
|
Find the incoming value for given mu symbol.
... Formals and commons may be defined for subprograms other ... than the main one. ... silvius: We assume here that the 'remove_data_statements' filter ... was run previously.
Definition at line 52 of file EvolutionGraph.cc.
References Expression::arg_list(), ASSIGNMENT_STMT, find_main_pgm(), gsa_base(), is_defined(), mu(), Expression::parameters_guarded(), program(), Statement::rhs(), Statement::stmt_class(), DefLoc::stmt_guarded(), and DefLoc::stmt_valid().
Referenced by EvolutionGraph::_compute_cyclic_evolutions(), EvolutionGraph::_local_range(), EvolutionGraph::_possible_ranges(), EvolutionGraph::_verify_preconditions(), and EvolutionGraph::perfect_trace_from_mu(). |
|
|
Will not return the range over the whole loop, but for just an iteration.
Will only return a range if input values are the only way to generate 'e'.
Definition at line 141 of file EvolutionGraph.cc.
References _remove_egs(). |
| static void print_input_values |
( |
map< const Symbol *, Evolution< Expression > > & |
ivs, |
|
|
const char * |
type, |
|
|
ostream & |
o |
|
) |
[static] |
|
| static bool has_known_iteration_space |
( |
DoStmt & |
dostmt |
) |
[static] |
|
|
|
... Really a WHILE statement, the iteration space is unknown.
... Found no flag assignment before the loop.
Definition at line 1536 of file EvolutionGraph.cc.
References ASSIGNMENT_STMT, ID_OP, INFINITY_OP, LABEL_STMT, Statement::lhs(), Symbol::name_ref(), Expression::op(), Statement::prev_ref(), Listable::prev_ref(), Statement::stmt_class(), and Expression::symbol().
Referenced by EvolutionGraph::_compute_cyclic_evolutions(). |
|
|
Embeds the tightest known range for array references.
cerr<<"\nReturn 1";
cerr<<"\nReturn 2";
cerr<<"\nReturn 3: "<<*toret;
cerr<<"\nReturn 4";
cerr<<"\nReturn 5";
Definition at line 2391 of file EvolutionGraph.cc.
References _embed_symbolic_range(), ARRAY_REF_OP, Mutator< T >::assign(), Symbol::common_ref(), e, eg_range_array_1_to_i(), Symbol::formal(), gsa_base(), infinity(), loop(), Expression::op(), Statement::outer_ref(), Mutator< T >::pull(), RANGE_OP, RangeExpr::RangeExpr(), and Iterator< T >::valid().
Referenced by _filter_arrays(), EvolutionGraph::_global_range(), and EvolutionGraph::_global_range_per_iteration(). |
|
|
cerr<<"\nEnter filter_arrays: "<<*expr;
cerr<<"\n\tLevel 1 before subst:"<<*toret; cerr<<"\nra = "<<*ra;
... Probably some undefined operation such as ( -Inf + Inf ).
cerr<<"\nExit filter_arrays: "<<*toret;
Definition at line 2438 of file EvolutionGraph.cc.
References _filter_arrays(), Symtab::del(), RangeComparator::eliminate_vars(), RangeAccessor::get_range_ref(), infinity(), INFINITY_OP, RefSet< T >::ins(), RangeExpr::lb(), loop(), Statement::next_ref(), OMEGA_OP, Expression::op(), quick_pgm_entry(), RANGE_OP, RangeExpr::RangeExpr(), RangeComparator::symtab(), and RangeExpr::ub(). |
| void _print_range |
( |
const char * |
sname, |
|
|
const pair< RangeExpr *, bool > & |
r |
|
) |
|
|
Variable Documentation
|