ClearBlue
SEGCallSiteArgumentSummaryNode.h
1 /*
2  * SEGCallSiteArgumentSummaryNode.h
3  *
4  * This node is to model a summary node passed to a callee.
5  *
6  * Created on: 2016.10.19
7  * Author: andyzhou
8  */
9 
10 #ifndef LIB_IR_SEG_SEGCALLSITEARGUMENTSUMMARYNODE_H
11 #define LIB_IR_SEG_SEGCALLSITEARGUMENTSUMMARYNODE_H
12 
13 #include "IR/SEG/SymbolicExprGraph.h"
14 #include "Persistence/PersistenceBasis.h"
15 
16 using namespace llvm;
17 
19 public:
22  SEGCallSiteArgumentSummaryNode(PersistedSEGCallSiteArgumentSummaryNode *Node,
23  SymbolicExprGraph *SEG);
24 
25  virtual void assembleSEGObject(std::map<int, SEGObject *> &FuncSEGObjMap) {
26  SEGOperandNode::assembleSEGObject(FuncSEGObjMap);
27  }
28 
29 private:
30  WrappedInstruction *WrappedCallsite = nullptr;
31  Instruction *Callsite = nullptr;
32  int APDepth;
34  BasicBlock *BB, Instruction *Callsite,
35  int APDepth);
36 
37 public:
39 
40  virtual PersistedSEGObject *createPersistedObject() const;
41 
42 public:
43  static bool classof(const SEGObject *N) {
44  return N->getKind() == SEGOBJK_CallSiteSummaryArgument;
45  }
46 
47  int getAPDepth() const { return APDepth; }
48 
49  Instruction *getCallSite() const { return Callsite; }
50 
51  WrappedInstruction *getWrappedCallSite() const { return WrappedCallsite; }
52 
53  friend class SymbolicExprGraph;
54 };
55 
56 #endif /* LIB_IR_SEG_SEGCALLSITEARGUMENTSUMMARYNODE_H */
SEGOperandNode
Definition: SymbolicExprGraph.h:539
SEGCallSiteArgumentSummaryNode
Definition: SEGCallSiteArgumentSummaryNode.h:18
SEGCallSiteArgumentSummaryNode::assembleSEGObject
virtual void assembleSEGObject(std::map< int, SEGObject * > &FuncSEGObjMap)
Assemble the SEG object's related objects.
Definition: SEGCallSiteArgumentSummaryNode.h:25
SymbolicExprGraph
Definition: SymbolicExprGraph.h:855
SEGObject
Definition: SymbolicExprGraph.h:87
SEGOperandNode::assembleSEGObject
virtual void assembleSEGObject(std::map< int, SEGObject * > &FuncSEGObjMap)
Assemble the SEG object's related objects.
Definition: SymbolicExprGraph.h:545