svf-tools 1.0.587 → 1.0.588

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 (536) hide show
  1. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +5 -5
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +7 -7
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +5 -5
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +9 -9
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +18 -18
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +10 -10
  9. package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
  10. package/SVF-doxygen/html/html/BasicTypes_8cpp_source.html +5 -5
  11. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +2 -2
  12. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +5 -5
  13. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +4 -4
  14. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +3 -3
  16. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +12 -12
  17. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +10 -10
  18. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +3 -3
  20. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +6 -6
  21. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +1 -1
  25. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +25 -25
  26. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
  27. package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
  28. package/SVF-doxygen/html/html/CHG_8cpp_source.html +12 -12
  29. package/SVF-doxygen/html/html/CHG_8h_source.html +6 -6
  30. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +2 -2
  31. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +26 -26
  32. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +4 -4
  33. package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
  34. package/SVF-doxygen/html/html/CSC_8h_source.html +4 -4
  35. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +6 -6
  36. package/SVF-doxygen/html/html/Casting_8h.html +1 -0
  37. package/SVF-doxygen/html/html/Casting_8h_source.html +42 -42
  38. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +6 -6
  39. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
  40. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  42. package/SVF-doxygen/html/html/ConsG_8h_source.html +4 -4
  43. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +21 -21
  44. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +11 -11
  45. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
  47. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +5 -5
  48. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +27 -27
  49. package/SVF-doxygen/html/html/DCHG_8h_source.html +13 -13
  50. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +12 -12
  51. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  52. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  53. package/SVF-doxygen/html/html/DDAPass_8h_source.html +4 -4
  54. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
  55. package/SVF-doxygen/html/html/DDAStat_8h_source.html +2 -2
  56. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
  57. package/SVF-doxygen/html/html/DPItem_8h_source.html +5 -5
  58. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
  59. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +11 -11
  60. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  61. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  62. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +5 -5
  63. package/SVF-doxygen/html/html/ExeState_8h_source.html +4 -4
  64. package/SVF-doxygen/html/html/ExtAPI_8cpp.html +1 -1
  65. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +8 -8
  66. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
  67. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +8 -8
  68. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +6 -6
  69. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +7 -7
  71. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +13 -13
  72. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
  73. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +13 -13
  74. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +7 -7
  75. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
  76. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +5 -5
  77. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  79. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  80. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +12 -12
  81. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +3 -3
  82. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
  83. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +5 -5
  84. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +10 -10
  86. package/SVF-doxygen/html/html/ICFG_8h_source.html +5 -5
  87. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +12 -12
  88. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +4 -4
  89. package/SVF-doxygen/html/html/IRGraph_8h_source.html +6 -6
  90. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +8 -8
  91. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +28 -28
  92. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +7 -7
  93. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +26 -26
  94. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +18 -18
  95. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  96. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  97. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +8 -8
  98. package/SVF-doxygen/html/html/LocationSet_8h_source.html +5 -5
  99. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +16 -16
  100. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +10 -10
  101. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +15 -15
  102. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
  103. package/SVF-doxygen/html/html/MHP_8cpp.html +3 -3
  104. package/SVF-doxygen/html/html/MHP_8cpp_source.html +25 -26
  105. package/SVF-doxygen/html/html/MHP_8h_source.html +10 -10
  106. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -4
  107. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +9 -9
  108. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +8 -8
  109. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +21 -21
  110. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +10 -10
  111. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +7 -7
  112. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  113. package/SVF-doxygen/html/html/MTA_8cpp_source.html +14 -14
  114. package/SVF-doxygen/html/html/MTA_8h_source.html +7 -7
  115. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  116. package/SVF-doxygen/html/html/MemPartition_8h_source.html +3 -3
  117. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +20 -20
  118. package/SVF-doxygen/html/html/MemRegion_8h_source.html +8 -8
  119. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +17 -17
  120. package/SVF-doxygen/html/html/MemSSA_8h_source.html +7 -7
  121. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  122. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
  123. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +3 -3
  124. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  125. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  126. package/SVF-doxygen/html/html/PCG_8cpp_source.html +11 -11
  127. package/SVF-doxygen/html/html/PCG_8h_source.html +7 -7
  128. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +4 -4
  129. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +7 -7
  130. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
  131. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +3 -3
  132. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  133. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +18 -18
  134. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +19 -19
  135. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +59 -59
  136. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +81 -82
  137. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  138. package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
  139. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
  140. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
  141. package/SVF-doxygen/html/html/SCC_8h_source.html +2 -2
  142. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +5 -1
  143. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +85 -85
  144. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +23 -27
  145. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +69 -70
  146. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  147. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
  148. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +2 -2
  149. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +4 -4
  150. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +3 -3
  151. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +4 -4
  152. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
  153. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +3 -3
  154. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +4 -4
  155. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +8 -8
  156. package/SVF-doxygen/html/html/SVFG_8h_source.html +4 -4
  157. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +56 -56
  158. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +47 -47
  159. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
  160. package/SVF-doxygen/html/html/SVFIR_8h_source.html +8 -8
  161. package/SVF-doxygen/html/html/SVFLoop_8h_source.html +2 -2
  162. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +3 -3
  163. package/SVF-doxygen/html/html/SVFModule_8h_source.html +13 -13
  164. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +5 -5
  165. package/SVF-doxygen/html/html/SVFStat_8h_source.html +1 -1
  166. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
  167. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +10 -10
  168. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +14 -14
  169. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +16 -16
  170. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  171. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +8 -8
  172. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +4 -4
  173. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
  174. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +4 -4
  175. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +14 -14
  176. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +8 -8
  177. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +10 -10
  178. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
  179. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  180. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +6 -6
  181. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +3 -3
  182. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  183. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +3 -3
  184. package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
  185. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +40 -40
  186. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +6 -6
  187. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +16 -16
  188. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
  189. package/SVF-doxygen/html/html/TCT_8cpp_source.html +20 -21
  190. package/SVF-doxygen/html/html/TCT_8h_source.html +16 -16
  191. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  192. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +8 -8
  193. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +9 -9
  194. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +6 -6
  195. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +8 -8
  196. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +5 -5
  197. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -14
  198. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +97 -97
  199. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  200. package/SVF-doxygen/html/html/VFGNode_8h_source.html +7 -7
  201. package/SVF-doxygen/html/html/VFG_8cpp_source.html +10 -10
  202. package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
  203. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
  204. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +13 -13
  205. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +6 -6
  206. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +1 -1
  207. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +9 -9
  208. package/SVF-doxygen/html/html/WPAPass_8h_source.html +6 -6
  209. package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
  210. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  211. package/SVF-doxygen/html/html/WorkList_8h_source.html +2 -2
  212. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
  213. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  214. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  215. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  216. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +2 -2
  221. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +249 -250
  223. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +37 -39
  224. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +216 -217
  225. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -11
  226. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +259 -260
  227. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +15 -17
  228. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +271 -272
  229. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +8 -10
  230. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +14 -14
  231. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +257 -258
  232. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +6 -8
  233. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  234. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +164 -165
  236. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +31 -33
  237. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  239. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  240. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +2 -2
  241. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +4 -4
  242. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +6 -6
  243. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +191 -192
  244. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +17 -19
  245. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +185 -186
  246. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +9 -11
  247. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  248. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +2 -2
  249. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +189 -190
  250. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +2 -4
  251. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +50 -50
  252. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +8 -8
  253. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +5 -5
  254. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  255. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
  256. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
  257. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +2 -2
  258. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  260. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +36 -36
  261. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  263. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +153 -154
  264. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +17 -19
  265. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
  266. package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
  267. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +4 -4
  268. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
  269. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +255 -256
  271. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +46 -48
  272. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  273. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  274. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +4 -4
  275. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +2 -2
  276. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  277. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  279. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +72 -72
  280. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +7 -7
  281. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +15 -15
  282. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +7 -7
  283. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +27 -27
  284. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  286. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +3 -3
  287. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  288. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  289. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +8 -8
  290. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +12 -12
  291. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  292. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +283 -284
  293. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -5
  294. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +249 -250
  295. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +27 -29
  296. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +274 -275
  297. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +67 -69
  298. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +14 -14
  299. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +35 -36
  300. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  301. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
  303. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
  305. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  306. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +5 -5
  307. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  308. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  309. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  312. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +4 -4
  313. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +1 -1
  314. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +4 -4
  315. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +17 -17
  316. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  318. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
  319. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +10 -10
  320. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
  321. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  323. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +2 -2
  324. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  325. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  326. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
  327. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  328. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +2 -2
  329. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
  330. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
  331. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  332. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
  333. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +8 -8
  334. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +51 -51
  335. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  336. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  337. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  338. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +9 -9
  339. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +67 -67
  340. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +19 -19
  341. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +50 -51
  342. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +38 -38
  343. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  344. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  345. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +16 -16
  346. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +15 -15
  347. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +44 -44
  348. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +25 -25
  349. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +8 -8
  350. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  351. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +50 -50
  352. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
  353. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -3
  354. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
  355. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +9 -9
  356. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  357. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
  358. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  359. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +26 -26
  361. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  362. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
  363. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +5 -5
  364. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  365. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
  366. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
  367. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
  368. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
  369. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
  370. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
  371. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  372. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +120 -121
  373. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +249 -267
  374. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
  375. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +7 -7
  376. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +11 -11
  377. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  378. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
  379. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +2 -2
  380. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
  381. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  382. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
  383. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +4 -4
  384. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +97 -97
  385. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +12 -12
  386. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +7 -7
  387. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +4 -4
  388. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +4 -4
  389. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +4 -4
  390. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +142 -142
  391. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
  392. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +6 -6
  393. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +6 -6
  394. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  395. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
  396. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +7 -7
  397. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +35 -35
  398. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +10 -10
  399. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  400. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +10 -10
  401. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +1 -1
  402. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +228 -229
  403. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +2 -4
  404. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  405. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  406. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  407. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +71 -71
  408. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +29 -29
  409. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +50 -51
  410. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  411. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  412. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
  413. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +21 -21
  414. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +4 -4
  415. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
  416. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
  417. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
  418. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +221 -222
  419. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +16 -18
  420. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  421. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  422. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
  423. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +12 -12
  424. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  425. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  426. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  427. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
  428. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +324 -325
  429. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +39 -41
  430. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +10 -10
  431. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  432. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
  433. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
  434. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +9 -9
  435. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
  436. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
  437. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +1 -1
  438. package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
  439. package/SVF-doxygen/html/html/functions_a.html +5 -8
  440. package/SVF-doxygen/html/html/functions_func_i.html +3 -3
  441. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  442. package/SVF-doxygen/html/html/functions_i.html +2 -2
  443. package/SVF-doxygen/html/html/functions_l.html +8 -8
  444. package/SVF-doxygen/html/html/functions_n.html +4 -4
  445. package/SVF-doxygen/html/html/functions_o.html +8 -8
  446. package/SVF-doxygen/html/html/functions_p.html +14 -16
  447. package/SVF-doxygen/html/html/functions_r.html +2 -4
  448. package/SVF-doxygen/html/html/functions_s.html +7 -7
  449. package/SVF-doxygen/html/html/functions_type.html +0 -3
  450. package/SVF-doxygen/html/html/functions_v.html +6 -6
  451. package/SVF-doxygen/html/html/functions_w.html +11 -11
  452. package/SVF-doxygen/html/html/namespaceSVF.html +156 -174
  453. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +55 -55
  454. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +40 -40
  455. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +46 -46
  456. package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
  457. package/SVF-doxygen/html/html/namespacemembers_type_s.html +0 -3
  458. package/SVF-doxygen/html/html/search/all_1.js +0 -1
  459. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  460. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  461. package/SVF-doxygen/html/html/search/all_12.js +5 -6
  462. package/SVF-doxygen/html/html/search/all_13.js +4 -4
  463. package/SVF-doxygen/html/html/search/all_15.js +3 -3
  464. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  465. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  466. package/SVF-doxygen/html/html/search/all_c.js +5 -5
  467. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  468. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  469. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  470. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  471. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  472. package/SVF-doxygen/html/html/search/typedefs_0.js +0 -1
  473. package/SVF-doxygen/html/html/search/typedefs_10.js +0 -1
  474. package/SVF-doxygen/html/html/search/variables_13.js +2 -2
  475. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  476. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +4 -4
  477. package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
  478. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  479. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
  480. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter.html +1 -1
  481. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter_3_01T_00_018_01_4.html +1 -1
  482. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val.html +5 -5
  483. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
  484. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty.html +2 -2
  485. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl.html +2 -2
  486. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html +2 -2
  487. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html +2 -2
  488. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html +2 -2
  489. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html +2 -2
  490. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html +4 -4
  491. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap.html +2 -2
  492. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +2 -2
  493. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__simple__type.html +2 -2
  494. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl.html +3 -3
  495. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html +3 -3
  496. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl.html +3 -3
  497. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html +3 -3
  498. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html +3 -3
  499. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html +3 -3
  500. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html +3 -3
  501. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html +3 -3
  502. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html +3 -3
  503. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__wrap.html +5 -5
  504. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
  505. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1simplify__type.html +4 -4
  506. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html +6 -6
  507. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
  508. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  509. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  510. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  511. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
  512. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +4 -4
  513. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
  514. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  515. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
  516. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
  517. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  518. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  519. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  520. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +1 -1
  521. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +1 -1
  522. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  523. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +4 -4
  524. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  525. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SymState_01_4.html +1 -1
  526. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  527. package/SVF-doxygen/html/html/svf-ex_8cpp.html +5 -5
  528. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  529. package/include/MemoryModel/PointerAnalysis.h +0 -1
  530. package/include/SVF-FE/BasicTypes.h +7 -1
  531. package/include/Util/BasicTypes.h +1 -22
  532. package/include/Util/Casting.h +1 -0
  533. package/include/Util/SVFBasicTypes.h +0 -5
  534. package/lib/MTA/MHP.cpp +4 -4
  535. package/lib/MTA/TCT.cpp +1 -1
  536. package/package.json +1 -1
@@ -501,14 +501,14 @@ Static Private Attributes</h2></td></tr>
501
501
  <p>Allocate path condition for each branch </p>
502
502
 
503
503
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00056">56</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
504
- <div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;path condition allocation starts\n&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; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;func: *M)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(func))</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// Allocate conditions for a program.</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;getLLVMFun()-&gt;begin(), ebit = func-&gt;getLLVMFun()-&gt;end();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; bit != ebit; ++bit)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp;bb = *bit;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#adcb9b49512179e016765b50277fc058f">collectBBCallingProgExit</a>(bb);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6e1f93e7f0a5f9f78aa199982b698f9f">allocateForBB</a>(bb);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae6b763ff293381ed5da9b07c2e8ae496">Options::PrintPathCond</a>)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a389fd522c1de5b4feed34f29b9709d03">printPathCond</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;path condition allocation ends\n&quot;</span>));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
504
+ <div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;path condition allocation starts\n&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; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;func: *M)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(func))</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// Allocate conditions for a program.</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;getLLVMFun()-&gt;begin(), ebit = func-&gt;getLLVMFun()-&gt;end();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; bit != ebit; ++bit)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp;bb = *bit;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#adcb9b49512179e016765b50277fc058f">collectBBCallingProgExit</a>(bb);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6e1f93e7f0a5f9f78aa199982b698f9f">allocateForBB</a>(bb);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ae6b763ff293381ed5da9b07c2e8ae496">Options::PrintPathCond</a>)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a389fd522c1de5b4feed34f29b9709d03">printPathCond</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;path condition allocation ends\n&quot;</span>));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
505
505
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00099">SVFUtil.cpp:99</a></div></div>
506
506
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a389fd522c1de5b4feed34f29b9709d03"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a389fd522c1de5b4feed34f29b9709d03">SVF::SaberCondAllocator::printPathCond</a></div><div class="ttdeci">void printPathCond()</div><div class="ttdoc">Print out the path condition information. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00557">SaberCondAllocator.cpp:557</a></div></div>
507
507
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_adcb9b49512179e016765b50277fc058f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#adcb9b49512179e016765b50277fc058f">SVF::SaberCondAllocator::collectBBCallingProgExit</a></div><div class="ttdeci">void collectBBCallingProgExit(const BasicBlock &amp;bb)</div><div class="ttdoc">Collect basic block contains program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00410">SaberCondAllocator.cpp:410</a></div></div>
508
508
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
509
- <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00160">SVFBasicTypes.h:160</a></div></div>
509
+ <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
510
510
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a6e1f93e7f0a5f9f78aa199982b698f9f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a6e1f93e7f0a5f9f78aa199982b698f9f">SVF::SaberCondAllocator::allocateForBB</a></div><div class="ttdeci">virtual void allocateForBB(const BasicBlock &amp;bb)</div><div class="ttdoc">Allocate path condition for every basic block. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00084">SaberCondAllocator.cpp:84</a></div></div>
511
- <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
511
+ <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00150">SVFBasicTypes.h:150</a></div></div>
512
512
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00346">SVFUtil.h:346</a></div></div>
513
513
  <div class="ttc" id="classSVF_1_1Options_html_ae6b763ff293381ed5da9b07c2e8ae496"><div class="ttname"><a href="classSVF_1_1Options.html#ae6b763ff293381ed5da9b07c2e8ae496">SVF::Options::PrintPathCond</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PrintPathCond</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00224">Options.h:224</a></div></div>
514
514
  </div><!-- fragment -->
@@ -543,10 +543,10 @@ Static Private Attributes</h2></td></tr>
543
543
  <p>TODO: handle BranchInst and SwitchInst individually here!! </p>
544
544
 
545
545
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00084">84</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
546
- <div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succ_number = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad15427845b821e3308bc4fdc45d912b9">SymbolTableInfo::getBBSuccessorNum</a>(&amp;bb);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// if successor number greater than 1, allocate new decision variable for successors</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> (succ_number &gt; 1)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">//allocate log2(num_succ) decision variables</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">double</span> num = log(succ_number) / log(2);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit_num = (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>) ceil(num);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succ_index = 0;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; std::vector&lt;Condition&gt; condVec;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; bit_num; i++)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; condVec.push_back(<a class="code" href="classSVF_1_1SaberCondAllocator.html#a5a39b2efcec1c77e7f06dda7b64c9765">newCond</a>(bb.getTerminator()));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// iterate each successor</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(&amp;bb);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; succ_it != succ_end(&amp;bb);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; succ_it++, succ_index++)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ = *succ_it;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> path_cond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// for each successor decide its bit representation</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// decide whether each bit of succ_index is 1 or 0, if (three successor) succ_index is 000 then use C1^C2^C3</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// if 001 use C1^C2^negC3</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; bit_num; j++)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">//test each bit of this successor&#39;s index (binary representation)</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tool = 0x01 &lt;&lt; j;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (tool &amp; succ_index)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; path_cond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(path_cond, (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">condNeg</a>(condVec.at(j))));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; path_cond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(path_cond, condVec.at(j));</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#af3d224fdc92de272363f411b8f8c2a09">setBranchCond</a>(&amp;bb, succ, path_cond);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
546
+ <div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succ_number = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad15427845b821e3308bc4fdc45d912b9">SymbolTableInfo::getBBSuccessorNum</a>(&amp;bb);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// if successor number greater than 1, allocate new decision variable for successors</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> (succ_number &gt; 1)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">//allocate log2(num_succ) decision variables</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">double</span> num = log(succ_number) / log(2);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit_num = (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>) ceil(num);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succ_index = 0;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; std::vector&lt;Condition&gt; condVec;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; bit_num; i++)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; condVec.push_back(<a class="code" href="classSVF_1_1SaberCondAllocator.html#a5a39b2efcec1c77e7f06dda7b64c9765">newCond</a>(bb.getTerminator()));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// iterate each successor</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(&amp;bb);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; succ_it != succ_end(&amp;bb);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; succ_it++, succ_index++)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ = *succ_it;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> path_cond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// for each successor decide its bit representation</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// decide whether each bit of succ_index is 1 or 0, if (three successor) succ_index is 000 then use C1^C2^C3</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// if 001 use C1^C2^negC3</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; bit_num; j++)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">//test each bit of this successor&#39;s index (binary representation)</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tool = 0x01 &lt;&lt; j;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (tool &amp; succ_index)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; path_cond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(path_cond, (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">condNeg</a>(condVec.at(j))));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; path_cond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(path_cond, condVec.at(j));</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#af3d224fdc92de272363f411b8f8c2a09">setBranchCond</a>(&amp;bb, succ, path_cond);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
547
547
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
548
- <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00106">BasicTypes.h:106</a></div></div>
549
- <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
548
+ <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
549
+ <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
550
550
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a620d53b9af8dd30523c478f4e9655817"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">SVF::SaberCondAllocator::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &amp;cond)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00095">SaberCondAllocator.h:95</a></div></div>
551
551
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00087">SaberCondAllocator.h:87</a></div></div>
552
552
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
@@ -615,7 +615,7 @@ Static Private Attributes</h2></td></tr>
615
615
  <div class="fragment"><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;{</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb.begin(), eit = bb.end(); it != eit; it++)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*it;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(inst))</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVFUtil::isProgExitCall</a>(inst))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">funToExitBBsMap</a>[bb.getParent()].insert(&amp;bb);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
616
616
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad1620cc7482aeb464b53cfce64e17cc3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">SVF::SaberCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00295">SaberCondAllocator.h:295</a></div></div>
617
617
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6528edf9a1750df4a84d1a60d4d0bbe4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVF::SVFUtil::isProgExitCall</a></div><div class="ttdeci">bool isProgExitCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00705">SVFUtil.h:705</a></div></div>
618
- <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
618
+ <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00051">BasicTypes.h:51</a></div></div>
619
619
  </div><!-- fragment -->
620
620
  </div>
621
621
  </div>
@@ -662,7 +662,7 @@ Static Private Attributes</h2></td></tr>
662
662
 
663
663
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00469">469</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
664
664
  <div class="fragment"><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;{</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *funEntryBB = &amp;dstBB-&gt;getParent()-&gt;getEntryBlock();</div><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; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c1 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(srcBB, callBB);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(funEntryBB, <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(<a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(funEntryBB), <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(callBB)));</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c2 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(funEntryBB, dstBB);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(c1, c2);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a49a7146006e286c6ffb5668687a5a92f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">SVF::SaberCondAllocator::getCFCond</a></div><div class="ttdeci">Condition getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00223">SaberCondAllocator.h:223</a></div></div>
665
- <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
665
+ <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
666
666
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
667
667
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7aea2293ca15894af66a98649d25f5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">SVF::SaberCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, const Condition &amp;cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00213">SaberCondAllocator.h:213</a></div></div>
668
668
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a94ef09be5ef07f4d5222059b99619bc2"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">SVF::SaberCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00500">SaberCondAllocator.cpp:500</a></div></div>
@@ -714,14 +714,14 @@ Static Private Attributes</h2></td></tr>
714
714
 
715
715
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00486">486</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
716
716
  <div class="fragment"><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;{</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* parent = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(srcBB-&gt;getParent());</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* funExitBB = parent-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ae7f366f62080286448602698d45ec095">getExitBB</a>();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c1 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(srcBB, funExitBB);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(retBB, <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(<a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(retBB), <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(funExitBB)));</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c2 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(retBB, dstBB);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(c1, c2);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a49a7146006e286c6ffb5668687a5a92f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">SVF::SaberCondAllocator::getCFCond</a></div><div class="ttdeci">Condition getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00223">SaberCondAllocator.h:223</a></div></div>
717
- <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
717
+ <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
718
718
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
719
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
719
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
720
720
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7aea2293ca15894af66a98649d25f5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">SVF::SaberCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, const Condition &amp;cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00213">SaberCondAllocator.h:213</a></div></div>
721
721
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a94ef09be5ef07f4d5222059b99619bc2"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">SVF::SaberCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00500">SaberCondAllocator.cpp:500</a></div></div>
722
722
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00091">SaberCondAllocator.h:91</a></div></div>
723
723
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00087">SaberCondAllocator.h:87</a></div></div>
724
- <div class="ttc" id="classSVF_1_1SVFFunction_html_ae7f366f62080286448602698d45ec095"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ae7f366f62080286448602698d45ec095">SVF::SVFFunction::getExitBB</a></div><div class="ttdeci">const BasicBlock * getExitBB() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00253">BasicTypes.h:253</a></div></div>
724
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_ae7f366f62080286448602698d45ec095"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ae7f366f62080286448602698d45ec095">SVF::SVFFunction::getExitBB</a></div><div class="ttdeci">const BasicBlock * getExitBB() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00232">BasicTypes.h:232</a></div></div>
725
725
  <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>
726
726
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00114">LLVMModule.h:114</a></div></div>
727
727
  </div><!-- fragment -->
@@ -770,11 +770,11 @@ Static Private Attributes</h2></td></tr>
770
770
  <div class="fragment"><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;{</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; assert(srcBB-&gt;getParent() == dstBB-&gt;getParent() &amp;&amp; <span class="stringliteral">&quot;two basic blocks are not in the same function??&quot;</span>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f359b8e3d83bc2a92d4bc568ef62f76">postDominate</a>(dstBB, srcBB))</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a52ec71159bc70b450895990dfebdedac">CFWorkList</a> worklist;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; worklist.push(srcBB);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(srcBB, <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>());</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb = worklist.pop();</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> cond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(bb);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> loopExitCond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4c3945abc15c6caeb9d026f47e78a340">evaluateLoopExitBranch</a>(bb, dstBB);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (!eq(loopExitCond, <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>()))</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(cond, loopExitCond);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; succ_it != succ_end(bb); succ_it++)</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ = *succ_it;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> brCond;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f359b8e3d83bc2a92d4bc568ef62f76">postDominate</a>(succ, bb))</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; brCond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; brCond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a8926da3e50d32bd1fcf0a011417d445c">getEvalBrCond</a>(bb, succ);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; bb (&quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;succ_bb (&quot;</span> &lt;&lt; succ-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;) condition: &quot;</span> &lt;&lt; brCond &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> succPathCond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(cond, brCond);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(succ, <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(<a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(succ), succPathCond)))</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; worklist.push(succ);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; src_bb (&quot;</span> &lt;&lt; srcBB-&gt;getName().str() &lt;&lt;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dst_bb (&quot;</span> &lt;&lt; dstBB-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;) condition: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(dstBB)</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(dstBB);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a8926da3e50d32bd1fcf0a011417d445c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a8926da3e50d32bd1fcf0a011417d445c">SVF::SaberCondAllocator::getEvalBrCond</a></div><div class="ttdeci">Condition getEvalBrCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Get a condition, evaluate the value for conditions if necessary (e.g., testNull like express) ...</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00155">SaberCondAllocator.cpp:155</a></div></div>
771
771
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9f359b8e3d83bc2a92d4bc568ef62f76"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9f359b8e3d83bc2a92d4bc568ef62f76">SVF::SaberCondAllocator::postDominate</a></div><div class="ttdeci">bool postDominate(const BasicBlock *bbKey, const BasicBlock *bbValue) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00147">SaberCondAllocator.h:147</a></div></div>
772
772
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a49a7146006e286c6ffb5668687a5a92f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">SVF::SaberCondAllocator::getCFCond</a></div><div class="ttdeci">Condition getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00223">SaberCondAllocator.h:223</a></div></div>
773
- <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
773
+ <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
774
774
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
775
775
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7aea2293ca15894af66a98649d25f5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">SVF::SaberCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, const Condition &amp;cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00213">SaberCondAllocator.h:213</a></div></div>
776
- <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00106">BasicTypes.h:106</a></div></div>
777
- <div class="ttc" id="SVFBasicTypes_8h_html_a817abc424f7cfcdec5954c7807970f36"><div class="ttname"><a href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a></div><div class="ttdeci">#define DSaber</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
776
+ <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
777
+ <div class="ttc" id="SVFBasicTypes_8h_html_a817abc424f7cfcdec5954c7807970f36"><div class="ttname"><a href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a></div><div class="ttdeci">#define DSaber</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00169">SVFBasicTypes.h:169</a></div></div>
778
778
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00091">SaberCondAllocator.h:91</a></div></div>
779
779
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00087">SaberCondAllocator.h:87</a></div></div>
780
780
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a52ec71159bc70b450895990dfebdedac"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a52ec71159bc70b450895990dfebdedac">SVF::SaberCondAllocator::CFWorkList</a></div><div class="ttdeci">FIFOWorkList&lt; const BasicBlock * &gt; CFWorkList</div><div class="ttdoc">worklist for control-flow guard computation </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00059">SaberCondAllocator.h:59</a></div></div>
@@ -782,7 +782,7 @@ Static Private Attributes</h2></td></tr>
782
782
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
783
783
  <div class="ttc" id="classSVF_1_1Z3Expr_html_a9aa800372d57db519d484cc32ea1c5dc"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">SVF::Z3Expr::nullExpr</a></div><div class="ttdeci">static z3::expr nullExpr()</div><div class="ttdoc">null expression </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00098">Z3Expr.h:98</a></div></div>
784
784
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
785
- <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
785
+ <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00150">SVFBasicTypes.h:150</a></div></div>
786
786
  </div><!-- fragment -->
787
787
  </div>
788
788
  </div>
@@ -1032,7 +1032,7 @@ Static Private Attributes</h2></td></tr>
1032
1032
  <p>(1) Evaluate a branch when it reaches a program exit (2) Evaluate a branch when it is loop exit branch (3) Evaluate a branch when it is a test null like condition </p>
1033
1033
 
1034
1034
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00294">294</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
1035
- <div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad15427845b821e3308bc4fdc45d912b9">SymbolTableInfo::getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; assert(bb-&gt;getTerminator()-&gt;getSuccessor(0) == succ &amp;&amp; <span class="stringliteral">&quot;not the unique successor?&quot;</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *icfgNode = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6bd67514e0ea9a2704ae83a38c9f2592">getICFG</a>()-&gt;getICFGNode(bb-&gt;getTerminator()))</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;svfStmt: icfgNode-&gt;getSVFStmts())</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *branchStmt = SVFUtil::dyn_cast&lt;BranchStmt&gt;(svfStmt))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (branchStmt-&gt;getNumSuccessors() == 2)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ1 = branchStmt-&gt;getSuccessor(0)-&gt;getBB();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ2 = branchStmt-&gt;getSuccessor(1)-&gt;getBB();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; assert((succ1 == succ || succ2 == succ) &amp;&amp; <span class="stringliteral">&quot;not a successor??&quot;</span>);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> evalLoopExit = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4c3945abc15c6caeb9d026f47e78a340">evaluateLoopExitBranch</a>(bb, succ);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span> (!eq(evalLoopExit, <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>()))</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> evalLoopExit;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> evalProgExit = <a class="code" href="classSVF_1_1SaberCondAllocator.html#aac1988c13622c0755d491f0bc2b834df">evaluateProgExit</a>(branchStmt, succ);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (!eq(evalProgExit, <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>()))</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> evalProgExit;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> evalTestNullLike = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad049eeed763a5f18267b9288f728b070">evaluateTestNullLikeExpr</a>(branchStmt, succ);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (!eq(evalTestNullLike, <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>()))</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">return</span> evalTestNullLike;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2b1c2e7764631d40a5b8d0ce2cc73442">getBranchCond</a>(bb, succ);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
1035
+ <div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad15427845b821e3308bc4fdc45d912b9">SymbolTableInfo::getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; assert(bb-&gt;getTerminator()-&gt;getSuccessor(0) == succ &amp;&amp; <span class="stringliteral">&quot;not the unique successor?&quot;</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *icfgNode = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6bd67514e0ea9a2704ae83a38c9f2592">getICFG</a>()-&gt;getICFGNode(bb-&gt;getTerminator()))</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;svfStmt: icfgNode-&gt;getSVFStmts())</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *branchStmt = SVFUtil::dyn_cast&lt;BranchStmt&gt;(svfStmt))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (branchStmt-&gt;getNumSuccessors() == 2)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ1 = branchStmt-&gt;getSuccessor(0)-&gt;getBB();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ2 = branchStmt-&gt;getSuccessor(1)-&gt;getBB();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; assert((succ1 == succ || succ2 == succ) &amp;&amp; <span class="stringliteral">&quot;not a successor??&quot;</span>);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> evalLoopExit = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4c3945abc15c6caeb9d026f47e78a340">evaluateLoopExitBranch</a>(bb, succ);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span> (!eq(evalLoopExit, <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>()))</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> evalLoopExit;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> evalProgExit = <a class="code" href="classSVF_1_1SaberCondAllocator.html#aac1988c13622c0755d491f0bc2b834df">evaluateProgExit</a>(branchStmt, succ);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (!eq(evalProgExit, <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>()))</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> evalProgExit;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> evalTestNullLike = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad049eeed763a5f18267b9288f728b070">evaluateTestNullLikeExpr</a>(branchStmt, succ);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (!eq(evalTestNullLike, <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>()))</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">return</span> evalTestNullLike;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2b1c2e7764631d40a5b8d0ce2cc73442">getBranchCond</a>(bb, succ);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
1036
1036
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aac1988c13622c0755d491f0bc2b834df"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aac1988c13622c0755d491f0bc2b834df">SVF::SaberCondAllocator::evaluateProgExit</a></div><div class="ttdeci">Condition evaluateProgExit(const BranchStmt *branchStmt, const BasicBlock *succ)</div><div class="ttdoc">Return condition when there is a branch calls program exit. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00213">SaberCondAllocator.cpp:213</a></div></div>
1037
1037
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
1038
1038
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
@@ -1088,12 +1088,12 @@ Static Private Attributes</h2></td></tr>
1088
1088
 
1089
1089
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00257">257</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
1090
1090
  <div class="fragment"><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;{</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = bb-&gt;getParent();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; assert(fun == dst-&gt;getParent() &amp;&amp; <span class="stringliteral">&quot;two basic blocks should be in the same function&quot;</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> (svffun-&gt;isLoopHeader(bb))</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const BasicBlock *&gt;</a> filteredbbs;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const BasicBlock*&gt;</a> exitbbs;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; svffun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ad37d4e8003373738ca4e0a9489119bc6">getExitBlocksOfLoop</a>(bb,exitbbs);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *eb : exitbbs)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">isBBCallsProgExit</a>(eb))</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; filteredbbs.insert(eb);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordtype">bool</span> allPDT = <span class="keyword">true</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;filteredbb: filteredbbs)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f359b8e3d83bc2a92d4bc568ef62f76">postDominate</a>(dst, filteredbb))</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; allPDT = <span class="keyword">false</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (allPDT)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9f359b8e3d83bc2a92d4bc568ef62f76"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9f359b8e3d83bc2a92d4bc568ef62f76">SVF::SaberCondAllocator::postDominate</a></div><div class="ttdeci">bool postDominate(const BasicBlock *bbKey, const BasicBlock *bbValue) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00147">SaberCondAllocator.h:147</a></div></div>
1091
- <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
1092
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
1091
+ <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
1092
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
1093
1093
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7f5f1fb437153d2a797cf509b8f97c7f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">SVF::SaberCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00427">SaberCondAllocator.cpp:427</a></div></div>
1094
1094
  <div class="ttc" id="classSVF_1_1SVFFunction_html_ad37d4e8003373738ca4e0a9489119bc6"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ad37d4e8003373738ca4e0a9489119bc6">SVF::SVFFunction::getExitBlocksOfLoop</a></div><div class="ttdeci">void getExitBlocksOfLoop(const BasicBlock *bb, Set&lt; const BasicBlock *&gt; &amp;exitbbs) const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8cpp_source.html#l00020">BasicTypes.cpp:20</a></div></div>
1095
- <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
1096
- <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00069">BasicTypes.h:69</a></div></div>
1095
+ <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00101">SVFBasicTypes.h:101</a></div></div>
1096
+ <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00048">BasicTypes.h:48</a></div></div>
1097
1097
  <div class="ttc" id="classSVF_1_1Z3Expr_html_a9aa800372d57db519d484cc32ea1c5dc"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">SVF::Z3Expr::nullExpr</a></div><div class="ttdeci">static z3::expr nullExpr()</div><div class="ttdoc">null expression </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00098">Z3Expr.h:98</a></div></div>
1098
1098
  <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>
1099
1099
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
@@ -1142,7 +1142,7 @@ Static Private Attributes</h2></td></tr>
1142
1142
  <p>no branch call program exit </p>
1143
1143
 
1144
1144
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00213">213</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
1145
- <div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ1 = branchStmt-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(0)-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ2 = branchStmt-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(1)-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordtype">bool</span> branch1 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">isBBCallsProgExit</a>(succ1);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordtype">bool</span> branch2 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">isBBCallsProgExit</a>(succ2);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> (branch1 &amp;&amp; !branch2)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span> (succ1 == succ)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!branch1 &amp;&amp; branch2)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (succ2 == succ)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">// two branches both call program exit</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (branch1 &amp;&amp; branch2)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
1145
+ <div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ1 = branchStmt-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(0)-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ2 = branchStmt-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(1)-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordtype">bool</span> branch1 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">isBBCallsProgExit</a>(succ1);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordtype">bool</span> branch2 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">isBBCallsProgExit</a>(succ2);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> (branch1 &amp;&amp; !branch2)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span> (succ1 == succ)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!branch1 &amp;&amp; branch2)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (succ2 == succ)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">// two branches both call program exit</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (branch1 &amp;&amp; branch2)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
1146
1146
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00103">SaberCondAllocator.h:103</a></div></div>
1147
1147
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7f5f1fb437153d2a797cf509b8f97c7f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">SVF::SaberCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00427">SaberCondAllocator.cpp:427</a></div></div>
1148
1148
  <div class="ttc" id="classSVF_1_1BranchStmt_html_a7d9a6ebb2d95942c453864b5327b1ae8"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">SVF::BranchStmt::getSuccessor</a></div><div class="ttdeci">const ICFGNode * getSuccessor(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01007">SVFStatements.h:1007</a></div></div>
@@ -1190,7 +1190,7 @@ Static Private Attributes</h2></td></tr>
1190
1190
  <p>Evaluate null like expression for source-sink related bug detection in SABER </p>
1191
1191
 
1192
1192
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00184">184</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
1193
- <div class="fragment"><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;{</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ1 = branchStmt-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(0)-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a0244cfcb0f23614e8f870383a6bd44b3">isTestNullExpr</a>(branchStmt-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">getCondition</a>()-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (succ1 == succ)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a8ffebb3dec9884434be8e432ab1f0063">isTestNotNullExpr</a>(branchStmt-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">getCondition</a>()-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (succ1 == succ)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
1193
+ <div class="fragment"><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;{</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ1 = branchStmt-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(0)-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a0244cfcb0f23614e8f870383a6bd44b3">isTestNullExpr</a>(branchStmt-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">getCondition</a>()-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (succ1 == succ)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a8ffebb3dec9884434be8e432ab1f0063">isTestNotNullExpr</a>(branchStmt-&gt;<a class="code" href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">getCondition</a>()-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (succ1 == succ)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
1194
1194
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00103">SaberCondAllocator.h:103</a></div></div>
1195
1195
  <div class="ttc" id="classSVF_1_1BranchStmt_html_a7d9a6ebb2d95942c453864b5327b1ae8"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">SVF::BranchStmt::getSuccessor</a></div><div class="ttdeci">const ICFGNode * getSuccessor(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01007">SVFStatements.h:1007</a></div></div>
1196
1196
  <div class="ttc" id="classSVF_1_1ICFGNode_html_ac1689701c75e04481e2ae2f4482551c4"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">SVF::ICFGNode::getBB</a></div><div class="ttdeci">virtual const BasicBlock * getBB() const</div><div class="ttdoc">Return the function of this ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00086">ICFGNode.h:86</a></div></div>
@@ -1230,7 +1230,7 @@ Static Private Attributes</h2></td></tr>
1230
1230
  <p>Iterator every element of the condition. </p>
1231
1231
 
1232
1232
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00108">108</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
1233
- <div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">NodeBS</a> elems;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">extractSubConds</a>(cond, elems);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> elems;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="ttc" id="namespaceSVF_html_aa7b6a13e52671de8524b130738aeb564"><div class="ttname"><a href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">SVF::NodeBS</a></div><div class="ttdeci">SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00096">SVFBasicTypes.h:96</a></div></div>
1233
+ <div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">NodeBS</a> elems;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">extractSubConds</a>(cond, elems);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> elems;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="ttc" id="namespaceSVF_html_aa7b6a13e52671de8524b130738aeb564"><div class="ttname"><a href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">SVF::NodeBS</a></div><div class="ttdeci">SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
1234
1234
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9f43fe1cacf419f03276d66c3a54fe77"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">SVF::SaberCondAllocator::extractSubConds</a></div><div class="ttdeci">void extractSubConds(const Condition &amp;condition, NodeBS &amp;support) const</div><div class="ttdoc">extract subexpression from a Z3 expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00620">SaberCondAllocator.cpp:620</a></div></div>
1235
1235
  </div><!-- fragment -->
1236
1236
  </div>
@@ -1274,7 +1274,7 @@ Static Private Attributes</h2></td></tr>
1274
1274
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00620">620</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
1275
1275
  <div class="fragment"><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;{</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (condition.getExpr().num_args() == 1 &amp;&amp; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">isNegCond</a>(condition.id()))</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; support.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(condition.getExpr().id());</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">if</span> (condition.getExpr().num_args() == 0)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (!condition.getExpr().is_true() &amp;&amp; !condition.getExpr().is_false())</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; support.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(condition.getExpr().id());</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; condition.getExpr().num_args(); ++i)</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> expr = condition.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>().arg(i);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">extractSubConds</a>(expr, support);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
1276
1276
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad5d27f65374025b6a105ea7a92cbdb50"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">SVF::SaberCondAllocator::isNegCond</a></div><div class="ttdeci">bool isNegCond(u32_t id) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00142">SaberCondAllocator.h:142</a></div></div>
1277
- <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
1277
+ <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
1278
1278
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9f43fe1cacf419f03276d66c3a54fe77"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">SVF::SaberCondAllocator::extractSubConds</a></div><div class="ttdeci">void extractSubConds(const Condition &amp;condition, NodeBS &amp;support) const</div><div class="ttdoc">extract subexpression from a Z3 expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00620">SaberCondAllocator.cpp:620</a></div></div>
1279
1279
  <div class="ttc" id="classSVF_1_1Z3Expr_html_a57c199ba2c3c6a6d44a86e0b1429be55"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">SVF::Z3Expr::getExpr</a></div><div class="ttdeci">const z3::expr &amp; getExpr() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00079">Z3Expr.h:79</a></div></div>
1280
1280
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
@@ -1319,7 +1319,7 @@ Static Private Attributes</h2></td></tr>
1319
1319
  <p>Get a branch condition </p>
1320
1320
 
1321
1321
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00140">140</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
1322
- <div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab0f1d2055b650f3b6ee4406c940a0a0e">SymbolTableInfo::getBBSuccessorPos</a>(bb,succ);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad15427845b821e3308bc4fdc45d912b9">SymbolTableInfo::getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; BBCondMap::const_iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>.find(bb);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; assert(it != <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>.end() &amp;&amp; <span class="stringliteral">&quot;basic block does not have branch and conditions??&quot;</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; CondPosMap::const_iterator cit = it-&gt;second.find(pos);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; assert(cit != it-&gt;second.end() &amp;&amp; <span class="stringliteral">&quot;no condition on the branch??&quot;</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> cit-&gt;second;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
1322
+ <div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab0f1d2055b650f3b6ee4406c940a0a0e">SymbolTableInfo::getBBSuccessorPos</a>(bb,succ);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad15427845b821e3308bc4fdc45d912b9">SymbolTableInfo::getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; BBCondMap::const_iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>.find(bb);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; assert(it != <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>.end() &amp;&amp; <span class="stringliteral">&quot;basic block does not have branch and conditions??&quot;</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; CondPosMap::const_iterator cit = it-&gt;second.find(pos);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; assert(cit != it-&gt;second.end() &amp;&amp; <span class="stringliteral">&quot;no condition on the branch??&quot;</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> cit-&gt;second;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
1323
1323
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5c129ebf5ae55eb3af8bd670c921a646"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">SVF::SaberCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">a counter for fresh condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00304">SaberCondAllocator.h:304</a></div></div>
1324
1324
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab0f1d2055b650f3b6ee4406c940a0a0e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab0f1d2055b650f3b6ee4406c940a0a0e">SVF::SymbolTableInfo::getBBSuccessorPos</a></div><div class="ttdeci">static const u32_t getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00356">SymbolTableInfo.cpp:356</a></div></div>
1325
1325
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
@@ -1572,7 +1572,7 @@ Static Private Attributes</h2></td></tr>
1572
1572
  <p>Statistics. </p>
1573
1573
 
1574
1574
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00071">71</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
1575
- <div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vmrss, vmsize;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">SVFUtil::getMemoryUsageKB</a>(&amp;vmrss, &amp;vmsize))</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> std::to_string(vmsize) + <span class="stringliteral">&quot;KB&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;cannot read memory usage&quot;</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
1575
+ <div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vmrss, vmsize;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">SVFUtil::getMemoryUsageKB</a>(&amp;vmrss, &amp;vmsize))</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> std::to_string(vmsize) + <span class="stringliteral">&quot;KB&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;cannot read memory usage&quot;</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
1576
1576
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a630ff9c47f58f9b8df7c8a2b3711477c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">SVF::SVFUtil::getMemoryUsageKB</a></div><div class="ttdeci">bool getMemoryUsageKB(u32_t *vmrss_kb, u32_t *vmsize_kb)</div><div class="ttdoc">Get memory usage from system file. Return TRUE if succeed. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00177">SVFUtil.cpp:177</a></div></div>
1577
1577
  </div><!-- fragment -->
1578
1578
  </div>
@@ -1717,7 +1717,7 @@ Static Private Attributes</h2></td></tr>
1717
1717
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00427">427</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
1718
1718
  <div class="fragment"><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;{</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = bb-&gt;getParent();</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; FunToExitBBsMap::const_iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">funToExitBBsMap</a>.find(fun);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">funToExitBBsMap</a>.end())</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;bit: it-&gt;second)</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f359b8e3d83bc2a92d4bc568ef62f76">postDominate</a>(bit, bb))</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9f359b8e3d83bc2a92d4bc568ef62f76"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9f359b8e3d83bc2a92d4bc568ef62f76">SVF::SaberCondAllocator::postDominate</a></div><div class="ttdeci">bool postDominate(const BasicBlock *bbKey, const BasicBlock *bbValue) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00147">SaberCondAllocator.h:147</a></div></div>
1719
1719
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad1620cc7482aeb464b53cfce64e17cc3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">SVF::SaberCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00295">SaberCondAllocator.h:295</a></div></div>
1720
- <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00069">BasicTypes.h:69</a></div></div>
1720
+ <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00048">BasicTypes.h:48</a></div></div>
1721
1721
  </div><!-- fragment -->
1722
1722
  </div>
1723
1723
  </div>
@@ -1901,9 +1901,9 @@ Static Private Attributes</h2></td></tr>
1901
1901
  </ol>
1902
1902
 
1903
1903
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00374">374</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
1904
- <div class="fragment"><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op0 = cmp-&gt;getOperand(0);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op1 = cmp-&gt;getOperand(1);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(op1))</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Value *&gt;</a> inDirVal;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">getCurEvalSVFGNode</a>()-&gt;getOutEdges())</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (it-&gt;isIndirectVFGEdge())</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; inDirVal.insert(it-&gt;getDstNode()-&gt;getValue());</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</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">return</span> inDirVal.find(op0) != inDirVal.end();</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="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(op0))</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Value *&gt;</a> inDirVal;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">getCurEvalSVFGNode</a>()-&gt;getOutEdges())</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">if</span> (it-&gt;isIndirectVFGEdge())</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; inDirVal.insert(it-&gt;getDstNode()-&gt;getValue());</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> inDirVal.find(op1) != inDirVal.end();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
1904
+ <div class="fragment"><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op0 = cmp-&gt;getOperand(0);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op1 = cmp-&gt;getOperand(1);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(op1))</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Value *&gt;</a> inDirVal;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">getCurEvalSVFGNode</a>()-&gt;getOutEdges())</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (it-&gt;isIndirectVFGEdge())</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; inDirVal.insert(it-&gt;getDstNode()-&gt;getValue());</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</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">return</span> inDirVal.find(op0) != inDirVal.end();</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="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(op0))</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Value *&gt;</a> inDirVal;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">getCurEvalSVFGNode</a>()-&gt;getOutEdges())</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">if</span> (it-&gt;isIndirectVFGEdge())</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; inDirVal.insert(it-&gt;getDstNode()-&gt;getValue());</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> inDirVal.find(op1) != inDirVal.end();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00101">SVFBasicTypes.h:101</a></div></div>
1905
1905
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9aec07a64b97d546cfa0efe10f888b6a"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">SVF::SaberCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00185">SaberCondAllocator.h:185</a></div></div>
1906
- <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
1906
+ <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00050">BasicTypes.h:50</a></div></div>
1907
1907
  </div><!-- fragment -->
1908
1908
  </div>
1909
1909
  </div>
@@ -1936,7 +1936,7 @@ Static Private Attributes</h2></td></tr>
1936
1936
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00353">353</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
1937
1937
  <div class="fragment"><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;{</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a> *cmp = SVFUtil::dyn_cast&lt;CmpInst&gt;(test))</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7a7fbd17d13c81a9b259641d6e1cc857">isTestContainsNullAndTheValue</a>(cmp) &amp;&amp; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab254027728c09a23cff8825b335da1c8">isNECmp</a>(cmp);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7a7fbd17d13c81a9b259641d6e1cc857"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7a7fbd17d13c81a9b259641d6e1cc857">SVF::SaberCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00374">SaberCondAllocator.cpp:374</a></div></div>
1938
1938
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab254027728c09a23cff8825b335da1c8"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab254027728c09a23cff8825b335da1c8">SVF::SaberCondAllocator::isNECmp</a></div><div class="ttdeci">bool isNECmp(const CmpInst *cmp) const</div><div class="ttdoc">Return true if the predicate of this compare instruction is not equal. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00339">SaberCondAllocator.cpp:339</a></div></div>
1939
- <div class="ttc" id="namespaceSVF_html_a5d875a9d726bb9f68a17efa528dec0b4"><div class="ttname"><a href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">SVF::CmpInst</a></div><div class="ttdeci">llvm::CmpInst CmpInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
1939
+ <div class="ttc" id="namespaceSVF_html_a5d875a9d726bb9f68a17efa528dec0b4"><div class="ttname"><a href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">SVF::CmpInst</a></div><div class="ttdeci">llvm::CmpInst CmpInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
1940
1940
  </div><!-- fragment -->
1941
1941
  </div>
1942
1942
  </div>
@@ -1969,7 +1969,7 @@ Static Private Attributes</h2></td></tr>
1969
1969
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00344">344</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
1970
1970
  <div class="fragment"><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;{</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a> *cmp = SVFUtil::dyn_cast&lt;CmpInst&gt;(test))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7a7fbd17d13c81a9b259641d6e1cc857">isTestContainsNullAndTheValue</a>(cmp) &amp;&amp; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a61a5b10b610d56f7585cf709eb2b2d5b">isEQCmp</a>(cmp);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a61a5b10b610d56f7585cf709eb2b2d5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a61a5b10b610d56f7585cf709eb2b2d5b">SVF::SaberCondAllocator::isEQCmp</a></div><div class="ttdeci">bool isEQCmp(const CmpInst *cmp) const</div><div class="ttdoc">Evaluate test null/not null like expressions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00334">SaberCondAllocator.cpp:334</a></div></div>
1971
1971
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7a7fbd17d13c81a9b259641d6e1cc857"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7a7fbd17d13c81a9b259641d6e1cc857">SVF::SaberCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00374">SaberCondAllocator.cpp:374</a></div></div>
1972
- <div class="ttc" id="namespaceSVF_html_a5d875a9d726bb9f68a17efa528dec0b4"><div class="ttname"><a href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">SVF::CmpInst</a></div><div class="ttdeci">llvm::CmpInst CmpInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
1972
+ <div class="ttc" id="namespaceSVF_html_a5d875a9d726bb9f68a17efa528dec0b4"><div class="ttname"><a href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">SVF::CmpInst</a></div><div class="ttdeci">llvm::CmpInst CmpInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
1973
1973
  </div><!-- fragment -->
1974
1974
  </div>
1975
1975
  </div>
@@ -1995,7 +1995,7 @@ Static Private Attributes</h2></td></tr>
1995
1995
  <div class="fragment"><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;{</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> condCountIdx = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">totalCondNum</a>++;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> expr = <a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Condition::getContext</a>().bool_const((<span class="stringliteral">&quot;c&quot;</span> + std::to_string(condCountIdx)).c_str());</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> negCond = <a class="code" href="classSVF_1_1Z3Expr.html#a9a545e516e6dee37310ad02481a84356">Condition::NEG</a>(expr);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">setCondInst</a>(expr, inst);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a22b71f885c07fff3c35006337ec41ee7">setNegCondInst</a>(negCond, inst);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">conditionVec</a>.push_back(expr);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">conditionVec</a>.push_back(negCond);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">return</span> expr;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a76fad4d58db94d7c572876ba6f1adf83"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">SVF::SaberCondAllocator::totalCondNum</a></div><div class="ttdeci">static u32_t totalCondNum</div><div class="ttdoc">vector storing z3expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00301">SaberCondAllocator.h:301</a></div></div>
1996
1996
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
1997
1997
  <div class="ttc" id="classSVF_1_1Z3Expr_html_a9a545e516e6dee37310ad02481a84356"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9a545e516e6dee37310ad02481a84356">SVF::Z3Expr::NEG</a></div><div class="ttdeci">static Z3Expr NEG(const Z3Expr &amp;z3Expr)</div><div class="ttdoc">compute NEG </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00294">Z3Expr.h:294</a></div></div>
1998
- <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
1998
+ <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
1999
1999
  <div class="ttc" id="classSVF_1_1Z3Expr_html_acfdff582a0188678c10939165a40df30"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">SVF::Z3Expr::getContext</a></div><div class="ttdeci">static z3::context &amp; getContext()</div><div class="ttdoc">Get z3 context, singleton design here to make sure we only have one context. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00066">Z3Expr.cpp:66</a></div></div>
2000
2000
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_afd6cf17070e3629ced1ac36b8e2b0bbb"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">SVF::SaberCondAllocator::conditionVec</a></div><div class="ttdeci">std::vector&lt; Condition &gt; conditionVec</div><div class="ttdoc">bit vector for distinguish neg </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00300">SaberCondAllocator.h:300</a></div></div>
2001
2001
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7ba47d494686df48a2a7e86b1f386b4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">SVF::SaberCondAllocator::setCondInst</a></div><div class="ttdeci">void setCondInst(const Condition &amp;condition, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00135">SaberCondAllocator.h:135</a></div></div>
@@ -2062,9 +2062,9 @@ Static Private Attributes</h2></td></tr>
2062
2062
  <p>Print path conditions </p>
2063
2063
 
2064
2064
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00557">557</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
2065
- <div class="fragment"><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;{</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;print path condition\n&quot;</span>;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;bbCond: <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>)</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb = bbCond.first;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;cit: bbCond.second)</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ: successors(bb))</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (i == cit.first)</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> cond = cit.second;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; succ-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">dumpCond</a>(cond) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; i++;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; }</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
2065
+ <div class="fragment"><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;{</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;print path condition\n&quot;</span>;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;bbCond: <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>)</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb = bbCond.first;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;cit: bbCond.second)</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ: successors(bb))</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (i == cit.first)</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> cond = cit.second;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; succ-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">dumpCond</a>(cond) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; i++;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; }</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00049">BasicTypes.h:49</a></div></div>
2066
2066
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
2067
- <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
2067
+ <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
2068
2068
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5c129ebf5ae55eb3af8bd670c921a646"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">SVF::SaberCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">a counter for fresh condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00304">SaberCondAllocator.h:304</a></div></div>
2069
2069
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
2070
2070
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a100c1962eac6d7af420defc827a025ed"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">SVF::SaberCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(const Condition &amp;cond) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00115">SaberCondAllocator.h:115</a></div></div>
@@ -2119,7 +2119,7 @@ Static Private Attributes</h2></td></tr>
2119
2119
 
2120
2120
  <p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00166">166</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
2121
2121
  <div class="fragment"><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; assert(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad15427845b821e3308bc4fdc45d912b9">SymbolTableInfo::getBBSuccessorNum</a>(bb) &gt; 1 &amp;&amp; <span class="stringliteral">&quot;not more than one successor??&quot;</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab0f1d2055b650f3b6ee4406c940a0a0e">SymbolTableInfo::getBBSuccessorPos</a>(bb,succ);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#aa330cc6a1a3c38601ebeb325ffd87221">CondPosMap</a>&amp; condPosMap = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>[bb];</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">//assert(condPosMap.find(pos) == condPosMap.end() &amp;&amp; &quot;this branch has already been set &quot;);</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; condPosMap[pos] = cond;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aa330cc6a1a3c38601ebeb325ffd87221"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aa330cc6a1a3c38601ebeb325ffd87221">SVF::SaberCondAllocator::CondPosMap</a></div><div class="ttdeci">Map&lt; u32_t, Condition &gt; CondPosMap</div><div class="ttdoc">id to instruction map for z3 </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00054">SaberCondAllocator.h:54</a></div></div>
2122
- <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
2122
+ <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
2123
2123
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5c129ebf5ae55eb3af8bd670c921a646"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">SVF::SaberCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">a counter for fresh condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00304">SaberCondAllocator.h:304</a></div></div>
2124
2124
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab0f1d2055b650f3b6ee4406c940a0a0e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab0f1d2055b650f3b6ee4406c940a0a0e">SVF::SymbolTableInfo::getBBSuccessorPos</a></div><div class="ttdeci">static const u32_t getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00356">SymbolTableInfo.cpp:356</a></div></div>
2125
2125
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad15427845b821e3308bc4fdc45d912b9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad15427845b821e3308bc4fdc45d912b9">SVF::SymbolTableInfo::getBBSuccessorNum</a></div><div class="ttdeci">static const u32_t getBBSuccessorNum(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00346">SymbolTableInfo.cpp:346</a></div></div>