#include <SlicedGraphs.h>
Definition at line 185 of file SlicedGraphs.h.
◆ SlicedThreadCallGraphView()
Definition at line 597 of file SlicedGraphs.cpp.
601{
603 {
605 }
608
609
611}
void buildCallGraphSets()
Set< const FunObjVar * > keptFunctionsSet
OrderedSet< const ICFGNode * > extendedKeptNodes
llvm::IRBuilder IRBuilder
◆ buildCallGraphSets()
| void SVF::SlicedThreadCallGraphView::buildCallGraphSets |
( |
| ) |
|
|
private |
Definition at line 657 of file SlicedGraphs.cpp.
658{
659
662
663
665 {
667 {
670 {
671 continue;
672 }
673
677 if (!directCalls.empty())
678 {
680 }
681 else if (!indirectCalls.empty())
682 {
684 }
685
687 {
688
689 continue;
690 }
691
692
695 {
699 {
701 {
703 break;
704 }
705 }
707 {
709 }
710 }
711
713 }
714 }
715}
Set< const CallICFGNode * > CallInstSet
bool hasIndCSCallees(const CallICFGNode *cs) const
const FunctionSet & getIndCSCallees(const CallICFGNode *cs) const
Set< const FunObjVar * > FunctionSet
OrderedSet< const CallGraphNode * > keptNodes
CallGraph::CallGraphEdgeSet keptEdges
Set< const CallICFGNode * > indirectSitesWithEmptyTargets
◆ buildKeptNodes()
| void SVF::SlicedThreadCallGraphView::buildKeptNodes |
( |
| ) |
|
|
private |
Definition at line 613 of file SlicedGraphs.cpp.
614{
616 {
619 {
621 }
622 }
623}
const FunObjVar * getFunction() const
Get function of this call node.
iterator begin()
Iterators.
IDToNodeMapTy::iterator iterator
Node Iterators.
◆ dump()
| void SVF::SlicedThreadCallGraphView::dump |
( |
const std::string & |
filename | ) |
const |
Dump sliced ThreadCallGraph to dot file.
Definition at line 717 of file SlicedGraphs.cpp.
718{
719
720
722}
static void WriteGraphToFile(SVF::OutStream &O, const std::string &GraphName, const GraphType >, bool simple=false)
std::ostream & outs()
Overwrite llvm::outs()
◆ getIndirectSitesWithEmptyTargets()
Indirect call sites that lost all targets after filtering.
Definition at line 226 of file SlicedGraphs.h.
◆ getInEdgesOf()
Get in edges of a node (only returns kept edges and source nodes)
Definition at line 639 of file SlicedGraphs.cpp.
640{
643 {
644 return;
645 }
648 for (
auto it = GT::child_edge_begin(
n), e = GT::child_edge_end(
n); it != e; ++it)
649 out.push_back((*it).underlying);
650}
bool isKeptNode(const CallGraphNode *node) const
Check if a node is in the sliced view.
◆ getKeptEdges()
◆ getKeptFunctions()
◆ getKeptNodes()
◆ getOriginalCallGraph()
| CallGraph * SVF::SlicedThreadCallGraphView::getOriginalCallGraph |
( |
| ) |
const |
|
inline |
◆ getOriginalThreadCallGraph()
| ThreadCallGraph * SVF::SlicedThreadCallGraphView::getOriginalThreadCallGraph |
( |
| ) |
const |
|
inline |
◆ getOutEdgesOf()
Get out edges of a node (only returns kept edges and target nodes)
Definition at line 625 of file SlicedGraphs.cpp.
626{
629 {
630 return;
631 }
632
635 for (
auto it = GT::child_edge_begin(
n), e = GT::child_edge_end(
n); it != e; ++it)
636 out.push_back((*it).underlying);
637}
◆ isKeptEdge()
Canonical edge membership: keptEdges excludes edges whose call site was pruned, so endpoint checks alone are not enough (queries/traits use this).
Definition at line 220 of file SlicedGraphs.h.
◆ isKeptNode()
◆ extendedKeptNodes
◆ indirectSitesWithEmptyTargets
◆ keptEdges
◆ keptFunctionsSet
◆ keptNodes
◆ tcg
The documentation for this class was generated from the following files: