svf-tools 1.0.518 → 1.0.521

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 (69) hide show
  1. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +13 -10
  3. package/SVF-doxygen/html/html/CFLGrammar_8txt.html +57 -21
  4. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +19 -19
  5. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +49 -48
  6. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +4 -4
  7. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +3 -3
  8. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -1
  10. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +6 -6
  12. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +17 -7
  13. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
  14. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +118 -75
  15. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +168 -58
  16. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
  17. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +29 -28
  18. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +94 -91
  19. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +10 -10
  20. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +8 -8
  21. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  22. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +45 -42
  23. package/SVF-doxygen/html/html/functions_e.html +4 -1
  24. package/SVF-doxygen/html/html/functions_eval_e.html +3 -0
  25. package/SVF-doxygen/html/html/functions_func_g.html +11 -9
  26. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  27. package/SVF-doxygen/html/html/functions_g.html +12 -10
  28. package/SVF-doxygen/html/html/functions_o.html +3 -3
  29. package/SVF-doxygen/html/html/functions_p.html +7 -7
  30. package/SVF-doxygen/html/html/functions_r.html +3 -3
  31. package/SVF-doxygen/html/html/functions_s.html +7 -9
  32. package/SVF-doxygen/html/html/functions_t.html +3 -1
  33. package/SVF-doxygen/html/html/functions_w.html +11 -11
  34. package/SVF-doxygen/html/html/globals_g.html +7 -4
  35. package/SVF-doxygen/html/html/globals_v.html +4 -1
  36. package/SVF-doxygen/html/html/globals_vars.html +11 -5
  37. package/SVF-doxygen/html/html/hierarchy.html +6 -6
  38. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  39. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  40. package/SVF-doxygen/html/html/search/all_12.js +9 -9
  41. package/SVF-doxygen/html/html/search/all_13.js +4 -4
  42. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  43. package/SVF-doxygen/html/html/search/all_15.js +3 -2
  44. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  45. package/SVF-doxygen/html/html/search/all_5.js +1 -0
  46. package/SVF-doxygen/html/html/search/all_7.js +5 -3
  47. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  48. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  49. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  50. package/SVF-doxygen/html/html/search/enumvalues_4.js +1 -0
  51. package/SVF-doxygen/html/html/search/functions_6.js +2 -1
  52. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  53. package/SVF-doxygen/html/html/search/variables_13.js +4 -4
  54. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  55. package/SVF-doxygen/html/html/search/variables_15.js +2 -1
  56. package/SVF-doxygen/html/html/search/variables_7.js +3 -2
  57. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  58. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +1 -1
  59. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  60. package/codecov.yml +21 -0
  61. package/include/CFL/CFLAlias.h +9 -7
  62. package/include/CFL/CFLGrammar.txt +10 -9
  63. package/include/Util/ExtAPI.h +2 -0
  64. package/include/Util/ExtAPI.json +5 -0
  65. package/lib/CFL/CFLAlias.cpp +2 -2
  66. package/lib/CFL/GrammarBuilder.cpp +4 -2
  67. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  68. package/lib/SVF-FE/SVFIRBuilder.cpp +16 -0
  69. package/package.json +1 -1
@@ -80,7 +80,7 @@ $(function() {
80
80
  <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a255d310b1b573ca5c69fd715d7815d79"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a255d310b1b573ca5c69fd715d7815d79">GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa7e98cd2fd599aedefa4c2e6fb659da0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">SVF::SVFIR::addDummyValNode</a></div><div class="ttdeci">NodeID addDummyValNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00428">SVFIR.h:428</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4a945eafd262f81b4f9cc1fa61b57371"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4a945eafd262f81b4f9cc1fa61b57371">SVF::SVFIRBuilder::visitGetElementPtrInst</a></div><div class="ttdeci">void visitGetElementPtrInst(GetElementPtrInst &amp;I)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00651">SVFIRBuilder.cpp:651</a></div></div>
83
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa21ed35656d26eec22c53dc41019adc4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa21ed35656d26eec22c53dc41019adc4">SVF::SVFIRBuilder::handleIndCall</a></div><div class="ttdeci">void handleIndCall(CallSite cs)</div><div class="ttdoc">Handle indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01494">SVFIRBuilder.cpp:1494</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa21ed35656d26eec22c53dc41019adc4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa21ed35656d26eec22c53dc41019adc4">SVF::SVFIRBuilder::handleIndCall</a></div><div class="ttdeci">void handleIndCall(CallSite cs)</div><div class="ttdoc">Handle indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01510">SVFIRBuilder.cpp:1510</a></div></div>
84
84
  <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a41c335e8362a500085923e4742a53f57"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a41c335e8362a500085923e4742a53f57">ExtractValueInst</a></div><div class="ttdeci">llvm::ExtractValueInst ExtractValueInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a724198dcaf43730e1df814f15fe4e1e0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a724198dcaf43730e1df814f15fe4e1e0">SVF::SVFIRBuilder::getCurrentBB</a></div><div class="ttdeci">const BasicBlock * getCurrentBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00260">SVFIRBuilder.h:260</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a2a0711cb1fdd3c5c90b07ff107aff1ac"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">SVF::SVFIRBuilder::addAddrEdge</a></div><div class="ttdeci">AddrStmt * addAddrEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Address edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00298">SVFIRBuilder.h:298</a></div></div>
@@ -123,14 +123,14 @@ $(function() {
123
123
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_af44d4587defa76f1e7f2645f9711558a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af44d4587defa76f1e7f2645f9711558a">SVF::SVFIRBuilder::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdoc">Return SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00069">SVFIRBuilder.h:69</a></div></div>
124
124
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a1ad4f6ac06c1f3523661e7b2a0be09b5"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a1ad4f6ac06c1f3523661e7b2a0be09b5">SVF::SVFIRBuilder::parseNode</a></div><div class="ttdeci">virtual NodeID parseNode(std::string s, CallSite cs, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01147">SVFIRBuilder.cpp:1147</a></div></div>
125
125
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a6b52906a617f088b1077ba0387a846ab"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a6b52906a617f088b1077ba0387a846ab">SVF::SVFIRBuilder::visitCallSite</a></div><div class="ttdeci">void visitCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00761">SVFIRBuilder.cpp:761</a></div></div>
126
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a09baa8c7246853c3faaed85b38f0da60"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">SVF::SVFIRBuilder::sanityCheck</a></div><div class="ttdeci">void sanityCheck()</div><div class="ttdoc">Sanity check for SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01503">SVFIRBuilder.cpp:1503</a></div></div>
126
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a09baa8c7246853c3faaed85b38f0da60"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">SVF::SVFIRBuilder::sanityCheck</a></div><div class="ttdeci">void sanityCheck()</div><div class="ttdoc">Sanity check for SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01519">SVFIRBuilder.cpp:1519</a></div></div>
127
127
  <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>
128
128
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac70a2368d5e0d3fe4dff94fecb2455ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac70a2368d5e0d3fe4dff94fecb2455ef">SVF::SVFIRBuilder::addGepEdge</a></div><div class="ttdeci">void addGepEdge(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00384">SVFIRBuilder.h:384</a></div></div>
129
129
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a30f043eeca79259d84b97e265110f018"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">void addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00361">SVFIRBuilder.h:361</a></div></div>
130
130
  <div class="ttc" id="classSVF_1_1SVFIR_html_a33df5f5d9b7de3846cf973135b04f513"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a33df5f5d9b7de3846cf973135b04f513">SVF::SVFIR::addBlackHoleAddrStmt</a></div><div class="ttdeci">SVFStmt * addBlackHoleAddrStmt(NodeID node)</div><div class="ttdoc">Set a pointer points-to black hole (e.g. int2ptr) </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00282">SVFIR.cpp:282</a></div></div>
131
131
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5adf8baa546292434ba1fec48db2d0a7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">SVF::SVFIRBuilder::processCE</a></div><div class="ttdeci">void processCE(const Value *val)</div><div class="ttdoc">Process constant expression. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00303">SVFIRBuilder.cpp:303</a></div></div>
132
132
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aac1cbf0cb2b402b5fd0e2324c89c31b0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">SVF::SVFIRBuilder::curBB</a></div><div class="ttdeci">const BasicBlock * curBB</div><div class="ttdoc">Current basic block during SVFIR construction when visiting the module. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00052">SVFIRBuilder.h:52</a></div></div>
133
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a74cff1c31f2fd1d23709b34ae988c29a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a74cff1c31f2fd1d23709b34ae988c29a">SVF::SVFIRBuilder::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *val, const LocationSet &amp;ls, const Type *baseType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01529">SVFIRBuilder.cpp:1529</a></div></div>
133
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a74cff1c31f2fd1d23709b34ae988c29a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a74cff1c31f2fd1d23709b34ae988c29a">SVF::SVFIRBuilder::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *val, const LocationSet &amp;ls, const Type *baseType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01545">SVFIRBuilder.cpp:1545</a></div></div>
134
134
  <div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
135
135
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a8c25c3903cda26312f182014f29069fc"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a8c25c3903cda26312f182014f29069fc">SVF::SVFIRBuilder::SVFIRBuilder</a></div><div class="ttdeci">SVFIRBuilder()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00057">SVFIRBuilder.h:57</a></div></div>
136
136
  <div class="ttc" id="classSVF_1_1IRGraph_html_a3b417ee79560fd00f4cf80906044c198"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">SVF::IRGraph::getBlkPtr</a></div><div class="ttdeci">NodeID getBlkPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00156">IRGraph.h:156</a></div></div>
@@ -193,7 +193,7 @@ $(function() {
193
193
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9e81039d17b70e6a3d7310d05fa73c45"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9e81039d17b70e6a3d7310d05fa73c45">SVF::SVFIRBuilder::addUnaryOPEdge</a></div><div class="ttdeci">void addUnaryOPEdge(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00343">SVFIRBuilder.h:343</a></div></div>
194
194
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a91c8f9dc6e7cb225c2ed4b8f0322a2b3"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a91c8f9dc6e7cb225c2ed4b8f0322a2b3">SVF::SVFIRBuilder::visitInstruction</a></div><div class="ttdeci">void visitInstruction(Instruction &amp;)</div><div class="ttdoc">Provide base case for our instruction visit. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00205">SVFIRBuilder.h:205</a></div></div>
195
195
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac61e0c5f667ebeb4788d07253e6a733c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac61e0c5f667ebeb4788d07253e6a733c">SVF::SVFIRBuilder::visitCmpInst</a></div><div class="ttdeci">void visitCmpInst(CmpInst &amp;I)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00729">SVFIRBuilder.cpp:729</a></div></div>
196
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acdb0cc97c0a0df00a6bf73cdb5cab5ba"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acdb0cc97c0a0df00a6bf73cdb5cab5ba">SVF::SVFIRBuilder::getLocationSetFromBaseNode</a></div><div class="ttdeci">LocationSet getLocationSetFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01706">SVFIRBuilder.cpp:1706</a></div></div>
196
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acdb0cc97c0a0df00a6bf73cdb5cab5ba"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acdb0cc97c0a0df00a6bf73cdb5cab5ba">SVF::SVFIRBuilder::getLocationSetFromBaseNode</a></div><div class="ttdeci">LocationSet getLocationSetFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01722">SVFIRBuilder.cpp:1722</a></div></div>
197
197
  <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a5b02d9efe63d84149e54736b81f922f1"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a5b02d9efe63d84149e54736b81f922f1">LandingPadInst</a></div><div class="ttdeci">llvm::LandingPadInst LandingPadInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00086">BasicTypes.h:86</a></div></div>
198
198
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ad0e9f1dd1cba235a699c2b710a888d06"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ad0e9f1dd1cba235a699c2b710a888d06">SVF::SVFIRBuilder::addComplexConsForExt</a></div><div class="ttdeci">void addComplexConsForExt(Value *D, Value *S, const Value *sz)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01083">SVFIRBuilder.cpp:1083</a></div></div>
199
199
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa67bbd366b93fb1ec7a540c83566c977"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa67bbd366b93fb1ec7a540c83566c977">SVF::SVFIRBuilder::svfMod</a></div><div class="ttdeci">SVFModule * svfMod</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00051">SVFIRBuilder.h:51</a></div></div>
@@ -206,7 +206,7 @@ $(function() {
206
206
  <div class="ttc" id="cJSON_8cpp_html_a95bf816579e97b6f33bdb5e25ed6d5de"><div class="ttname"><a href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a></div><div class="ttdeci">buffer offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01113">cJSON.cpp:1113</a></div></div>
207
207
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac26e0714728df0beca278eb405596775"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac26e0714728df0beca278eb405596775">SVF::SVFIRBuilder::visitVAArgInst</a></div><div class="ttdeci">void visitVAArgInst(VAArgInst &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00904">SVFIRBuilder.cpp:904</a></div></div>
208
208
  <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aebd8814affe9b579237bd090561b4686"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aebd8814affe9b579237bd090561b4686">ShuffleVectorInst</a></div><div class="ttdeci">llvm::ShuffleVectorInst ShuffleVectorInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
209
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a22bd51c6fe770d179867342164ec2767"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a22bd51c6fe770d179867342164ec2767">SVF::SVFIRBuilder::updateCallGraph</a></div><div class="ttdeci">void updateCallGraph(PTACallGraph *callgraph)</div><div class="ttdoc">Update SVFIR given a call graph (creating new CallPE and RetPE for resolved indirect calls) ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01669">SVFIRBuilder.cpp:1669</a></div></div>
209
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a22bd51c6fe770d179867342164ec2767"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a22bd51c6fe770d179867342164ec2767">SVF::SVFIRBuilder::updateCallGraph</a></div><div class="ttdeci">void updateCallGraph(PTACallGraph *callgraph)</div><div class="ttdoc">Update SVFIR given a call graph (creating new CallPE and RetPE for resolved indirect calls) ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01685">SVFIRBuilder.cpp:1685</a></div></div>
210
210
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
211
211
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
212
212
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a870ea33a335a7036555dd24171cf8f22"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a870ea33a335a7036555dd24171cf8f22">SVF::SVFIRBuilder::visitFreezeInst</a></div><div class="ttdeci">void visitFreezeInst(FreezeInst &amp;I)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00916">SVFIRBuilder.cpp:916</a></div></div>
@@ -230,7 +230,7 @@ $(function() {
230
230
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
231
231
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3837804b2622baf7e6991aa993286e9e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e">SVF::SVFIR::addLoadStmt</a></div><div class="ttdeci">LoadStmt * addLoadStmt(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00209">SVFIR.cpp:209</a></div></div>
232
232
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5bf90e30bb591caba9ff85535e6a33f8"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5bf90e30bb591caba9ff85535e6a33f8">SVF::SVFIRBuilder::addSelectStmt</a></div><div class="ttdeci">void addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond)</div><div class="ttdoc">Add SelectStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00325">SVFIRBuilder.h:325</a></div></div>
233
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01574">SVFIRBuilder.cpp:1574</a></div></div>
233
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01590">SVFIRBuilder.cpp:1590</a></div></div>
234
234
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a89e8cc23aad23d2c326b4a5ff12535ca"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a89e8cc23aad23d2c326b4a5ff12535ca">SVF::SVFIRBuilder::addRetEdge</a></div><div class="ttdeci">void addRetEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00378">SVFIRBuilder.h:378</a></div></div>
235
235
  <div class="ttc" id="classSVF_1_1FunExitICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html">SVF::FunExitICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00308">ICFGNode.h:308</a></div></div>
236
236
  <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00341">SVFStatements.h:341</a></div></div>
@@ -81,15 +81,16 @@ Inheritance diagram for SVF::BVDataPTAImpl:</div>
81
81
  <div class="center">
82
82
  <img src="classSVF_1_1BVDataPTAImpl.png" usemap="#SVF::BVDataPTAImpl_map" alt=""/>
83
83
  <map id="SVF::BVDataPTAImpl_map" name="SVF::BVDataPTAImpl_map">
84
- <area href="classSVF_1_1PointerAnalysis.html" alt="SVF::PointerAnalysis" shape="rect" coords="472,0,651,24"/>
84
+ <area href="classSVF_1_1PointerAnalysis.html" alt="SVF::PointerAnalysis" shape="rect" coords="567,0,746,24"/>
85
85
  <area href="classSVF_1_1AndersenBase.html" alt="SVF::AndersenBase" shape="rect" coords="283,112,462,136"/>
86
- <area href="classSVF_1_1FlowDDA.html" alt="SVF::FlowDDA" shape="rect" coords="472,112,651,136"/>
87
- <area href="classSVF_1_1FlowSensitive.html" alt="SVF::FlowSensitive" shape="rect" coords="756,112,935,136"/>
86
+ <area href="classSVF_1_1CFLAlias.html" alt="SVF::CFLAlias" shape="rect" coords="472,112,651,136"/>
87
+ <area href="classSVF_1_1FlowDDA.html" alt="SVF::FlowDDA" shape="rect" coords="661,112,840,136"/>
88
+ <area href="classSVF_1_1FlowSensitive.html" alt="SVF::FlowSensitive" shape="rect" coords="850,112,1029,136"/>
88
89
  <area href="classSVF_1_1Andersen.html" alt="SVF::Andersen" shape="rect" coords="94,168,273,192"/>
89
90
  <area href="classSVF_1_1Steensgaard.html" alt="SVF::Steensgaard" shape="rect" coords="283,168,462,192"/>
90
91
  <area href="classSVF_1_1TypeAnalysis.html" alt="SVF::TypeAnalysis" shape="rect" coords="472,168,651,192"/>
91
- <area href="classSVF_1_1FSMPTA.html" alt="SVF::FSMPTA" shape="rect" coords="661,168,840,192"/>
92
- <area href="classSVF_1_1VersionedFlowSensitive.html" alt="SVF::VersionedFlowSensitive" shape="rect" coords="850,168,1029,192"/>
92
+ <area href="classSVF_1_1FSMPTA.html" alt="SVF::FSMPTA" shape="rect" coords="756,168,935,192"/>
93
+ <area href="classSVF_1_1VersionedFlowSensitive.html" alt="SVF::VersionedFlowSensitive" shape="rect" coords="945,168,1124,192"/>
93
94
  <area href="classSVF_1_1AndersenSCD.html" alt="SVF::AndersenSCD" shape="rect" coords="0,224,179,248"/>
94
95
  <area href="classSVF_1_1AndersenWaveDiff.html" alt="SVF::AndersenWaveDiff" shape="rect" coords="189,224,368,248"/>
95
96
  <area href="classSVF_1_1AndersenSFR.html" alt="SVF::AndersenSFR" shape="rect" coords="0,280,179,304"/>
@@ -809,10 +810,11 @@ Additional Inherited Members</h2></td></tr>
809
810
  <p>Constructor </p>
810
811
 
811
812
  <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00025">25</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
812
- <div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; :</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a14e2a209cb594f91a24ef09b12f82f3f">PointerAnalysis</a>(p, <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, alias_check), <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>()</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">FlowS_DDA</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</a>)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">// Only maintain reverse points-to when the analysis is field-sensitive, as objects turning</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// field-insensitive is all it is used for.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">bool</span> maintainRevPts = <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a> != 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac4e74e6dfee9d08198e0f7e3d76a0646">MutDiffPTDataTy</a>(maintainRevPts);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a1342c0953d7bb9bf0f6f676bd564350e">PersDiffPTDataTy</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>(), maintainRevPts);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// Steensgaard is only field-insensitive (for now?), so no reverse points-to.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac4e74e6dfee9d08198e0f7e3d76a0646">MutDiffPTDataTy</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a1342c0953d7bb9bf0f6f676bd564350e">PersDiffPTDataTy</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a5896e2aaf59305441a74ede0dfb85845">Options::INCDFPTData</a>)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a639446e6bf9712afa439d089b94aefae">MutIncDFPTDataTy</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a29172b3e8b3891a5d946a493cfcde2e7">PersIncDFPTDataTy</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac130bf326911b8e5396f57daa78566e7">MutDFPTDataTy</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a7087f9d5a1a5b3576173bd6a7fd72163">PersDFPTDataTy</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">VFS_WPA</a>)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a7fde3e9b189e988cd0a24d567b136e13">MutVersionedPTDataTy</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae028ae29bdc799f35777b82a39faf5e8">PersVersionedPTDataTy</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no points-to data available&quot;</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36">ptaImplTy</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8">BVDataImpl</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8">SVF::PointerAnalysis::BVDataImpl</a></div><div class="ttdoc">Represents BVDataPTAImpl. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00096">PointerAnalysis.h:96</a></div></div>
813
+ <div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; :</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a14e2a209cb594f91a24ef09b12f82f3f">PointerAnalysis</a>(p, <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, alias_check), <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>()</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">FlowS_DDA</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</a> || <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">CFLFICI_WPA</a> )</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">// Only maintain reverse points-to when the analysis is field-sensitive, as objects turning</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// field-insensitive is all it is used for.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">bool</span> maintainRevPts = <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a> != 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac4e74e6dfee9d08198e0f7e3d76a0646">MutDiffPTDataTy</a>(maintainRevPts);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a1342c0953d7bb9bf0f6f676bd564350e">PersDiffPTDataTy</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>(), maintainRevPts);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// Steensgaard is only field-insensitive (for now?), so no reverse points-to.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac4e74e6dfee9d08198e0f7e3d76a0646">MutDiffPTDataTy</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a1342c0953d7bb9bf0f6f676bd564350e">PersDiffPTDataTy</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a5896e2aaf59305441a74ede0dfb85845">Options::INCDFPTData</a>)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a639446e6bf9712afa439d089b94aefae">MutIncDFPTDataTy</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a29172b3e8b3891a5d946a493cfcde2e7">PersIncDFPTDataTy</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac130bf326911b8e5396f57daa78566e7">MutDFPTDataTy</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a7087f9d5a1a5b3576173bd6a7fd72163">PersDFPTDataTy</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">VFS_WPA</a>)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Mutable) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a7fde3e9b189e988cd0a24d567b136e13">MutVersionedPTDataTy</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae028ae29bdc799f35777b82a39faf5e8">PersVersionedPTDataTy</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">getPtCache</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!&quot;</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">else</span> assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no points-to data available&quot;</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36">ptaImplTy</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8">BVDataImpl</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8">SVF::PointerAnalysis::BVDataImpl</a></div><div class="ttdoc">Represents BVDataPTAImpl. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00096">PointerAnalysis.h:96</a></div></div>
813
814
  <div class="ttc" id="classSVF_1_1Options_html_a9ec1d22e20b655e364fea03ba7d923a2"><div class="ttname"><a href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">SVF::Options::ptDataBacking</a></div><div class="ttdeci">static const llvm::cl::opt&lt; BVDataPTAImpl::PTBackingType &gt; ptDataBacking</div><div class="ttdoc">PTData type. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00068">Options.h:68</a></div></div>
814
815
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a34d87fa1988b78f032735b5fc2803792"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a34d87fa1988b78f032735b5fc2803792">SVF::BVDataPTAImpl::getPtCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; PointsTo &gt; &amp; getPtCache(void)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00079">PointerAnalysisImpl.h:79</a></div></div>
815
816
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a29172b3e8b3891a5d946a493cfcde2e7"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a29172b3e8b3891a5d946a493cfcde2e7">SVF::BVDataPTAImpl::PersIncDFPTDataTy</a></div><div class="ttdeci">PersistentIncDFPTData&lt; NodeID, NodeSet, NodeID, PointsTo &gt; PersIncDFPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00060">PointerAnalysisImpl.h:60</a></div></div>
817
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">SVF::PointerAnalysis::CFLFICI_WPA</a></div><div class="ttdoc">Flow-, context-, insensitive CFL-reachability-based analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00077">PointerAnalysis.h:77</a></div></div>
816
818
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a14e2a209cb594f91a24ef09b12f82f3f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a14e2a209cb594f91a24ef09b12f82f3f">SVF::PointerAnalysis::PointerAnalysis</a></div><div class="ttdeci">PointerAnalysis(SVFIR *pag, PTATY ty=Default_PTA, bool alias_check=true)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00075">PointerAnalysis.cpp:75</a></div></div>
817
819
  <div class="ttc" id="classSVF_1_1Options_html_adfc1a5c6098d3867e29fc65ca9ffa1cc"><div class="ttname"><a href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00037">Options.h:37</a></div></div>
818
820
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">SVF::PointerAnalysis::VFS_WPA</a></div><div class="ttdoc">Versioned sparse flow-sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00075">PointerAnalysis.h:75</a></div></div>
@@ -950,6 +952,8 @@ Additional Inherited Members</h2></td></tr>
950
952
 
951
953
  <p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">SVF::PointerAnalysis</a>.</p>
952
954
 
955
+ <p>Reimplemented in <a class="el" href="classSVF_1_1CFLAlias.html#a0575c3badff6a158a6043e3e940af507">SVF::CFLAlias</a>.</p>
956
+
953
957
  <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00463">463</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
954
958
  <div class="fragment"><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;{</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">alias</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V1),<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V2));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;}</div><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>
955
959
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_adaba5a41a60e32d18d964bdb8ae5b2df"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *V1, const Value *V2)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Value infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00463">PointerAnalysisImpl.cpp:463</a></div></div>
@@ -996,6 +1000,8 @@ Additional Inherited Members</h2></td></tr>
996
1000
 
997
1001
  <p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#a0f712ead1f31750879948c36b2fc77cf">SVF::PointerAnalysis</a>.</p>
998
1002
 
1003
+ <p>Reimplemented in <a class="el" href="classSVF_1_1CFLAlias.html#afb96040a903b9b889fcf23b26cb4565a">SVF::CFLAlias</a>.</p>
1004
+
999
1005
  <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00472">472</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1000
1006
  <div class="fragment"><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;{</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">alias</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node1),<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node2));</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;}</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
1001
1007
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_adaba5a41a60e32d18d964bdb8ae5b2df"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *V1, const Value *V2)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Value infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00463">PointerAnalysisImpl.cpp:463</a></div></div>
@@ -1673,6 +1679,8 @@ Additional Inherited Members</h2></td></tr>
1673
1679
 
1674
1680
  <p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#ad9af9655a13f3faeaf265ba370d1f280">SVF::PointerAnalysis</a>.</p>
1675
1681
 
1682
+ <p>Reimplemented in <a class="el" href="classSVF_1_1CFLAlias.html#abcb07a089b7b1036d070c451a81cef5d">SVF::CFLAlias</a>.</p>
1683
+
1676
1684
  <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00103">103</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
1677
1685
  <div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-&gt;<a class="code" href="classSVF_1_1PTData.html#ab6146f5582946c08568f3a8d45e57b03">getRevPts</a>(nodeId);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00215">PointerAnalysisImpl.h:215</a></div></div>
1678
1686
  <div class="ttc" id="classSVF_1_1PTData_html_ab6146f5582946c08568f3a8d45e57b03"><div class="ttname"><a href="classSVF_1_1PTData.html#ab6146f5582946c08568f3a8d45e57b03">SVF::PTData::getRevPts</a></div><div class="ttdeci">virtual const KeySet &amp; getRevPts(const Data &amp;datum)=0</div><div class="ttdoc">Get reverse points-to set of a datum. </div></div>
@@ -1804,6 +1812,8 @@ Additional Inherited Members</h2></td></tr>
1804
1812
  <p>On the fly call graph construction. </p>
1805
1813
  <p>On the fly call graph construction callsites is candidate indirect callsites need to be analyzed based on points-to results newEdges is the new indirect call edges discovered </p>
1806
1814
 
1815
+ <p>Reimplemented in <a class="el" href="classSVF_1_1CFLAlias.html#a25b38896aef06dad19532f7678291b37">SVF::CFLAlias</a>.</p>
1816
+
1807
1817
  <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00383">383</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1808
1818
  <div class="fragment"><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;{</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = iter-&gt;first;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())))</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vtbl = <a class="code" href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">getVCallVtblPtr</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()));</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; assert(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aceb17dfbe137658625e16291127267d1">hasValueNode</a>(vtbl));</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vtblId = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vtbl);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">resolveCPPIndCalls</a>(cs, <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(vtblId), newEdges);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">resolveIndCalls</a>(iter-&gt;first,<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(iter-&gt;second),newEdges);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a8d128246f86f28fdf4981d91169ab440"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">SVF::PointerAnalysis::resolveIndCalls</a></div><div class="ttdeci">virtual void resolveIndCalls(const CallICFGNode *cs, const PointsTo &amp;target, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">Resolve indirect call edges. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00402">PointerAnalysis.cpp:402</a></div></div>
1809
1819
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aca6465c72effcaddeb34f55da4555754"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00260">CPPUtil.cpp:260</a></div></div>
@@ -2033,7 +2043,7 @@ Additional Inherited Members</h2></td></tr>
2033
2043
 
2034
2044
  <p>Update callgraph. This should be implemented by its subclass. </p>
2035
2045
 
2036
- <p>Reimplemented in <a class="el" href="classSVF_1_1Andersen.html#a6c60b761ddf3d6bf08c8a9c3f6fd9f0b">SVF::Andersen</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#a9d81537ec20196315a9a2541477ec5bf">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1AndersenSCD.html#a512c636bdaafe6a3ac8f0cc29392c573">SVF::AndersenSCD</a>, and <a class="el" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">SVF::AndersenBase</a>.</p>
2046
+ <p>Reimplemented in <a class="el" href="classSVF_1_1Andersen.html#a6c60b761ddf3d6bf08c8a9c3f6fd9f0b">SVF::Andersen</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#a9d81537ec20196315a9a2541477ec5bf">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1CFLAlias.html#a9637bcb592d250b5556b242d2ffc88fa">SVF::CFLAlias</a>, <a class="el" href="classSVF_1_1AndersenSCD.html#a512c636bdaafe6a3ac8f0cc29392c573">SVF::AndersenSCD</a>, and <a class="el" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">SVF::AndersenBase</a>.</p>
2037
2047
 
2038
2048
  <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00172">172</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
2039
2049
  <div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Virtual function not implemented!&quot;</span>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div></div><!-- fragment -->