9 #ifndef IR_SEG_SEGCALLSITEOUTPUTNODE_H
10 #define IR_SEG_SEGCALLSITEOUTPUTNODE_H
12 #include <llvm/IR/BasicBlock.h>
14 #include "CBAccessPath.h"
15 #include "IR/SEG/SymbolicExprGraph.h"
16 #include "Persistence/PersistenceBasis.h"
27 virtual void assembleSEGObject(std::map<int, SEGObject *> &FuncSEGObjMap);
43 virtual Instruction *getLLVMDbgInstruction()
const override;
45 const SEGCallSite *getCallSite()
const {
return SEGCS; }
47 virtual size_t getIndex()
const = 0;
49 virtual std::string getSrcFile()
const;
51 virtual std::int32_t getSrcLine()
const;
55 return N->getKind() >= SEGOBJK_CallSiteOutputBegin &&
56 N->getKind() <= SEGOBJK_CallSiteOutputEnd;
83 virtual PersistedSEGObject *createPersistedObject()
const;
85 virtual size_t getIndex()
const {
92 return N->getKind() == SEGOBJK_CallSiteCommonOutput;
120 Function *Callee =
nullptr;
122 WrappedFunction *WrappedCallee =
nullptr;
130 virtual PersistedSEGObject *createPersistedObject()
const;
132 virtual size_t getIndex()
const {
return Index; }
134 const CBAccessPath &getAccessPath()
const {
return AP; }
138 Function *getCallee()
const {
return Callee; }
140 WrappedFunction *getWrappedCallee()
const {
return WrappedCallee; }
143 static bool classof(
const SEGObject *N) {
144 return N->getKind() == SEGOBJK_CallSitePseudoOutput;