|
| | LoopAnalysis (StructuredSDFG &sdfg) |
| std::string | name () const override |
| void | run (analysis::AnalysisManager &analysis_manager) override |
| bool | invalidate (structured_control_flow::ControlFlowNode &changed) override |
| | Updates the nest of the outermost loop around changed, the only nest whose infos depend on it, and keeps the others.
|
| const std::vector< structured_control_flow::ControlFlowNode * > | loops () const |
| | Currently guaranteed to be in Pre-Order.
|
| const std::vector< structured_control_flow::ControlFlowNode * > & | loops_in_pre_order () const |
| | Loops in Pre-order.
|
| const std::unordered_map< structured_control_flow::ControlFlowNode *, structured_control_flow::ControlFlowNode * > & | loop_tree () const |
| | Tree of parents of nodes.
|
| LoopInfo | loop_info (structured_control_flow::ControlFlowNode *loop) const |
| const LocalLoopInfo & | loop_info_local (structured_control_flow::ControlFlowNode *loop) const |
| structured_control_flow::ControlFlowNode * | find_loop_by_indvar (const std::string &indvar) |
| structured_control_flow::ControlFlowNode * | parent_loop (structured_control_flow::ControlFlowNode *loop) const |
| const std::vector< structured_control_flow::ControlFlowNode * > & | outermost_loops () const |
| bool | is_outermost_loop (structured_control_flow::ControlFlowNode *loop) const |
| const std::vector< structured_control_flow::ControlFlowNode * > | outermost_maps () const |
| const std::vector< sdfg::structured_control_flow::ControlFlowNode * > & | children (sdfg::structured_control_flow::ControlFlowNode *node) const |
| std::list< std::vector< sdfg::structured_control_flow::ControlFlowNode * > > | loop_tree_paths (sdfg::structured_control_flow::ControlFlowNode *loop) const |
| std::unordered_set< sdfg::structured_control_flow::ControlFlowNode * > | descendants (sdfg::structured_control_flow::ControlFlowNode *loop) const |
| std::unordered_set< sdfg::structured_control_flow::ControlFlowNode * > | ancestors (sdfg::structured_control_flow::ControlFlowNode *loop) const |
| std::vector< sdfg::structured_control_flow::ControlFlowNode * >::const_iterator | get_loop_iterator (structured_control_flow::ControlFlowNode *loop) |
| std::vector< sdfg::structured_control_flow::ControlFlowNode * >::const_iterator | get_subtree_end (structured_control_flow::ControlFlowNode *loop) |
| | For a given loop, return the end-iterator of its subtree (the iterator after the last descendant loop) This is essentially an iterator on the loops_in_pre_order() list.
|
| void | dump_to_file (std::filesystem::path file) const |
| void | copied_loop (structured_control_flow::ControlFlowNode *existing_loop, structured_control_flow::ControlFlowNode *new_parent_loop, structured_control_flow::ControlFlowNode *new_loop, bool start_not_end=false) |
| void | moved_loop (structured_control_flow::ControlFlowNode *existing_loop, structured_control_flow::StructuredLoop *new_parent, bool start_not_end=false) |
| void | removed_loop (structured_control_flow::ControlFlowNode *existing_loop) |
| void | added_local_contents (structured_control_flow::ControlFlowNode *loop, bool side_effects, bool non_perfectly_nested) |
| | Analysis (StructuredSDFG &sdfg) |
| | Analysis (StructuredSDFG &sdfg, const Options &options) |
| virtual | ~Analysis ()=default |
| | Analysis (const Analysis &a)=delete |
| Analysis & | operator= (const Analysis &)=delete |
Updates the nest of the outermost loop around changed, the only nest whose infos depend on it, and keeps the others.
A change outside of every loop that contains no loop leaves all as they are. Returns false, to be run again, for a change of the outermost loops themselves: a new one, or a change containing loops outside of all.
Reimplemented from sdfg::analysis::Analysis.