docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::analysis::Users Class Reference

#include <sdfg/users/users.h>

Inheritance diagram for sdfg::analysis::Users:
[legend]

Public Member Functions

 Users (StructuredSDFG &sdfg)
 Users (StructuredSDFG &sdfg, structured_control_flow::ControlFlowNode &node)
std::string name () const override
void run (analysis::AnalysisManager &analysis_manager) override
bool has_user (const std::string &container, Element *element, Use use, bool is_init=false, bool is_condition=false, bool is_update=false)
User * get_user (const std::string &container, Element *element, Use use, bool is_init=false, bool is_condition=false, bool is_update=false)
std::vector< User * > uses () const
std::vector< User * > uses (const std::string &container) const
size_t num_uses (const std::string &container) const
std::vector< User * > writes () const
const std::vector< User * > & writes (const std::string &container) const
size_t num_writes (const std::string &container) const
std::vector< User * > reads () const
const std::vector< User * > & reads (const std::string &container) const
size_t num_reads (const std::string &container) const
std::vector< User * > views () const
const std::vector< User * > & views (const std::string &container) const
size_t num_views (const std::string &container) const
std::vector< User * > moves () const
const std::vector< User * > & moves (const std::string &container) const
size_t num_moves (const std::string &container) const
std::unordered_set< std::string > locals (structured_control_flow::ControlFlowNode &node)
const std::unordered_set< User * > all_uses_between (User &user1, User &user2)
const std::unordered_set< User * > all_uses_after (User &user)
const std::vector< std::string > all_containers_in_order ()
bool dominates (User &user1, User &user2)
 Strict dominance between two users, derived from.
bool post_dominates (User &user1, User &user2)
 Strict post-dominance between two users, derived from the structured control flow.
Public Member Functions inherited from sdfg::analysis::Analysis
 Analysis (StructuredSDFG &sdfg)
 Analysis (StructuredSDFG &sdfg, const Options &options)
virtual ~Analysis ()=default
virtual bool invalidate (structured_control_flow::ControlFlowNode &changed)
 Updates the analysis after a change confined to the subtree of changed.
 Analysis (const Analysis &a)=delete
Analysis & operator= (const Analysis &)=delete

Static Public Member Functions

static structured_control_flow::ControlFlowNode * scope (User *user)

Friends

class analysis::AnalysisManager
class UsersView

Additional Inherited Members

Protected Types inherited from sdfg::users::LegacyUserVisitor
enum class  LoopPart { None , Init , Condition , Update }
Protected Member Functions inherited from sdfg::analysis::Analysis
template<class T>
T option (const OptionKey< T > &key, T fallback=T{}) const
void traverse (structured_control_flow::ControlFlowNode &node)
 Visits node and all of its children.
bool visit (structured_control_flow::Block &node) override
bool visit (structured_control_flow::AssignmentBlock &node) override
bool visit (structured_control_flow::Sequence &node) override
bool visit (structured_control_flow::Return &node) override
bool visit (structured_control_flow::IfElse &node) override
bool handleStructuredLoop (structured_control_flow::StructuredLoop &loop) override
bool visit (structured_control_flow::While &node) override
bool visit (structured_control_flow::Continue &node) override
bool visit (structured_control_flow::Break &node) override
bool visit (sdfg::structured_control_flow::ControlFlowNode &node)
virtual bool visit (sdfg::structured_control_flow::For &node)
virtual bool visit (sdfg::structured_control_flow::Map &node)
virtual bool visit (sdfg::structured_control_flow::Reduce &node)
Protected Member Functions inherited from sdfg::visitor::ActualStructuredSDFGVisitor
 ActualStructuredSDFGVisitor ()
virtual ~ActualStructuredSDFGVisitor ()=default
bool visit (sdfg::structured_control_flow::ControlFlowNode &node)
bool dispatch (sdfg::structured_control_flow::ControlFlowNode &node)
Protected Attributes inherited from sdfg::analysis::Analysis
StructuredSDFG & sdfg_
symbolic::Assumptions additional_assumptions_
const Options * options_ = &Options::empty()

Constructor & Destructor Documentation

◆ Users() [1/2]

◆ Users() [2/2]

Member Function Documentation

◆ all_containers_in_order()

const std::vector< std::string > sdfg::users::Users::all_containers_in_order ( )

◆ all_uses_after()

const std::unordered_set< User * > sdfg::users::Users::all_uses_after ( User & user)

◆ all_uses_between()

const std::unordered_set< User * > sdfg::users::Users::all_uses_between ( User & user1,
User & user2 )

◆ dominates()

bool sdfg::users::Users::dominates ( User & user1,
User & user2 )

Strict dominance between two users, derived from.

◆ get_user()

User * sdfg::users::Users::get_user ( const std::string & container,
Element * element,
Use use,
bool is_init = false,
bool is_condition = false,
bool is_update = false )

◆ has_user()

bool sdfg::users::Users::has_user ( const std::string & container,
Element * element,
Use use,
bool is_init = false,
bool is_condition = false,
bool is_update = false )

◆ locals()

std::unordered_set< std::string > sdfg::users::Users::locals ( structured_control_flow::ControlFlowNode & node)

◆ moves() [1/2]

std::vector< User * > sdfg::users::Users::moves ( ) const

◆ moves() [2/2]

const std::vector< User * > & sdfg::users::Users::moves ( const std::string & container) const

◆ name()

std::string sdfg::users::Users::name ( ) const
inlineoverridevirtual

◆ num_moves()

size_t sdfg::users::Users::num_moves ( const std::string & container) const

◆ num_reads()

size_t sdfg::users::Users::num_reads ( const std::string & container) const

◆ num_uses()

size_t sdfg::users::Users::num_uses ( const std::string & container) const

◆ num_views()

size_t sdfg::users::Users::num_views ( const std::string & container) const

◆ num_writes()

size_t sdfg::users::Users::num_writes ( const std::string & container) const

◆ post_dominates()

bool sdfg::users::Users::post_dominates ( User & user1,
User & user2 )

Strict post-dominance between two users, derived from the structured control flow.

◆ reads() [1/2]

std::vector< User * > sdfg::users::Users::reads ( ) const

◆ reads() [2/2]

const std::vector< User * > & sdfg::users::Users::reads ( const std::string & container) const

◆ run()

void sdfg::users::Users::run ( analysis::AnalysisManager & analysis_manager)
overridevirtual

◆ scope()

◆ uses() [1/2]

std::vector< User * > sdfg::users::Users::uses ( ) const

◆ uses() [2/2]

std::vector< User * > sdfg::users::Users::uses ( const std::string & container) const

◆ views() [1/2]

std::vector< User * > sdfg::users::Users::views ( ) const

◆ views() [2/2]

const std::vector< User * > & sdfg::users::Users::views ( const std::string & container) const

◆ writes() [1/2]

std::vector< User * > sdfg::users::Users::writes ( ) const

◆ writes() [2/2]

const std::vector< User * > & sdfg::users::Users::writes ( const std::string & container) const

◆ analysis::AnalysisManager

friend class analysis::AnalysisManager
friend

◆ UsersView

friend class UsersView
friend

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