docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
reference_analysis.h
Go to the documentation of this file.
1#pragma once
2
3#include <unordered_map>
4#include <unordered_set>
5
10
11namespace sdfg {
12namespace analysis {
13
15 friend class AnalysisManager;
16
17private:
19 std::unordered_map<std::string, std::unordered_map<User*, std::unordered_set<User*>>> results_;
20
21public:
23
24 std::string name() const override {
25 return "ReferenceAnalysis";
26 }
27
28 void run(analysis::AnalysisManager& analysis_manager) override;
29
30 /****** Visitor API ******/
31
35 std::unordered_set<User*>& undefined,
36 std::unordered_map<User*, std::unordered_set<User*>>& open_definitions,
37 std::unordered_map<User*, std::unordered_set<User*>>& closed_definitions
38 );
39
40
44 std::unordered_set<User*>& undefined,
45 std::unordered_map<User*, std::unordered_set<User*>>& open_definitions,
46 std::unordered_map<User*, std::unordered_set<User*>>& closed_definitions
47 );
48
52 std::unordered_set<User*>& undefined,
53 std::unordered_map<User*, std::unordered_set<User*>>& open_definitions,
54 std::unordered_map<User*, std::unordered_set<User*>>& closed_definitions
55 );
56
60 std::unordered_set<User*>& undefined,
61 std::unordered_map<User*, std::unordered_set<User*>>& open_definitions,
62 std::unordered_map<User*, std::unordered_set<User*>>& closed_definitions
63 );
64
68 std::unordered_set<User*>& undefined,
69 std::unordered_map<User*, std::unordered_set<User*>>& open_definitions,
70 std::unordered_map<User*, std::unordered_set<User*>>& closed_definitions
71 );
72
75 structured_control_flow::Return& return_statement,
76 std::unordered_set<User*>& undefined,
77 std::unordered_map<User*, std::unordered_set<User*>>& open_definitions,
78 std::unordered_map<User*, std::unordered_set<User*>>& closed_definitions
79 );
80
81 std::unordered_set<User*> defines(User& move);
82
83 std::unordered_map<User*, std::unordered_set<User*>> definitions(const std::string& container);
84
85 std::unordered_map<User*, std::unordered_set<User*>> defined_by(const std::string& container);
86
87 std::unordered_set<User*> defined_by(User& user);
88};
89
90} // namespace analysis
91} // namespace sdfg
Definition structured_sdfg.h:30
Definition analysis.h:53
Analysis(StructuredSDFG &sdfg)
std::unordered_set< User * > defined_by(User &user)
ReferenceAnalysis(StructuredSDFG &sdfg)
void run(analysis::AnalysisManager &analysis_manager) override
void visit_block(analysis::Users &users, structured_control_flow::Block &block, std::unordered_set< User * > &undefined, std::unordered_map< User *, std::unordered_set< User * > > &open_definitions, std::unordered_map< User *, std::unordered_set< User * > > &closed_definitions)
void visit_return(analysis::Users &users, structured_control_flow::Return &return_statement, std::unordered_set< User * > &undefined, std::unordered_map< User *, std::unordered_set< User * > > &open_definitions, std::unordered_map< User *, std::unordered_set< User * > > &closed_definitions)
void visit_if_else(analysis::Users &users, structured_control_flow::IfElse &if_loop, std::unordered_set< User * > &undefined, std::unordered_map< User *, std::unordered_set< User * > > &open_definitions, std::unordered_map< User *, std::unordered_set< User * > > &closed_definitions)
std::string name() const override
Definition reference_analysis.h:24
void visit_sequence(analysis::Users &users, structured_control_flow::Sequence &sequence, std::unordered_set< User * > &undefined, std::unordered_map< User *, std::unordered_set< User * > > &open_definitions, std::unordered_map< User *, std::unordered_set< User * > > &closed_definitions)
void visit_for(analysis::Users &users, structured_control_flow::StructuredLoop &for_loop, std::unordered_set< User * > &undefined, std::unordered_map< User *, std::unordered_set< User * > > &open_definitions, std::unordered_map< User *, std::unordered_set< User * > > &closed_definitions)
void visit_while(analysis::Users &users, structured_control_flow::While &while_loop, std::unordered_set< User * > &undefined, std::unordered_map< User *, std::unordered_set< User * > > &open_definitions, std::unordered_map< User *, std::unordered_set< User * > > &closed_definitions)
std::unordered_map< User *, std::unordered_set< User * > > definitions(const std::string &container)
std::unordered_set< User * > defines(User &move)
std::unordered_map< User *, std::unordered_set< User * > > defined_by(const std::string &container)
friend class AnalysisManager
Definition reference_analysis.h:15
A control flow node representing a basic block with dataflow computations.
Definition block.h:42
Represents a conditional if-else control flow node with multiple cases.
Definition if_else.h:47
Represents a return statement that exits the function with a value.
Definition return.h:32
A sequential container of control flow nodes.
Definition sequence.h:52
Base class for structured loop constructs.
Definition structured_loop.h:244
Represents a while-loop with condition-controlled iteration.
Definition while.h:37
Definition user.h:28
Definition users.h:19
Definition analysis.h:8
Definition base_user_visitor.h:5
Definition analysis.h:7