9 #ifndef IR_SEG_SEGRETURNNODE_H
10 #define IR_SEG_SEGRETURNNODE_H
12 #include <llvm/IR/BasicBlock.h>
14 #include <unordered_map>
15 #include <unordered_set>
17 #include "CBAccessPath.h"
18 #include "IR/SEG/SymbolicExprGraph.h"
26 friend class SEGSerializer;
30 std::unordered_set<SEGReturnSite *> RetInsts;
31 std::unordered_map<const SEGNodeBase *, SEGReturnSite *> RetNodeSiteMap;
36 BasicBlock *BB,
bool fromDisk);
47 virtual int64_t getIndex()
const = 0;
51 return O->getKind() >= SEGOBJK_ReturnBegin &&
52 O->getKind() <= SEGOBJK_ReturnEnd;
65 virtual int64_t getIndex()
const {
72 return O->getKind() == SEGOBJK_CommonReturn;
84 BasicBlock *BB,
bool fromDisk);
87 friend class SEGSerializer;
90 virtual int64_t getIndex()
const {
return Index; }
98 return O->getKind() == SEGOBJK_PseudoReturn;