svf-tools 1.0.317 → 1.0.321

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 (547) hide show
  1. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +6 -6
  2. package/SVF-doxygen/html/html/Andersen_8cpp.html +1 -1
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
  5. package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +138 -0
  6. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +178 -0
  7. package/SVF-doxygen/html/html/CHGBuilder_8h.html +95 -0
  8. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +109 -0
  9. package/SVF-doxygen/html/html/CHG_8cpp.html +10 -64
  10. package/SVF-doxygen/html/html/CHG_8cpp_source.html +31 -108
  11. package/SVF-doxygen/html/html/CHG_8h.html +9 -3
  12. package/SVF-doxygen/html/html/CHG_8h_source.html +82 -76
  13. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +37 -33
  14. package/SVF-doxygen/html/html/ConsG_8h_source.html +32 -32
  15. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  16. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  17. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/DCHG_8h.html +1 -1
  19. package/SVF-doxygen/html/html/DCHG_8h_source.html +8 -8
  20. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
  21. package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
  23. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
  24. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +12 -12
  25. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/ExternalPAG_8cpp.html +1 -1
  27. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +22 -22
  28. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  31. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +4 -4
  32. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +7 -7
  33. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +11 -11
  34. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +3 -3
  35. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +16 -16
  36. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
  37. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +3 -3
  39. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -21
  45. package/SVF-doxygen/html/html/IRGraph_8h_source.html +37 -40
  46. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
  47. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  48. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
  49. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +18 -18
  51. package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
  52. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  53. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  54. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  55. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +1 -1
  56. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
  57. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
  58. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  59. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +11 -11
  60. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +13 -13
  61. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +5 -5
  62. package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +1 -2
  63. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +30 -33
  64. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +31 -31
  65. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
  66. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  67. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +1 -1
  68. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +9 -9
  69. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +48 -48
  70. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +36 -36
  71. package/SVF-doxygen/html/html/SVFG_8h_source.html +25 -25
  72. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp.html +0 -1
  73. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -6
  74. package/SVF-doxygen/html/html/SVFIRBuilder_8h.html +1 -7
  75. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +90 -85
  76. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +70 -62
  77. package/SVF-doxygen/html/html/SVFIR_8h_source.html +168 -182
  78. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +39 -23
  79. package/SVF-doxygen/html/html/SVFStatements_8h.html +6 -0
  80. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +146 -94
  81. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +2 -2
  82. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  83. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +5 -5
  84. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
  86. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  88. package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  90. package/SVF-doxygen/html/html/TypeAnalysis_8cpp.html +1 -1
  91. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +9 -9
  92. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +7 -7
  93. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +1 -1
  94. package/SVF-doxygen/html/html/VFGNode_8h.html +2 -0
  95. package/SVF-doxygen/html/html/VFGNode_8h_source.html +143 -126
  96. package/SVF-doxygen/html/html/VFG_8cpp_source.html +136 -129
  97. package/SVF-doxygen/html/html/VFG_8h_source.html +144 -133
  98. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +6 -6
  99. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  100. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
  101. package/SVF-doxygen/html/html/annotated.html +265 -261
  102. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +75 -74
  103. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +10 -9
  104. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +75 -74
  105. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +10 -9
  106. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +73 -72
  107. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +31 -30
  108. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +75 -74
  109. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +35 -34
  110. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge-members.html +1 -1
  111. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +5 -5
  112. package/SVF-doxygen/html/html/classSVF_1_1AddrPE-members.html +42 -39
  113. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +27 -22
  114. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +77 -76
  115. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +23 -22
  116. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  117. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +18 -18
  118. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +8 -8
  119. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +6 -6
  121. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode-members.html +69 -68
  122. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +30 -29
  123. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +20 -20
  124. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE-members.html +49 -28
  125. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +295 -34
  126. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.png +0 -0
  127. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode-members.html +76 -75
  128. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +12 -11
  129. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +70 -22
  130. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +633 -89
  131. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.png +0 -0
  132. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +164 -0
  133. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +694 -0
  134. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.png +0 -0
  135. package/SVF-doxygen/html/html/classSVF_1_1CHEdge-members.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1CHEdge.html +15 -15
  137. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder-members.html +100 -0
  138. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +777 -0
  139. package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +31 -46
  140. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +103 -651
  141. package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +54 -54
  142. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge-members.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +2 -2
  144. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge-members.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +4 -4
  146. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +48 -45
  149. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +33 -28
  150. package/SVF-doxygen/html/html/classSVF_1_1CmpPE-members.html +49 -28
  151. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +295 -34
  152. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.png +0 -0
  153. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode-members.html +79 -78
  154. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +13 -12
  155. package/SVF-doxygen/html/html/classSVF_1_1CommonCHGraph.html +11 -11
  156. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +6 -6
  157. package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge-members.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge.html +2 -2
  159. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +90 -86
  160. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +7 -7
  161. package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge-members.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1CopyPE-members.html +45 -42
  164. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +27 -22
  165. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +80 -79
  166. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +11 -10
  167. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +2 -2
  169. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
  170. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  171. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +7 -7
  172. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +4 -4
  173. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +14 -14
  174. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge-members.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +4 -4
  176. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode-members.html +72 -71
  177. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +10 -9
  178. package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +22 -22
  179. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +5 -5
  181. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +22 -22
  182. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +9 -9
  183. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +14 -14
  184. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +76 -75
  185. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +10 -9
  186. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +76 -75
  187. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +10 -9
  188. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode-members.html +76 -75
  189. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +38 -37
  190. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode-members.html +79 -78
  191. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +38 -37
  192. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
  193. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge-members.html +1 -1
  194. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +11 -11
  195. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
  196. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +8 -7
  197. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  198. package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge-members.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge.html +2 -2
  200. package/SVF-doxygen/html/html/classSVF_1_1GepPE-members.html +45 -42
  201. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +22 -17
  202. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +80 -79
  203. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +23 -22
  204. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +1 -1
  205. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +2 -2
  206. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge-members.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +2 -2
  208. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +4 -4
  209. package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +36 -37
  210. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +149 -163
  211. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge-members.html +1 -1
  212. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  213. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +88 -87
  214. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +10 -9
  215. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +86 -85
  216. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +46 -45
  217. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +2 -2
  219. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge-members.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +4 -4
  221. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge-members.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  223. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +85 -84
  224. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +10 -9
  225. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode-members.html +84 -83
  226. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +33 -32
  227. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  228. package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge-members.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge.html +2 -2
  230. package/SVF-doxygen/html/html/classSVF_1_1LoadPE-members.html +45 -42
  231. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +27 -22
  232. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +80 -79
  233. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +11 -10
  234. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +24 -24
  235. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +70 -69
  236. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +10 -9
  237. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +81 -80
  238. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +10 -9
  239. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
  240. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
  241. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
  242. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +9 -9
  243. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +143 -0
  244. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +669 -0
  245. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
  246. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +2 -2
  248. package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE-members.html +47 -44
  249. package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +34 -29
  250. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode-members.html +66 -65
  251. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +37 -36
  252. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +6 -6
  253. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +17 -16
  254. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode-members.html +77 -76
  255. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +44 -43
  256. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +1 -1
  257. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +2 -2
  258. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +11 -11
  259. package/SVF-doxygen/html/html/classSVF_1_1PhiPE-members.html +153 -0
  260. package/SVF-doxygen/html/html/classSVF_1_1PhiPE.html +717 -0
  261. package/SVF-doxygen/html/html/classSVF_1_1PhiPE.png +0 -0
  262. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +77 -79
  263. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge-members.html +1 -1
  265. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +2 -2
  266. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge-members.html +1 -1
  267. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +4 -4
  268. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +1 -1
  269. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  270. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +48 -45
  271. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +33 -28
  272. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +90 -86
  273. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +81 -71
  274. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +16 -16
  275. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +105 -101
  276. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +149 -138
  277. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +106 -119
  278. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +621 -1090
  279. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +14 -12
  280. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +401 -288
  281. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +41 -35
  282. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +174 -37
  283. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
  284. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +14 -14
  286. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
  287. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +76 -75
  288. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +14 -13
  289. package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge-members.html +1 -1
  290. package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge.html +2 -2
  291. package/SVF-doxygen/html/html/classSVF_1_1StorePE-members.html +45 -42
  292. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +27 -22
  293. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +80 -79
  294. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +11 -10
  295. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge-members.html +1 -1
  296. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +2 -2
  297. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +49 -46
  298. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +22 -17
  299. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +49 -46
  300. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +22 -17
  301. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +1 -1
  303. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +2 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +2 -2
  306. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  308. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +12 -12
  309. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +9 -9
  310. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE-members.html +56 -43
  311. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +329 -30
  312. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode-members.html +34 -32
  313. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +63 -30
  314. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +52 -48
  315. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +515 -441
  316. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge-members.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +4 -4
  318. package/SVF-doxygen/html/html/classSVF_1_1VFGNode-members.html +65 -64
  319. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +22 -18
  320. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.png +0 -0
  321. package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge-members.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +2 -2
  323. package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE-members.html +47 -44
  324. package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +28 -23
  325. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +11 -11
  326. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +7 -7
  327. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +8 -8
  328. package/SVF-doxygen/html/html/classes.html +95 -94
  329. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  330. package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -2
  331. package/SVF-doxygen/html/html/dir_5840dc76920ee0f379cd88b55fa041fd.html +1 -1
  332. package/SVF-doxygen/html/html/dir_770a542efe75a1b68c109cb4e4290224.html +1 -3
  333. package/SVF-doxygen/html/html/dir_fa02919a30fec2d2c2d591b4d920d648.html +2 -2
  334. package/SVF-doxygen/html/html/files.html +18 -19
  335. package/SVF-doxygen/html/html/functions_0x7e.html +0 -3
  336. package/SVF-doxygen/html/html/functions_a.html +35 -36
  337. package/SVF-doxygen/html/html/functions_b.html +24 -17
  338. package/SVF-doxygen/html/html/functions_c.html +44 -43
  339. package/SVF-doxygen/html/html/functions_d.html +0 -3
  340. package/SVF-doxygen/html/html/functions_e.html +7 -9
  341. package/SVF-doxygen/html/html/functions_eval_b.html +4 -0
  342. package/SVF-doxygen/html/html/functions_eval_p.html +3 -0
  343. package/SVF-doxygen/html/html/functions_f.html +6 -15
  344. package/SVF-doxygen/html/html/functions_func.html +40 -38
  345. package/SVF-doxygen/html/html/functions_func_0x7e.html +0 -3
  346. package/SVF-doxygen/html/html/functions_func_b.html +14 -8
  347. package/SVF-doxygen/html/html/functions_func_c.html +32 -28
  348. package/SVF-doxygen/html/html/functions_func_d.html +0 -3
  349. package/SVF-doxygen/html/html/functions_func_e.html +0 -3
  350. package/SVF-doxygen/html/html/functions_func_g.html +92 -60
  351. package/SVF-doxygen/html/html/functions_func_h.html +3 -9
  352. package/SVF-doxygen/html/html/functions_func_i.html +12 -16
  353. package/SVF-doxygen/html/html/functions_func_m.html +6 -0
  354. package/SVF-doxygen/html/html/functions_func_o.html +11 -4
  355. package/SVF-doxygen/html/html/functions_func_p.html +6 -6
  356. package/SVF-doxygen/html/html/functions_func_r.html +3 -4
  357. package/SVF-doxygen/html/html/functions_func_s.html +6 -9
  358. package/SVF-doxygen/html/html/functions_func_t.html +14 -11
  359. package/SVF-doxygen/html/html/functions_g.html +91 -59
  360. package/SVF-doxygen/html/html/functions_h.html +2 -11
  361. package/SVF-doxygen/html/html/functions_i.html +12 -16
  362. package/SVF-doxygen/html/html/functions_l.html +6 -6
  363. package/SVF-doxygen/html/html/functions_m.html +9 -0
  364. package/SVF-doxygen/html/html/functions_n.html +6 -6
  365. package/SVF-doxygen/html/html/functions_o.html +31 -16
  366. package/SVF-doxygen/html/html/functions_p.html +23 -18
  367. package/SVF-doxygen/html/html/functions_r.html +4 -8
  368. package/SVF-doxygen/html/html/functions_rela.html +3 -0
  369. package/SVF-doxygen/html/html/functions_s.html +14 -16
  370. package/SVF-doxygen/html/html/functions_t.html +18 -15
  371. package/SVF-doxygen/html/html/functions_type_b.html +0 -6
  372. package/SVF-doxygen/html/html/functions_type_c.html +2 -7
  373. package/SVF-doxygen/html/html/functions_type_o.html +3 -0
  374. package/SVF-doxygen/html/html/functions_type_p.html +4 -1
  375. package/SVF-doxygen/html/html/functions_type_u.html +0 -6
  376. package/SVF-doxygen/html/html/functions_type_v.html +3 -0
  377. package/SVF-doxygen/html/html/functions_type_w.html +1 -0
  378. package/SVF-doxygen/html/html/functions_u.html +4 -13
  379. package/SVF-doxygen/html/html/functions_v.html +8 -5
  380. package/SVF-doxygen/html/html/functions_vars_a.html +0 -3
  381. package/SVF-doxygen/html/html/functions_vars_b.html +6 -3
  382. package/SVF-doxygen/html/html/functions_vars_c.html +5 -4
  383. package/SVF-doxygen/html/html/functions_vars_e.html +1 -2
  384. package/SVF-doxygen/html/html/functions_vars_f.html +0 -9
  385. package/SVF-doxygen/html/html/functions_vars_h.html +0 -3
  386. package/SVF-doxygen/html/html/functions_vars_m.html +3 -0
  387. package/SVF-doxygen/html/html/functions_vars_o.html +8 -3
  388. package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
  389. package/SVF-doxygen/html/html/functions_vars_r.html +0 -3
  390. package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
  391. package/SVF-doxygen/html/html/functions_vars_u.html +0 -3
  392. package/SVF-doxygen/html/html/functions_vars_v.html +3 -3
  393. package/SVF-doxygen/html/html/functions_w.html +9 -4
  394. package/SVF-doxygen/html/html/globals_d.html +0 -4
  395. package/SVF-doxygen/html/html/globals_e.html +6 -9
  396. package/SVF-doxygen/html/html/globals_func_d.html +0 -3
  397. package/SVF-doxygen/html/html/globals_func_e.html +6 -9
  398. package/SVF-doxygen/html/html/globals_func_g.html +2 -5
  399. package/SVF-doxygen/html/html/globals_g.html +0 -3
  400. package/SVF-doxygen/html/html/globals_o.html +0 -9
  401. package/SVF-doxygen/html/html/globals_p.html +1 -1
  402. package/SVF-doxygen/html/html/globals_r.html +3 -3
  403. package/SVF-doxygen/html/html/globals_s.html +3 -3
  404. package/SVF-doxygen/html/html/globals_vars.html +2 -5
  405. package/SVF-doxygen/html/html/globals_z.html +1 -1
  406. package/SVF-doxygen/html/html/hierarchy.html +105 -101
  407. package/SVF-doxygen/html/html/menudata.js +0 -1
  408. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  409. package/SVF-doxygen/html/html/namespaceSVF.html +27 -37
  410. package/SVF-doxygen/html/html/namespacemembers_p.html +0 -3
  411. package/SVF-doxygen/html/html/namespacemembers_type_p.html +0 -3
  412. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  413. package/SVF-doxygen/html/html/search/all_1.js +20 -21
  414. package/SVF-doxygen/html/html/search/all_10.js +11 -10
  415. package/SVF-doxygen/html/html/search/all_12.js +6 -7
  416. package/SVF-doxygen/html/html/search/all_13.js +13 -13
  417. package/SVF-doxygen/html/html/search/all_14.js +3 -3
  418. package/SVF-doxygen/html/html/search/all_15.js +2 -4
  419. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  420. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  421. package/SVF-doxygen/html/html/search/all_1a.js +1 -1
  422. package/SVF-doxygen/html/html/search/all_1b.js +0 -1
  423. package/SVF-doxygen/html/html/search/all_2.js +13 -10
  424. package/SVF-doxygen/html/html/search/all_3.js +15 -15
  425. package/SVF-doxygen/html/html/search/all_4.js +2 -4
  426. package/SVF-doxygen/html/html/search/all_5.js +3 -6
  427. package/SVF-doxygen/html/html/search/all_6.js +1 -4
  428. package/SVF-doxygen/html/html/search/all_7.js +34 -34
  429. package/SVF-doxygen/html/html/search/all_8.js +2 -5
  430. package/SVF-doxygen/html/html/search/all_9.js +4 -5
  431. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  432. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  433. package/SVF-doxygen/html/html/search/all_d.js +6 -3
  434. package/SVF-doxygen/html/html/search/all_e.js +6 -6
  435. package/SVF-doxygen/html/html/search/all_f.js +7 -8
  436. package/SVF-doxygen/html/html/search/classes_1.js +2 -0
  437. package/SVF-doxygen/html/html/search/classes_2.js +1 -0
  438. package/SVF-doxygen/html/html/search/classes_4.js +1 -2
  439. package/SVF-doxygen/html/html/search/classes_a.js +1 -0
  440. package/SVF-doxygen/html/html/search/classes_d.js +1 -0
  441. package/SVF-doxygen/html/html/search/enumvalues_1.js +1 -0
  442. package/SVF-doxygen/html/html/search/enumvalues_d.js +1 -0
  443. package/SVF-doxygen/html/html/search/files_2.js +2 -1
  444. package/SVF-doxygen/html/html/search/files_4.js +1 -3
  445. package/SVF-doxygen/html/html/search/functions_0.js +20 -20
  446. package/SVF-doxygen/html/html/search/functions_1.js +10 -8
  447. package/SVF-doxygen/html/html/search/functions_10.js +2 -3
  448. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  449. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  450. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  451. package/SVF-doxygen/html/html/search/functions_16.js +0 -1
  452. package/SVF-doxygen/html/html/search/functions_2.js +8 -8
  453. package/SVF-doxygen/html/html/search/functions_3.js +2 -4
  454. package/SVF-doxygen/html/html/search/functions_4.js +0 -2
  455. package/SVF-doxygen/html/html/search/functions_6.js +34 -34
  456. package/SVF-doxygen/html/html/search/functions_7.js +2 -4
  457. package/SVF-doxygen/html/html/search/functions_8.js +3 -4
  458. package/SVF-doxygen/html/html/search/functions_b.js +2 -0
  459. package/SVF-doxygen/html/html/search/functions_d.js +4 -6
  460. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  461. package/SVF-doxygen/html/html/search/functions_f.js +2 -2
  462. package/SVF-doxygen/html/html/search/related_0.js +1 -2
  463. package/SVF-doxygen/html/html/search/related_1.js +2 -1
  464. package/SVF-doxygen/html/html/search/related_2.js +1 -1
  465. package/SVF-doxygen/html/html/search/related_3.js +1 -2
  466. package/SVF-doxygen/html/html/search/related_4.js +2 -1
  467. package/SVF-doxygen/html/html/search/related_5.js +1 -4
  468. package/SVF-doxygen/html/html/search/related_6.js +4 -1
  469. package/SVF-doxygen/html/html/search/related_7.js +1 -5
  470. package/SVF-doxygen/html/html/search/related_8.js +5 -2
  471. package/SVF-doxygen/html/html/search/related_9.js +2 -1
  472. package/SVF-doxygen/html/html/search/related_a.html +26 -0
  473. package/SVF-doxygen/html/html/search/related_a.js +4 -0
  474. package/SVF-doxygen/html/html/search/searchdata.js +1 -1
  475. package/SVF-doxygen/html/html/search/typedefs_1.js +0 -2
  476. package/SVF-doxygen/html/html/search/typedefs_13.js +0 -2
  477. package/SVF-doxygen/html/html/search/typedefs_14.js +1 -0
  478. package/SVF-doxygen/html/html/search/typedefs_15.js +1 -1
  479. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -3
  480. package/SVF-doxygen/html/html/search/typedefs_d.js +2 -2
  481. package/SVF-doxygen/html/html/search/typedefs_e.js +1 -0
  482. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -2
  483. package/SVF-doxygen/html/html/search/variables_1.js +0 -1
  484. package/SVF-doxygen/html/html/search/variables_10.js +2 -1
  485. package/SVF-doxygen/html/html/search/variables_12.js +0 -1
  486. package/SVF-doxygen/html/html/search/variables_13.js +2 -1
  487. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  488. package/SVF-doxygen/html/html/search/variables_15.js +1 -2
  489. package/SVF-doxygen/html/html/search/variables_16.js +1 -1
  490. package/SVF-doxygen/html/html/search/variables_1a.js +1 -1
  491. package/SVF-doxygen/html/html/search/variables_2.js +2 -1
  492. package/SVF-doxygen/html/html/search/variables_3.js +2 -2
  493. package/SVF-doxygen/html/html/search/variables_4.js +0 -1
  494. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  495. package/SVF-doxygen/html/html/search/variables_6.js +1 -4
  496. package/SVF-doxygen/html/html/search/variables_8.js +0 -1
  497. package/SVF-doxygen/html/html/search/variables_b.js +1 -1
  498. package/SVF-doxygen/html/html/search/variables_d.js +2 -1
  499. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  500. package/SVF-doxygen/html/html/search/variables_f.js +2 -1
  501. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +14 -14
  502. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
  503. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
  504. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +18 -18
  505. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +11 -11
  506. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +29 -29
  507. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.html +2 -2
  508. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.html +1 -1
  509. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +1 -1
  510. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.html +3 -3
  511. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHNode_01_5_01_4.html +2 -2
  512. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.html +2 -2
  513. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.html +1 -1
  514. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +1 -1
  515. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +2 -2
  516. package/SVF-doxygen/html/html/svf-ex_8cpp.html +5 -6
  517. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +5 -5
  518. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  519. package/include/{SVF-FE → Graphs}/CHG.h +37 -20
  520. package/include/Graphs/GenericGraph.h +1 -1
  521. package/include/Graphs/IRGraph.h +6 -15
  522. package/include/Graphs/SVFGOPT.h +3 -2
  523. package/include/Graphs/VFG.h +42 -41
  524. package/include/Graphs/VFGNode.h +60 -7
  525. package/include/MemoryModel/SVFIR.h +93 -159
  526. package/include/MemoryModel/SVFStatements.h +253 -21
  527. package/include/SVF-FE/CHGBuilder.h +69 -0
  528. package/include/SVF-FE/DCHG.h +1 -1
  529. package/include/SVF-FE/SVFIRBuilder.h +21 -8
  530. package/lib/Graphs/CHG.cpp +280 -0
  531. package/lib/Graphs/ConsG.cpp +9 -0
  532. package/lib/Graphs/IRGraph.cpp +23 -8
  533. package/lib/Graphs/VFG.cpp +45 -19
  534. package/lib/MSSA/SVFGBuilder.cpp +3 -2
  535. package/lib/MemoryModel/PAGBuilderFromFile.cpp +9 -3
  536. package/lib/MemoryModel/PointerAnalysis.cpp +3 -5
  537. package/lib/MemoryModel/SVFIR.cpp +68 -12
  538. package/lib/MemoryModel/SVFStatements.cpp +65 -4
  539. package/lib/SVF-FE/{CHG.cpp → CHGBuilder.cpp} +82 -324
  540. package/lib/SVF-FE/SVFIRBuilder.cpp +58 -57
  541. package/lib/WPA/Andersen.cpp +1 -1
  542. package/lib/WPA/TypeAnalysis.cpp +1 -1
  543. package/package.json +1 -1
  544. package/tools/Example/svf-ex.cpp +1 -1
  545. package/include/Graphs/ExternalPAG.h +0 -147
  546. package/include/SVF-FE/CommonCHG.h +0 -49
  547. package/lib/Graphs/ExternalPAG.cpp +0 -623
@@ -1,623 +0,0 @@
1
- //===- ExternalPAG.cpp -- Program assignment graph ---------------------------//
2
-
3
- /*
4
- * ExternalPAG.cpp
5
- *
6
- * Created on: Sep 22, 2018
7
- * Author: Mohamad Barbar
8
- */
9
-
10
- #include <iostream>
11
- #include <fstream>
12
- #include <sstream>
13
-
14
- #include "MemoryModel/SVFIR.h"
15
- #include "Graphs/ExternalPAG.h"
16
- #include "Util/BasicTypes.h"
17
- #include "Graphs/ICFG.h"
18
-
19
- using namespace SVF;
20
- using namespace SVFUtil;
21
-
22
- llvm::cl::list<std::string> ExternalPAGArgs("extpags",
23
- llvm::cl::desc("ExternalPAGs to use during SVFIR construction (format: func1@/path/to/graph,func2@/foo,..."),
24
- llvm::cl::CommaSeparated);
25
-
26
- llvm::cl::list<std::string> DumpPAGFunctions("dump-function-pags",
27
- llvm::cl::desc("Dump SVFIR for functions"),
28
- llvm::cl::CommaSeparated);
29
-
30
-
31
- Map<const SVFFunction*, Map<int, PAGNode *>>
32
- ExternalPAG::functionToExternalPAGEntries;
33
- Map<const SVFFunction*, PAGNode *> ExternalPAG::functionToExternalPAGReturns;
34
-
35
- std::vector<std::pair<std::string, std::string>>
36
- ExternalPAG::parseExternalPAGs(llvm::cl::list<std::string> &extpagsArgs)
37
- {
38
- std::vector<std::pair<std::string, std::string>> parsedExternalPAGs;
39
- for (auto arg = extpagsArgs.begin(); arg != extpagsArgs.end();
40
- ++arg)
41
- {
42
- std::stringstream ss(*arg);
43
- std::string functionName;
44
- getline(ss, functionName, '@');
45
- std::string path;
46
- getline(ss, path);
47
- parsedExternalPAGs.push_back(
48
- std::pair<std::string, std::string>(functionName, path));
49
- }
50
-
51
- return parsedExternalPAGs;
52
- }
53
-
54
- void ExternalPAG::initialise(SVFModule*)
55
- {
56
- std::vector<std::pair<std::string, std::string>> parsedExternalPAGs
57
- = ExternalPAG::parseExternalPAGs(ExternalPAGArgs);
58
-
59
- // Build ext PAGs (and add them) first to use them in SVFIR construction.
60
- for (auto extpagPair= parsedExternalPAGs.begin();
61
- extpagPair != parsedExternalPAGs.end(); ++extpagPair)
62
- {
63
- std::string fname = extpagPair->first;
64
- std::string path = extpagPair->second;
65
-
66
- ExternalPAG extpag = ExternalPAG(fname);
67
- extpag.readFromFile(path);
68
- extpag.addExternalPAG(getFunction(fname));
69
- }
70
- }
71
-
72
- bool ExternalPAG::connectCallsiteToExternalPAG(CallSite *cs)
73
- {
74
- SVFIR *pag = SVFIR::getPAG();
75
-
76
- Function* function = cs->getCalledFunction();
77
- std::string functionName = function->getName().str();
78
-
79
- const SVFFunction* svfFun = LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(function);
80
- if (!hasExternalPAG(svfFun)) return false;
81
-
82
- Map<int, PAGNode*> argNodes =
83
- functionToExternalPAGEntries[svfFun];
84
- PAGNode *retNode = functionToExternalPAGReturns[svfFun];
85
-
86
- // Handle the return.
87
- if (llvm::isa<PointerType>(cs->getType()))
88
- {
89
- NodeID dstrec = pag->getValueNode(cs->getInstruction());
90
- // Does it actually return a pointer?
91
- if (SVFUtil::isa<PointerType>(function->getReturnType()))
92
- {
93
- if (retNode != nullptr)
94
- {
95
- CallBlockNode* icfgNode = pag->getICFG()->getCallBlockNode(cs->getInstruction());
96
- pag->addRetPE(retNode->getId(), dstrec, icfgNode);
97
- }
98
- }
99
- else
100
- {
101
- // This is a int2ptr cast during parameter passing
102
- pag->addBlackHoleAddrPE(dstrec);
103
- }
104
- }
105
-
106
- // Handle the arguments;
107
- // Actual arguments.
108
- CallSite::arg_iterator itA = cs->arg_begin(), ieA = cs->arg_end();
109
- Function::const_arg_iterator itF = function->arg_begin(),
110
- ieF = function->arg_end();
111
- // Formal arguments.
112
- size_t formalNodeIndex = 0;
113
-
114
- for (; itF != ieF ; ++itA, ++itF, ++formalNodeIndex)
115
- {
116
- if (itA == ieA)
117
- {
118
- // When unneeded args are left empty, e.g. Linux kernel.
119
- break;
120
- }
121
-
122
- // Formal arg node is from the extpag, actual arg node would come from
123
- // the main pag.
124
- PAGNode *formalArgNode = argNodes[formalNodeIndex];
125
- NodeID actualArgNodeId = pag->getValueNode(*itA);
126
-
127
- const llvm::Value *formalArg = &*itF;
128
- if (!SVFUtil::isa<PointerType>(formalArg->getType())) continue;
129
-
130
- if (SVFUtil::isa<PointerType>((*itA)->getType()))
131
- {
132
- CallBlockNode* icfgNode = pag->getICFG()->getCallBlockNode(cs->getInstruction());
133
- pag->addCallPE(actualArgNodeId, formalArgNode->getId(), icfgNode);
134
- }
135
- else
136
- {
137
- // This is a int2ptr cast during parameter passing
138
- //addFormalParamBlackHoleAddrEdge(formalArgNode->getId(), &*itF);
139
- assert(false && "you need to set the current location of this PAGEdge");
140
- pag->addBlackHoleAddrPE(formalArgNode->getId());
141
- }
142
- // TODO proofread.
143
- }
144
-
145
- return true;
146
- }
147
-
148
- bool ExternalPAG::hasExternalPAG(const SVFFunction* function)
149
- {
150
- bool ret = functionToExternalPAGEntries.find(function)
151
- != functionToExternalPAGEntries.end();
152
- return ret;
153
- }
154
-
155
- int getArgNo(const SVFFunction* function, const Value *arg)
156
- {
157
- int argNo = 0;
158
- for (auto it = function->getLLVMFun()->arg_begin(); it != function->getLLVMFun()->arg_end();
159
- ++it, ++argNo)
160
- {
161
- if (arg->getName() == it->getName()) return argNo;
162
- }
163
-
164
- return -1;
165
- }
166
-
167
- static void outputPAGNodeNoNewLine(raw_ostream &o, PAGNode *pagNode)
168
- {
169
- o << pagNode->getId() << " ";
170
- // TODO: is this check enough?
171
- if (!ObjPN::classof(pagNode)) o << "v";
172
- else o << "o";
173
- }
174
-
175
- static void outputPAGNode(raw_ostream &o, PAGNode *pagNode)
176
- {
177
- outputPAGNodeNoNewLine(o, pagNode);
178
- o << "\n";
179
- }
180
-
181
- static void outputPAGNode(raw_ostream &o, PAGNode *pagNode, int argno)
182
- {
183
- outputPAGNodeNoNewLine(o, pagNode);
184
- o << " " << argno;
185
- o << "\n";
186
- }
187
-
188
- static void outputPAGNode(raw_ostream &o, PAGNode *pagNode,
189
- std::string trail)
190
- {
191
- outputPAGNodeNoNewLine(o, pagNode);
192
- o << " " << trail;
193
- o << "\n";
194
- }
195
-
196
- static void outputPAGEdge(raw_ostream &o, PAGEdge *pagEdge)
197
- {
198
- NodeID srcId = pagEdge->getSrcID();
199
- NodeID dstId = pagEdge->getDstID();
200
- u32_t offset = 0;
201
- std::string edgeKind = "-";
202
-
203
- switch (pagEdge->getEdgeKind())
204
- {
205
- case PAGEdge::Addr:
206
- edgeKind = "addr";
207
- break;
208
- case PAGEdge::Copy:
209
- edgeKind = "copy";
210
- break;
211
- case PAGEdge::Store:
212
- edgeKind = "store";
213
- break;
214
- case PAGEdge::Load:
215
- edgeKind = "load";
216
- break;
217
- case PAGEdge::Call:
218
- edgeKind = "call";
219
- break;
220
- case PAGEdge::Ret:
221
- edgeKind = "ret";
222
- break;
223
- case PAGEdge::NormalGep:
224
- edgeKind = "gep";
225
- break;
226
- case PAGEdge::VariantGep:
227
- edgeKind = "variant-gep";
228
- break;
229
- case PAGEdge::Cmp:
230
- edgeKind = "cmp";
231
- break;
232
- case PAGEdge::BinaryOp:
233
- edgeKind = "binary-op";
234
- break;
235
- case PAGEdge::UnaryOp:
236
- edgeKind = "unary-op";
237
- break;
238
- case PAGEdge::ThreadFork:
239
- outs() << "dump-function-pags: found ThreadFork edge.\n";
240
- break;
241
- case PAGEdge::ThreadJoin:
242
- outs() << "dump-function-pags: found ThreadJoin edge.\n";
243
- break;
244
- }
245
-
246
- if (NormalGepPE::classof(pagEdge)) offset =
247
- static_cast<NormalGepPE *>(pagEdge)->getOffset();
248
-
249
- o << srcId << " " << edgeKind << " " << dstId << " " << offset << "\n";
250
- }
251
-
252
-
253
- /*!
254
- * Dump PAGs for the functions
255
- */
256
- void ExternalPAG::dumpFunctions(std::vector<std::string> functions)
257
- {
258
- SVFIR *pag = SVFIR::getPAG();
259
-
260
- // Naive: first map functions to entries in SVFIR, then dump them.
261
- Map<const SVFFunction*, std::vector<PAGNode *>> functionToPAGNodes;
262
-
263
- Set<PAGNode *> callDsts;
264
- for (SVFIR::iterator it = pag->begin(); it != pag->end(); ++it)
265
- {
266
- PAGNode *currNode = it->second;
267
- if (!currNode->hasOutgoingEdges(PAGEdge::PEDGEK::Call)) continue;
268
-
269
- // Where are these calls going?
270
- for (PAGEdge::PAGEdgeSetTy::iterator it =
271
- currNode->getOutgoingEdgesBegin(PAGEdge::PEDGEK::Call);
272
- it != currNode->getOutgoingEdgesEnd(PAGEdge::PEDGEK::Call); ++it)
273
- {
274
- CallPE *callEdge = static_cast<CallPE *>(*it);
275
- const Instruction *inst = callEdge->getCallInst()->getCallSite();
276
- :: Function* currFunction =
277
- static_cast<const CallInst *>(inst)->getCalledFunction();
278
-
279
- if (currFunction != nullptr)
280
- {
281
- // Otherwise, it would be an indirect call which we don't want.
282
- std::string currFunctionName = currFunction->getName().str();
283
-
284
- if (std::find(functions.begin(), functions.end(),
285
- currFunctionName) != functions.end())
286
- {
287
- // If the dst has already been added, we'd be duplicating
288
- // due to multiple actual->arg call edges.
289
- if (callDsts.find(callEdge->getDstNode()) == callDsts.end())
290
- {
291
- callDsts.insert(callEdge->getDstNode());
292
- const SVFFunction* svfFun = LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(currFunction);
293
- functionToPAGNodes[svfFun].push_back(callEdge->getDstNode());
294
- }
295
- }
296
- }
297
- }
298
- }
299
-
300
- for (auto it = functionToPAGNodes.begin(); it != functionToPAGNodes.end();
301
- ++it)
302
- {
303
- const SVFFunction* function = it->first;
304
- std::string functionName = it->first->getName().str();
305
-
306
- // The final nodes and edges we will print.
307
- Set<PAGNode *> nodes;
308
- Set<PAGEdge *> edges;
309
- // The search stack.
310
- std::stack<PAGNode *> todoNodes;
311
- // The arguments to the function.
312
- std::vector<PAGNode *> argNodes = it->second;
313
- PAGNode *retNode = nullptr;
314
-
315
-
316
- outs() << "SVFIR for function: " << functionName << "\n";
317
- for (auto node = argNodes.begin(); node != argNodes.end(); ++node)
318
- {
319
- todoNodes.push(*node);
320
- }
321
-
322
- while (!todoNodes.empty())
323
- {
324
- PAGNode *currNode = todoNodes.top();
325
- todoNodes.pop();
326
-
327
- // If the node has been dealt with, ignore it.
328
- if (nodes.find(currNode) != nodes.end()) continue;
329
- nodes.insert(currNode);
330
-
331
- // Return signifies the end of a path.
332
- if (RetPN::classof(currNode))
333
- {
334
- retNode = currNode;
335
- continue;
336
- }
337
-
338
- auto outEdges = currNode->getOutEdges();
339
- for (auto outEdge = outEdges.begin(); outEdge != outEdges.end();
340
- ++outEdge)
341
- {
342
- edges.insert(*outEdge);
343
- todoNodes.push((*outEdge)->getDstNode());
344
- }
345
- }
346
-
347
- for (auto node = nodes.begin(); node != nodes.end(); ++node)
348
- {
349
- // TODO: proper file.
350
- // Argument nodes use extra information: it's argument number.
351
- if (std::find(argNodes.begin(), argNodes.end(), *node)
352
- != argNodes.end())
353
- {
354
- outputPAGNode(outs(), *node,
355
- getArgNo(function, (*node)->getValue()));
356
- }
357
- else if (*node == retNode)
358
- {
359
- outputPAGNode(outs(), *node, "ret");
360
- }
361
- else
362
- {
363
- outputPAGNode(outs(), *node);
364
- }
365
- }
366
-
367
- for (auto edge = edges.begin(); edge != edges.end(); ++edge)
368
- {
369
- // TODO: proper file.
370
- outputPAGEdge(outs(), *edge);
371
- }
372
-
373
- outs() << "SVFIR for functionName " << functionName << " done\n";
374
- }
375
- }
376
-
377
- bool ExternalPAG::addExternalPAG(const SVFFunction* function)
378
- {
379
- // The function does not exist in the module - bad arg?
380
- // TODO: maybe some warning?
381
- if (function == nullptr) return false;
382
-
383
- SVFIR *pag = SVFIR::getPAG();
384
- if (hasExternalPAG(function)) return false;
385
-
386
- outs() << "Adding extpag " << this->getFunctionName() << "\n";
387
- // Temporarily trick SVF Module into thinking we are reading from
388
- // file to avoid setting BBs/Values (as these nodes don't have any).
389
- std::string oldSVFModuleFileName = SVFModule::pagFileName();
390
- SVFModule::setPagFromTXT("tmp");
391
-
392
- // We need: the new nodes.
393
- // : the new edges.
394
- // : to map function names to the entry nodes.
395
- // : to map function names to the return node.
396
-
397
- // To create the new edges.
398
- Map<NodeID, PAGNode *> extToNewNodes;
399
-
400
- // Add the value nodes.
401
- for (auto extNodeIt = this->getValueNodes().begin();
402
- extNodeIt != this->getValueNodes().end(); ++extNodeIt)
403
- {
404
- NodeID newNodeId = pag->addDummyValNode();
405
- extToNewNodes[*extNodeIt] = pag->getGNode(newNodeId);
406
- }
407
-
408
- // Add the object nodes.
409
- for (auto extNodeIt = this->getObjectNodes().begin();
410
- extNodeIt != this->getObjectNodes().end(); ++extNodeIt)
411
- {
412
- // TODO: fix obj node - there's more to it?
413
- NodeID newNodeId = pag->addDummyObjNode();
414
- extToNewNodes[*extNodeIt] = pag->getGNode(newNodeId);
415
- }
416
-
417
- // Add the edges.
418
- for (auto extEdgeIt = this->getEdges().begin();
419
- extEdgeIt != this->getEdges().end(); ++extEdgeIt)
420
- {
421
- NodeID extSrcId = std::get<0>(*extEdgeIt);
422
- NodeID extDstId = std::get<1>(*extEdgeIt);
423
- std::string extEdgeType = std::get<2>(*extEdgeIt);
424
- int extOffsetOrCSId = std::get<3>(*extEdgeIt);
425
-
426
- PAGNode *srcNode = extToNewNodes[extSrcId];
427
- PAGNode *dstNode = extToNewNodes[extDstId];
428
- NodeID srcId = srcNode->getId();
429
- NodeID dstId = dstNode->getId();
430
-
431
- if (extEdgeType == "addr")
432
- {
433
- pag->addAddrPE(srcId, dstId);
434
- }
435
- else if (extEdgeType == "copy")
436
- {
437
- pag->addCopyPE(srcId, dstId);
438
- }
439
- else if (extEdgeType == "load")
440
- {
441
- pag->addLoadPE(srcId, dstId);
442
- }
443
- else if (extEdgeType == "store")
444
- {
445
- pag->addStorePE(srcId, dstId, nullptr);
446
- }
447
- else if (extEdgeType == "gep")
448
- {
449
- pag->addNormalGepPE(srcId, dstId, LocationSet(extOffsetOrCSId));
450
- }
451
- else if (extEdgeType == "variant-gep")
452
- {
453
- pag->addVariantGepPE(srcId, dstId);
454
- }
455
- else if (extEdgeType == "call")
456
- {
457
- pag->addEdge(srcNode, dstNode, new CallPE(srcNode, dstNode, nullptr));
458
- }
459
- else if (extEdgeType == "ret")
460
- {
461
- pag->addEdge(srcNode, dstNode, new RetPE(srcNode, dstNode, nullptr));
462
- }
463
- else if (extEdgeType == "cmp")
464
- {
465
- pag->addCmpPE(srcId, dstId);
466
- }
467
- else if (extEdgeType == "binary-op")
468
- {
469
- pag->addBinaryOPPE(srcId, dstId);
470
- }
471
- else if (extEdgeType == "unary-op")
472
- {
473
- pag->addUnaryOPPE(srcId, dstId);
474
- }
475
- else
476
- {
477
- outs() << "Bad edge type found during extpag addition\n";
478
- }
479
- }
480
-
481
- // Record the arg nodes.
482
- Map<int, PAGNode *> argNodes;
483
- for (auto argNodeIt = this->getArgNodes().begin();
484
- argNodeIt != this->getArgNodes().end(); ++argNodeIt)
485
- {
486
- int index = argNodeIt->first;
487
- NodeID extNodeId = argNodeIt->second;
488
- argNodes[index] = extToNewNodes[extNodeId];
489
- }
490
-
491
- functionToExternalPAGEntries[function] = argNodes;
492
-
493
- // Record the return node.
494
- if (this->hasReturnNode())
495
- {
496
- functionToExternalPAGReturns[function] =
497
- extToNewNodes[this->getReturnNode()];
498
- }
499
-
500
- // Put it back as if nothing happened.
501
- SVFModule::setPagFromTXT(oldSVFModuleFileName);
502
-
503
- return true;
504
- }
505
-
506
- // Very similar implementation to the PAGBuilderFromFile.
507
- void ExternalPAG::readFromFile(std::string filename)
508
- {
509
- std::string line;
510
- std::ifstream pagFile(filename.c_str());
511
-
512
- if (!pagFile.is_open())
513
- {
514
- outs() << "ExternalPAG::buildFromFile: could not open " << filename
515
- << "\n";
516
- return;
517
- }
518
-
519
- while (pagFile.good())
520
- {
521
- std::getline(pagFile, line);
522
-
523
- Size_t tokenCount = 0;
524
- std::string tmps;
525
- std::istringstream ss(line);
526
- while (ss.good())
527
- {
528
- ss >> tmps;
529
- tokenCount++;
530
- }
531
-
532
- if (tokenCount == 0)
533
- {
534
- // Empty line.
535
- continue;
536
- }
537
-
538
- if (tokenCount == 2 || tokenCount == 3)
539
- {
540
- // It's a node.
541
- NodeID nodeId;
542
- std::string nodeType;
543
- std::istringstream ss(line);
544
- ss >> nodeId;
545
- ss >> nodeType;
546
-
547
- if (nodeType == "v")
548
- {
549
- valueNodes.insert(nodeId);
550
- }
551
- else if (nodeType == "o")
552
- {
553
- objectNodes.insert(nodeId);
554
- }
555
- else
556
- {
557
- assert(false
558
- && "format not supported, please specify node type");
559
- }
560
-
561
-
562
- if (tokenCount == 3)
563
- {
564
- // If there are 3 tokens, it should be 0, 1, 2, ... or ret.
565
- std::string argNoOrRet;
566
- ss >> argNoOrRet;
567
-
568
- if (argNoOrRet == "ret")
569
- {
570
- setReturnNode(nodeId);
571
- }
572
- else if (std::all_of(argNoOrRet.begin(), argNoOrRet.end(),
573
- ::isdigit))
574
- {
575
- int argNo = std::stoi(argNoOrRet);
576
- argNodes[argNo] = nodeId;
577
- }
578
- else
579
- {
580
- assert(false
581
- && "format not supported, not arg number or ret");
582
- }
583
-
584
- }
585
- }
586
- else if (tokenCount == 4)
587
- {
588
- // It's an edge
589
- NodeID nodeSrc;
590
- NodeID nodeDst;
591
- Size_t offsetOrCSId;
592
- std::string edge;
593
- std::istringstream ss(line);
594
- ss >> nodeSrc;
595
- ss >> edge;
596
- ss >> nodeDst;
597
- ss >> offsetOrCSId;
598
-
599
- edges.insert(
600
- std::tuple<NodeID, NodeID, std::string, int>(nodeSrc, nodeDst,
601
- edge,
602
- offsetOrCSId));
603
- }
604
- else
605
- {
606
- if (!line.empty())
607
- {
608
- outs() << "format not supported, token count = "
609
- << tokenCount << "\n";
610
- assert(false && "format not supported");
611
- }
612
- }
613
- }
614
-
615
- /*
616
- TODO: might need to include elsewhere.
617
- /// new gep node's id from lower bound, nodeNum may not reflect the total nodes
618
- u32_t lower_bound = 1000;
619
- for(u32_t i = 0; i < lower_bound; i++)
620
- pag->incNodeNum();
621
- */
622
- }
623
-