6#include "llvm/IR/Function.h"
7#include "llvm/IR/Instructions.h"
18 std::map<std::pair<llvm::Function *, DataflowValue>,
Context>
20 std::map<Context, DataflowValue> Result;
21 std::map<llvm::Function *, std::vector<Context>> FunctionToContexts;
22 std::map<Context, std::vector<std::pair<Context, llvm::Instruction *>>>
26 std::map<Context, std::map<llvm::Instruction *, DataflowValue>>
getDataFlowIn,
30 DataflowValue
getBI();
32 std::vector<std::pair<Context, llvm::Instruction *>>
39 llvm::Instruction *CallSite);
40 std::vector<Context>
getContexts(llvm::Function *Func);
43template <
class DataflowValue>
50template <
class DataflowValue>
55template <
class DataflowValue>
60template <
class DataflowValue>
61std::vector<std::pair<Context, llvm::Instruction *>>
63 return ContextGraph[Src];
66template <
class DataflowValue>
69 if (this->DataFlowToContext.find(std::make_pair(Func, BI)) !=
70 this->DataFlowToContext.end()) {
71 return this->DataFlowToContext[std::make_pair(Func, BI)];
76template <
class DataflowValue>
79 DataFlowToContext[std::make_pair(Func, BI)] = this->C;
80 this->Result[this->C] = this->getTop();
82 FunctionToContexts[Func].push_back(temp);
87template <
class DataflowValue>
89 this->Result[C] = Value;
92template <
class DataflowValue>
94 return this->Result[C];
97template <
class DataflowValue>
100 this->ContextGraph[Dest].push_back(std::make_pair(Src, CallSite));
103template <
class DataflowValue>
106 return FunctionToContexts[Func];
Definition: ValueContext.h:13
int getSavedContext(llvm::Function *Func, DataflowValue BI)
Definition: ValueContext.h:67
std::map< Context, std::map< llvm::Instruction *, DataflowValue > > getDataFlowIn
Definition: ValueContext.h:26
DataflowValue getResult(Context C)
Definition: ValueContext.h:93
std::vector< Context > getContexts(llvm::Function *Func)
Definition: ValueContext.h:105
void updateContextGraph(Context Src, Context Dest, llvm::Instruction *CallSite)
Definition: ValueContext.h:98
DataflowValue getTop()
Definition: ValueContext.h:56
void setResult(Context C, DataflowValue Value)
Definition: ValueContext.h:88
DataflowValue getBI()
Definition: ValueContext.h:51
std::vector< std::pair< Context, llvm::Instruction * > > getContextChild(Context Src)
Definition: ValueContext.h:62
ValueContext(DataflowValue BI, DataflowValue Top)
Definition: ValueContext.h:44
std::map< Context, std::map< llvm::Instruction *, DataflowValue > > getDataFlowOut
Definition: ValueContext.h:27
int initializeContext(llvm::Function *Func, DataflowValue BI)
Definition: ValueContext.h:77
Definition: PointsToBenchmark.cpp:19
int Context
Definition: ValueContext.h:11