OpenADFortTk (including Open64 and OpenAnalysis references)
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
ManagerICFGUseful.hpp
Go to the documentation of this file.
1
16
#ifndef ManagerICFGUseful_H
17
#define ManagerICFGUseful_H
18
19
//--------------------------------------------------------------------
20
#include <cassert>
21
22
// OpenAnalysis headers
23
#include <
OpenAnalysis/Alias/InterAliasInterface.hpp
>
24
#include <
OpenAnalysis/SideEffect/InterSideEffectInterface.hpp
>
25
#include <
OpenAnalysis/IRInterface/ActivityIRInterface.hpp
>
26
27
//??? needed???
28
//#include <OpenAnalysis/ExprTree/DifferentiableLocsVisitor.hpp>
29
//#include <OpenAnalysis/ExprTree/EvalToMemRefVisitor.hpp>
30
//#include <OpenAnalysis/DataFlow/CalleeToCallerVisitor.hpp>
31
32
// MMA ??
33
//#include <OpenAnalysis/Activity/CalleeToCallerMayTransVisitor.hpp>
34
35
#include <
OpenAnalysis/DataFlow/ICFGDFProblem.hpp
>
36
#include <
OpenAnalysis/DataFlow/ICFGDFSolver.hpp
>
37
#include <
OpenAnalysis/DataFlow/ParamBindings.hpp
>
38
#include <
OpenAnalysis/DataFlow/LocDFSet.hpp
>
39
#include <
OpenAnalysis/Activity/InterUseful.hpp
>
40
#include <
OpenAnalysis/Activity/ICFGDep.hpp
>
41
42
#include "
ManagerUsefulStandard.hpp
"
43
44
namespace
OA {
45
namespace
Activity {
46
51
class
ManagerICFGUseful
:
public
virtual
DataFlow::ICFGDFProblem
52
{
53
public
:
54
ManagerICFGUseful
(
OA_ptr<ActivityIRInterface>
_ir);
55
~ManagerICFGUseful
() {}
56
57
OA_ptr<InterUseful>
58
performAnalysis
(
OA_ptr<ICFG::ICFGInterface>
icfg,
59
OA_ptr<DataFlow::ParamBindings>
paramBind,
60
OA_ptr<Alias::InterAliasInterface>
interAlias,
61
OA_ptr<SideEffect::InterSideEffectInterface>
interSE,
62
OA_ptr<ICFGDep>
icfgDep,
63
DataFlow::DFPImplement
algorithm);
64
65
private
:
66
//========================================================
67
// implementation of ICFGDFProblem interface
68
//========================================================
69
//--------------------------------------------------------
70
// initialization callbacks
71
//--------------------------------------------------------
72
74
OA_ptr<DataFlow::DataFlowSet>
initializeTop
();
75
77
OA_ptr<DataFlow::DataFlowSet>
78
initializeNodeIN
(
OA_ptr<ICFG::NodeInterface>
n
);
79
OA_ptr<DataFlow::DataFlowSet>
80
initializeNodeOUT
(
OA_ptr<ICFG::NodeInterface>
n
);
81
82
//--------------------------------------------------------
83
// solver callbacks
84
//--------------------------------------------------------
85
88
OA_ptr<DataFlow::DataFlowSet>
meet
(
OA_ptr<DataFlow::DataFlowSet>
set1,
89
OA_ptr<DataFlow::DataFlowSet>
set2);
90
93
OA_ptr<DataFlow::DataFlowSet>
94
transfer
(
ProcHandle
proc,
OA_ptr<DataFlow::DataFlowSet>
in,
95
OA::StmtHandle
stmt);
96
100
OA_ptr<DataFlow::DataFlowSet>
101
entryTransfer
(
ProcHandle
proc,
OA_ptr<DataFlow::DataFlowSet>
in);
102
106
OA_ptr<DataFlow::DataFlowSet>
107
exitTransfer
(
ProcHandle
proc,
OA_ptr<DataFlow::DataFlowSet>
out);
108
110
OA_ptr<DataFlow::DataFlowSet>
callerToCallee
(
ProcHandle
caller,
111
OA_ptr<DataFlow::DataFlowSet>
dfset,
CallHandle
call,
ProcHandle
callee);
112
114
OA_ptr<DataFlow::DataFlowSet>
calleeToCaller
(
ProcHandle
callee,
115
OA_ptr<DataFlow::DataFlowSet>
dfset,
CallHandle
call,
ProcHandle
caller);
116
118
OA_ptr<DataFlow::DataFlowSet>
callToReturn
(
ProcHandle
caller,
119
OA_ptr<DataFlow::DataFlowSet>
dfset,
CallHandle
call,
ProcHandle
callee);
120
121
private
:
122
OA_ptr<InterUseful>
mInterUseful
;
123
OA_ptr<ActivityIRInterface>
mIR
;
124
OA_ptr<DataFlow::ParamBindings>
mParamBind
;
125
OA_ptr<ICFGDep>
mICFGDep
;
126
OA_ptr<Alias::InterAliasInterface>
mInterAlias
;
127
OA_ptr<DataFlow::ICFGDFSolver>
mSolver
;
128
OA_ptr<ICFG::ICFGInterface>
mICFG
;
129
130
// FIXME ??
131
// mInterSE is no longer used in this analysis
132
// (used to be sent to CalleeToCallerMayTransVisitor() constructor)
133
OA_ptr<SideEffect::InterSideEffectInterface>
mInterSE
;
134
135
std::map<ProcHandle,OA_ptr<UsefulStandard> >
mUsefulMap
;
136
137
};
138
139
}
// end of Activity namespace
140
}
// end of OA namespace
141
142
#endif
OpenAnalysis
src
OpenAnalysis
Activity
ManagerICFGUseful.hpp
Generated on Fri Mar 14 2014 04:23:06 for OpenADFortTk (including Open64 and OpenAnalysis references) by
1.8.4