svf-tools 1.0.574 → 1.0.576

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +4 -4
  3. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/html/CSC_8h_source.html +1 -1
  5. package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
  6. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +4 -4
  8. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +3 -3
  10. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
  12. package/SVF-doxygen/html/html/MHP_8cpp_source.html +3 -3
  13. package/SVF-doxygen/html/html/MHP_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +3 -3
  15. package/SVF-doxygen/html/html/PCG_8cpp_source.html +3 -3
  16. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
  17. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +3 -3
  19. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  20. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +3 -3
  21. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +4 -4
  22. package/SVF-doxygen/html/html/TCT_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/TCT_8h_source.html +3 -3
  24. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  25. package/SVF-doxygen/html/html/WPASolver_8h_source.html +4 -4
  26. package/SVF-doxygen/html/html/WorkList_8h_source.html +31 -25
  27. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
  28. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +4 -4
  29. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
  30. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +1 -1
  31. package/SVF-doxygen/html/html/classSVF_1_1FIFOWorkList-members.html +5 -2
  32. package/SVF-doxygen/html/html/classSVF_1_1FIFOWorkList.html +122 -24
  33. package/SVF-doxygen/html/html/classSVF_1_1FILOWorkList-members.html +4 -1
  34. package/SVF-doxygen/html/html/classSVF_1_1FILOWorkList.html +122 -24
  35. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +7 -7
  36. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +4 -4
  37. package/SVF-doxygen/html/html/classSVF_1_1List.html +3 -4
  38. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +10 -10
  39. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +9 -9
  40. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  41. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
  42. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  43. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  44. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +4 -4
  45. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +15 -15
  46. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
  47. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +4 -4
  48. package/SVF-doxygen/html/html/functions_d.html +4 -0
  49. package/SVF-doxygen/html/html/functions_func_s.html +8 -6
  50. package/SVF-doxygen/html/html/functions_s.html +11 -9
  51. package/SVF-doxygen/html/html/functions_type_d.html +2 -0
  52. package/SVF-doxygen/html/html/functions_vars_d.html +2 -0
  53. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  54. package/SVF-doxygen/html/html/search/all_4.js +2 -2
  55. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  56. package/SVF-doxygen/html/html/search/typedefs_3.js +1 -1
  57. package/SVF-doxygen/html/html/search/variables_4.js +1 -1
  58. package/SVF-doxygen/html/html/svf-ex_8cpp.html +6 -6
  59. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  60. package/include/Util/WorkList.h +72 -36
  61. package/lib/Util/ExtAPI.cpp +1 -1
  62. package/package.json +1 -1
@@ -4,7 +4,7 @@ var searchData=
4
4
  ['dandersen',['DAndersen',['../SVFBasicTypes_8h.html#adbfc4364261f019dc6cf33234a5177d2',1,'SVFBasicTypes.h']]],
5
5
  ['data',['data',['../classSVF_1_1List_1_1ListNode.html#a4a9cb4ae17156d6d80d2357e06231e12',1,'SVF::List::ListNode']]],
6
6
  ['data_5flist',['data_list',['../classSVF_1_1CFLFIFOWorkList.html#a5a5caa556bf8023b4b0b525179efd1b0',1,'SVF::CFLFIFOWorkList::data_list()'],['../classSVF_1_1FIFOWorkList.html#a270dad3fd1d95418e4af102b64fcc883',1,'SVF::FIFOWorkList::data_list()'],['../classSVF_1_1FILOWorkList.html#aeda28a2200d763279027642c8cf6a4bf',1,'SVF::FILOWorkList::data_list()']]],
7
- ['data_5fset',['data_set',['../classSVF_1_1CFLFIFOWorkList.html#a62ef55a46552652e20f8e3bfc2b72bd0',1,'SVF::CFLFIFOWorkList']]],
7
+ ['data_5fset',['data_set',['../classSVF_1_1CFLFIFOWorkList.html#a62ef55a46552652e20f8e3bfc2b72bd0',1,'SVF::CFLFIFOWorkList::data_set()'],['../classSVF_1_1FIFOWorkList.html#a5e9648954a2f6902dc4106cc17a7d1e6',1,'SVF::FIFOWorkList::data_set()'],['../classSVF_1_1FILOWorkList.html#a46092b75425becfe97fdf047206c736b',1,'SVF::FILOWorkList::data_set()']]],
8
8
  ['datadeque',['DataDeque',['../classSVF_1_1CFLFIFOWorkList.html#aa2ac3edad97017817899d081dc6f1df7',1,'SVF::CFLFIFOWorkList::DataDeque()'],['../classSVF_1_1FIFOWorkList.html#a2907cd4515b2072aae0a88e972e93fc4',1,'SVF::FIFOWorkList::DataDeque()']]],
9
9
  ['dataflow',['DataFlow',['../classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848acb817cbf655c365c02af3675588f06cc',1,'SVF::PTData']]],
10
10
  ['dataflowutil_2ecpp',['DataFlowUtil.cpp',['../DataFlowUtil_8cpp.html',1,'']]],
@@ -12,7 +12,7 @@ var searchData=
12
12
  ['dataiter',['DataIter',['../classSVF_1_1MutableIncDFPTData.html#a1fc4dff28f9044234fdfeede6f4b1cb0',1,'SVF::MutableIncDFPTData']]],
13
13
  ['datalayout',['DataLayout',['../namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c',1,'SVF']]],
14
14
  ['dataop',['DataOp',['../classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c',1,'SVF::PersistentPointsToCache']]],
15
- ['dataset',['DataSet',['../classSVF_1_1CFLFIFOWorkList.html#a0db15ca0ec5a14aee493ccfe54d34d85',1,'SVF::CFLFIFOWorkList::DataSet()'],['../classSVF_1_1List.html#a8f8a9dff1d1213a747f0d7ce8b1802e9',1,'SVF::List::DataSet()']]],
15
+ ['dataset',['DataSet',['../classSVF_1_1CFLFIFOWorkList.html#a0db15ca0ec5a14aee493ccfe54d34d85',1,'SVF::CFLFIFOWorkList::DataSet()'],['../classSVF_1_1List.html#a8f8a9dff1d1213a747f0d7ce8b1802e9',1,'SVF::List::DataSet()'],['../classSVF_1_1FIFOWorkList.html#a4803dc3b7f3ab57261261acb20551579',1,'SVF::FIFOWorkList::DataSet()'],['../classSVF_1_1FILOWorkList.html#abe04c596453280fe15cadde868ded798',1,'SVF::FILOWorkList::DataSet()']]],
16
16
  ['datavector',['DataVector',['../classSVF_1_1FILOWorkList.html#a41d3d71633adc6a1282922b4e4929a7f',1,'SVF::FILOWorkList']]],
17
17
  ['dbout',['DBOUT',['../SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0',1,'SVFBasicTypes.h']]],
18
18
  ['dcache',['DCache',['../SVFBasicTypes_8h.html#a500788b9fb425915fa4330d72142aec9',1,'SVFBasicTypes.h']]],
@@ -115,7 +115,7 @@ var searchData=
115
115
  ['simplify',['simplify',['../classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981',1,'SVF::Z3Expr']]],
116
116
  ['sinksbegin',['sinksBegin',['../classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2',1,'SVF::ProgSlice::sinksBegin()'],['../classSVF_1_1SrcSnkDDA.html#a79833c0cf1916d63e1dd32c2220056dd',1,'SVF::SrcSnkDDA::sinksBegin()']]],
117
117
  ['sinksend',['sinksEnd',['../classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31',1,'SVF::ProgSlice::sinksEnd()'],['../classSVF_1_1SrcSnkDDA.html#aaabc8d3aed17c8a35ef37d878f141412',1,'SVF::SrcSnkDDA::sinksEnd()']]],
118
- ['size',['size',['../classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b',1,'SVF::CondStdSet']]],
118
+ ['size',['size',['../classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b',1,'SVF::CondStdSet::size()'],['../classSVF_1_1FIFOWorkList.html#ad0e2c9eeb77c1a48a5d17164e4d72c6e',1,'SVF::FIFOWorkList::size()'],['../classSVF_1_1FILOWorkList.html#aff8bc6547b814b31b02c7f086d06ce05',1,'SVF::FILOWorkList::size()']]],
119
119
  ['skip_5fmultiline_5fcomment',['skip_multiline_comment',['../cJSON_8cpp.html#a4b9e22afcb0d33932c691b5af9f2560a',1,'cJSON.cpp']]],
120
120
  ['skip_5foneline_5fcomment',['skip_oneline_comment',['../cJSON_8cpp.html#a98eaeafefb811c738494a26265309a07',1,'cJSON.cpp']]],
121
121
  ['skip_5futf8_5fbom',['skip_utf8_bom',['../cJSON_8cpp.html#a13b2d9f17c3b80a8878405f2782cd916',1,'cJSON.cpp']]],
@@ -4,7 +4,7 @@ var searchData=
4
4
  ['dataiter',['DataIter',['../classSVF_1_1MutableIncDFPTData.html#a1fc4dff28f9044234fdfeede6f4b1cb0',1,'SVF::MutableIncDFPTData']]],
5
5
  ['datalayout',['DataLayout',['../namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c',1,'SVF']]],
6
6
  ['dataop',['DataOp',['../classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c',1,'SVF::PersistentPointsToCache']]],
7
- ['dataset',['DataSet',['../classSVF_1_1CFLFIFOWorkList.html#a0db15ca0ec5a14aee493ccfe54d34d85',1,'SVF::CFLFIFOWorkList::DataSet()'],['../classSVF_1_1List.html#a8f8a9dff1d1213a747f0d7ce8b1802e9',1,'SVF::List::DataSet()']]],
7
+ ['dataset',['DataSet',['../classSVF_1_1CFLFIFOWorkList.html#a0db15ca0ec5a14aee493ccfe54d34d85',1,'SVF::CFLFIFOWorkList::DataSet()'],['../classSVF_1_1List.html#a8f8a9dff1d1213a747f0d7ce8b1802e9',1,'SVF::List::DataSet()'],['../classSVF_1_1FIFOWorkList.html#a4803dc3b7f3ab57261261acb20551579',1,'SVF::FIFOWorkList::DataSet()'],['../classSVF_1_1FILOWorkList.html#abe04c596453280fe15cadde868ded798',1,'SVF::FILOWorkList::DataSet()']]],
8
8
  ['datavector',['DataVector',['../classSVF_1_1FILOWorkList.html#a41d3d71633adc6a1282922b4e4929a7f',1,'SVF::FILOWorkList']]],
9
9
  ['dchedgesetty',['DCHEdgeSetTy',['../classSVF_1_1DCHEdge.html#a2580878ab964494ee5c7840e16ef84b3',1,'SVF::DCHEdge']]],
10
10
  ['debuginfofinder',['DebugInfoFinder',['../namespaceSVF.html#a5ae98f122c64b0114df2e5861b341321',1,'SVF']]],
@@ -2,7 +2,7 @@ var searchData=
2
2
  [
3
3
  ['data',['data',['../classSVF_1_1List_1_1ListNode.html#a4a9cb4ae17156d6d80d2357e06231e12',1,'SVF::List::ListNode']]],
4
4
  ['data_5flist',['data_list',['../classSVF_1_1CFLFIFOWorkList.html#a5a5caa556bf8023b4b0b525179efd1b0',1,'SVF::CFLFIFOWorkList::data_list()'],['../classSVF_1_1FIFOWorkList.html#a270dad3fd1d95418e4af102b64fcc883',1,'SVF::FIFOWorkList::data_list()'],['../classSVF_1_1FILOWorkList.html#aeda28a2200d763279027642c8cf6a4bf',1,'SVF::FILOWorkList::data_list()']]],
5
- ['data_5fset',['data_set',['../classSVF_1_1CFLFIFOWorkList.html#a62ef55a46552652e20f8e3bfc2b72bd0',1,'SVF::CFLFIFOWorkList']]],
5
+ ['data_5fset',['data_set',['../classSVF_1_1CFLFIFOWorkList.html#a62ef55a46552652e20f8e3bfc2b72bd0',1,'SVF::CFLFIFOWorkList::data_set()'],['../classSVF_1_1FIFOWorkList.html#a5e9648954a2f6902dc4106cc17a7d1e6',1,'SVF::FIFOWorkList::data_set()'],['../classSVF_1_1FILOWorkList.html#a46092b75425becfe97fdf047206c736b',1,'SVF::FILOWorkList::data_set()']]],
6
6
  ['ddaselected',['DDASelected',['../classSVF_1_1Options.html#a2203f622ab539b3a38488575c9eec33b',1,'SVF::Options']]],
7
7
  ['ddastat',['ddaStat',['../classSVF_1_1DDAVFSolver.html#ae40c7bad663e0fa07dee4be3d1794ff2',1,'SVF::DDAVFSolver']]],
8
8
  ['def',['def',['../classSVF_1_1MRVer.html#a3398bb8d3189413c275b62d5cb7a5fc4',1,'SVF::MRVer']]],
@@ -304,16 +304,16 @@ Functions</h2></td></tr>
304
304
  <p class="definition">Definition at line <a class="el" href="svf-ex_8cpp_source.html#l00080">80</a> of file <a class="el" href="svf-ex_8cpp_source.html">svf-ex.cpp</a>.</p>
305
305
  <div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* iNode = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(inst);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const ICFGNode*&gt;</a> worklist;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const ICFGNode*&gt;</a> visited;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(iNode);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* vNode = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1ICFGNode.html#ac16c5a3227a44d3b9f7c3209156d9df2">ICFGNode::const_iterator</a> it = vNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit =</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; vNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit; ++it)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *it;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* succNode = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (visited.find(succNode) == visited.end())</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; visited.insert(succNode);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(succNode);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00044">ICFGEdge.h:44</a></div></div>
306
306
  <div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
307
- <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00145">WorkList.h:145</a></div></div>
307
+ <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
308
308
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
309
- <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00158">WorkList.h:158</a></div></div>
309
+ <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00165">WorkList.h:165</a></div></div>
310
310
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00093">GenericGraph.h:93</a></div></div>
311
311
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
312
312
  <div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00087">ICFG.h:87</a></div></div>
313
313
  <div class="ttc" id="classSVF_1_1ICFGNode_html_ac16c5a3227a44d3b9f7c3209156d9df2"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ac16c5a3227a44d3b9f7c3209156d9df2">SVF::ICFGNode::const_iterator</a></div><div class="ttdeci">ICFGEdge::ICFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00066">ICFGNode.h:66</a></div></div>
314
314
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
315
315
  <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
316
- <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00167">WorkList.h:167</a></div></div>
316
+ <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00200">WorkList.h:200</a></div></div>
317
317
  </div><!-- fragment -->
318
318
  </div>
319
319
  </div>
@@ -350,9 +350,9 @@ Functions</h2></td></tr>
350
350
  <p class="definition">Definition at line <a class="el" href="svf-ex_8cpp_source.html#l00108">108</a> of file <a class="el" href="svf-ex_8cpp_source.html">svf-ex.cpp</a>.</p>
351
351
  <div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = SVFIR::getPAG();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pNode = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(val));</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* vNode = vfg-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(pNode);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const VFGNode*&gt;</a> worklist;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const VFGNode*&gt;</a> visited;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(vNode);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* vNode = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">VFGNode::const_iterator</a> it = vNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit =</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; vNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit; ++it)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = *it;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* succNode = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (visited.find(succNode) == visited.end())</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; visited.insert(succNode);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(succNode);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const VFGNode*&gt;::const_iterator</a> it = visited.begin(), eit = visited.end(); it!=eit; ++it)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">// const VFGNode* node = *it;</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"></span> }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
352
352
  <div class="ttc" id="classSVF_1_1SVFG_html_a8e7a945f4266e8dc7dcfff2ad6494bfb"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">SVF::SVFG::getDefSVFGNode</a></div><div class="ttdeci">const SVFGNode * getDefSVFGNode(const PAGNode *pagNode) const</div><div class="ttdoc">Given a pagNode, return its definition site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00171">SVFG.h:171</a></div></div>
353
- <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00145">WorkList.h:145</a></div></div>
353
+ <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
354
354
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
355
- <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00158">WorkList.h:158</a></div></div>
355
+ <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00165">WorkList.h:165</a></div></div>
356
356
  <div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00124">IRGraph.h:124</a></div></div>
357
357
  <div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
358
358
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00093">GenericGraph.h:93</a></div></div>
@@ -362,7 +362,7 @@ Functions</h2></td></tr>
362
362
  <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
363
363
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
364
364
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
365
- <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00167">WorkList.h:167</a></div></div>
365
+ <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00200">WorkList.h:200</a></div></div>
366
366
  <div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
367
367
  </div><!-- fragment -->
368
368
  </div>
@@ -76,7 +76,7 @@ $(function() {
76
76
  <div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html_a54a713e3989597b11cee70864d0197bd"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">SVF::SVFGBuilder::buildFullSVFG</a></div><div class="ttdeci">SVFG * buildFullSVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00052">SVFGBuilder.cpp:52</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1SVFG_html_a8e7a945f4266e8dc7dcfff2ad6494bfb"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">SVF::SVFG::getDefSVFGNode</a></div><div class="ttdeci">const SVFGNode * getDefSVFGNode(const PAGNode *pagNode) const</div><div class="ttdoc">Given a pagNode, return its definition site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00171">SVFG.h:171</a></div></div>
79
- <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00145">WorkList.h:145</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00181">PointsTo.h:181</a></div></div>
81
81
  <div class="ttc" id="SVFG_8h_html"><div class="ttname"><a href="SVFG_8h.html">SVFG.h</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
@@ -84,7 +84,7 @@ $(function() {
84
84
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
85
85
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">SVF::AliasResult</a></div><div class="ttdeci">AliasResult</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00196">SVFBasicTypes.h:196</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
87
- <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00158">WorkList.h:158</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00165">WorkList.h:165</a></div></div>
88
88
  <div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00124">IRGraph.h:124</a></div></div>
89
89
  <div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
90
90
  <div class="ttc" id="svf-ex_8cpp_html_a139199e1f33675df72b018c31e0be35c"><div class="ttname"><a href="svf-ex_8cpp.html#a139199e1f33675df72b018c31e0be35c">InputFilename</a></div><div class="ttdeci">static llvm::cl::opt&lt; std::string &gt; InputFilename(llvm::cl::Positional, llvm::cl::desc(&quot;&lt;input bitcode&gt;&quot;), llvm::cl::init(&quot;-&quot;))</div></div>
@@ -126,7 +126,7 @@ $(function() {
126
126
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
127
127
  <div class="ttc" id="svf-ex_8cpp_html_af45b449c07f1c975eea45d40d1cc37f6"><div class="ttname"><a href="svf-ex_8cpp.html#af45b449c07f1c975eea45d40d1cc37f6">traverseOnICFG</a></div><div class="ttdeci">void traverseOnICFG(ICFG *icfg, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="svf-ex_8cpp_source.html#l00080">svf-ex.cpp:80</a></div></div>
128
128
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
129
- <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00167">WorkList.h:167</a></div></div>
129
+ <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00200">WorkList.h:200</a></div></div>
130
130
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
131
131
  <div class="ttc" id="classSVF_1_1PointsTo_html_a8f741cdffbf3c5fe0f602cdca677dee6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">SVF::PointsTo::end</a></div><div class="ttdeci">const_iterator end(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00132">PointsTo.h:132</a></div></div>
132
132
  <div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
@@ -58,7 +58,7 @@ class List
58
58
  class ListNode
59
59
  {
60
60
  public:
61
- ListNode(const Data& d)
61
+ ListNode(const Data &d)
62
62
  {
63
63
  data = d;
64
64
  next = nullptr;
@@ -67,7 +67,7 @@ class List
67
67
  ~ListNode() {}
68
68
 
69
69
  Data data;
70
- ListNode* next;
70
+ ListNode *next;
71
71
  };
72
72
 
73
73
  typedef Set<Data> DataSet;
@@ -87,16 +87,16 @@ public:
87
87
  return (head == nullptr);
88
88
  }
89
89
 
90
- inline bool find(const Data& data) const
90
+ inline bool find(const Data &data) const
91
91
  {
92
- return (nodeSet.find(data) == nodeSet.end() ? false : true);
92
+ return nodeSet.find(data) != nodeSet.end();
93
93
  }
94
94
 
95
- void push(const Data& data)
95
+ void push(const Data &data)
96
96
  {
97
97
  if (nodeSet.find(data) == nodeSet.end())
98
98
  {
99
- Node* new_node = new Node(data);
99
+ Node *new_node = new Node(data);
100
100
  if (head == nullptr)
101
101
  head = new_node;// the list is empty
102
102
  else
@@ -109,12 +109,12 @@ public:
109
109
  {
110
110
  assert(head != nullptr && "list is empty");
111
111
  /// get node from list head
112
- Node* head_node = head;
112
+ Node *head_node = head;
113
113
 
114
114
  /// change list head to the next node
115
115
  head = head->next;
116
116
  if (head == nullptr)
117
- tail = nullptr; /// the last node is popped.
117
+ tail = nullptr; /// the last node is popped.
118
118
 
119
119
  Data data = head_node->data;
120
120
  nodeSet.erase(data);
@@ -124,8 +124,8 @@ public:
124
124
 
125
125
  private:
126
126
  DataSet nodeSet;
127
- Node* head;
128
- Node* tail;
127
+ Node *head;
128
+ Node *tail;
129
129
  };
130
130
 
131
131
  /**
@@ -136,6 +136,7 @@ private:
136
136
  template<class Data>
137
137
  class FIFOWorkList
138
138
  {
139
+ typedef Set<Data> DataSet;
139
140
  typedef std::deque<Data> DataDeque;
140
141
  public:
141
142
  FIFOWorkList() {}
@@ -147,28 +148,30 @@ public:
147
148
  return data_list.empty();
148
149
  }
149
150
 
150
- inline bool find(const Data& data) const
151
+ inline u32_t size() const
151
152
  {
152
- return std::find(data_list.begin(), data_list.end(), data) != data_list.end();
153
+ assert(data_list.size() == data_set.size() && "list and set must be the same size!");
154
+ return data_list.size();
153
155
  }
154
156
 
155
- /**
156
- * Push a data into the work list.
157
- */
158
- inline bool push(const Data& data)
157
+ inline bool find(const Data &data) const
159
158
  {
160
- data_list.push_back(data);
161
- return true;
159
+ return data_set.find(data) != data_set.end();
162
160
  }
163
161
 
164
162
  /**
165
- * Pop a data from the END of work list.
163
+ * Push a data into the work list.
166
164
  */
167
- inline Data pop()
165
+ inline bool push(const Data &data)
168
166
  {
169
- Data data = front();
170
- removeFront();
171
- return data;
167
+ if (!find(data))
168
+ {
169
+ data_list.push_back(data);
170
+ data_set.insert(data);
171
+ return true;
172
+ }
173
+ else
174
+ return false;
172
175
  }
173
176
 
174
177
  /**
@@ -177,16 +180,29 @@ public:
177
180
  inline void removeFront()
178
181
  {
179
182
  assert(!empty() && "work list is empty");
183
+ data_set.erase(front());
180
184
  data_list.pop_front();
181
185
  }
182
186
 
183
187
  /**
184
188
  * Get reference of top data from the END of work list.
185
189
  */
186
- inline Data& front()
190
+ inline Data &front()
191
+ {
192
+ assert(!empty() && "work list is empty");
193
+ Data &data = data_list.front();
194
+ return data;
195
+ }
196
+
197
+ /**
198
+ * Pop a data from the END of work list.
199
+ */
200
+ inline Data pop()
187
201
  {
188
202
  assert(!empty() && "work list is empty");
189
- Data& data = data_list.front();
203
+ Data data = data_list.front();
204
+ data_list.pop_front();
205
+ data_set.erase(data);
190
206
  return data;
191
207
  }
192
208
 
@@ -196,10 +212,12 @@ public:
196
212
  inline void clear()
197
213
  {
198
214
  data_list.clear();
215
+ data_set.clear();
199
216
  }
200
217
 
201
218
  private:
202
- DataDeque data_list; ///< work list using std::vector.
219
+ DataSet data_set; ///< store all data in the work list.
220
+ DataDeque data_list; ///< work list using std::vector.
203
221
  };
204
222
 
205
223
  /**
@@ -210,6 +228,7 @@ private:
210
228
  template<class Data>
211
229
  class FILOWorkList
212
230
  {
231
+ typedef Set<Data> DataSet;
213
232
  typedef std::vector<Data> DataVector;
214
233
  public:
215
234
  FILOWorkList() {}
@@ -221,18 +240,30 @@ public:
221
240
  return data_list.empty();
222
241
  }
223
242
 
224
- inline bool find(const Data& data) const
243
+ inline u32_t size() const
225
244
  {
226
- return std::find(data_list.begin(), data_list.end(), data) != data_list.end();
245
+ assert(data_list.size() == data_set.size() && "list and set must be the same size!");
246
+ return data_list.size();
247
+ }
248
+
249
+ inline bool find(const Data &data) const
250
+ {
251
+ return data_set.find(data) != data_set.end();;
227
252
  }
228
253
 
229
254
  /**
230
255
  * Push a data into the work list.
231
256
  */
232
- inline bool push(const Data& data)
257
+ inline bool push(const Data &data)
233
258
  {
234
- data_list.push_back(data);
235
- return true;
259
+ if (!find(data))
260
+ {
261
+ data_list.push_back(data);
262
+ data_set.insert(data);
263
+ return true;
264
+ }
265
+ else
266
+ return false;
236
267
  }
237
268
 
238
269
  /**
@@ -240,8 +271,10 @@ public:
240
271
  */
241
272
  inline Data pop()
242
273
  {
243
- Data data = back();
244
- removeBack();
274
+ assert(!empty() && "work list is empty");
275
+ Data data = data_list.back();
276
+ data_list.pop_back();
277
+ data_set.erase(data);
245
278
  return data;
246
279
  }
247
280
 
@@ -251,16 +284,17 @@ public:
251
284
  inline void removeBack()
252
285
  {
253
286
  assert(!empty() && "work list is empty");
287
+ data_set.erase(back());
254
288
  data_list.pop_back();
255
289
  }
256
290
 
257
291
  /**
258
292
  * Get reference of top data from the END of work list.
259
293
  */
260
- inline Data& back()
294
+ inline Data &back()
261
295
  {
262
296
  assert(!empty() && "work list is empty");
263
- Data& data = data_list.back();
297
+ Data &data = data_list.back();
264
298
  return data;
265
299
  }
266
300
 
@@ -270,10 +304,12 @@ public:
270
304
  inline void clear()
271
305
  {
272
306
  data_list.clear();
307
+ data_set.clear();
273
308
  }
274
309
 
275
310
  private:
276
- DataVector data_list; ///< work list using std::vector.
311
+ DataSet data_set; ///< store all data in the work list.
312
+ DataVector data_list; ///< work list using std::vector.
277
313
  };
278
314
 
279
315
  } // End namespace SVF
@@ -149,7 +149,7 @@ ExtAPI *ExtAPI::getExtAPI(const std::string &path)
149
149
  return extOp;
150
150
  }
151
151
 
152
- jsonFilePath = getJsonFile("$SVF_DIR");
152
+ jsonFilePath = getJsonFile("echo $SVF_DIR");
153
153
  if (!stat(jsonFilePath.c_str(), &statbuf))
154
154
  {
155
155
  root = parseJson(jsonFilePath, statbuf.st_size);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.574",
3
+ "version": "1.0.576",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {