svf-tools 1.0.427 → 1.0.430

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 (305) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +10 -10
  7. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +3 -3
  8. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  9. package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
  10. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  11. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +11 -11
  12. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +4 -4
  13. package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
  17. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +15 -15
  18. package/SVF-doxygen/html/html/DCHG_8h_source.html +7 -7
  19. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
  22. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +4 -4
  23. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
  24. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
  25. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  27. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  29. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +1 -1
  30. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +10 -10
  35. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  38. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  40. package/SVF-doxygen/html/html/IRGraph_8h_source.html +18 -18
  41. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  43. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +18 -18
  44. package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
  45. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +58 -56
  46. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
  50. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +9 -9
  51. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +8 -8
  53. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
  55. package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
  56. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  57. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  59. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  60. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +9 -9
  61. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +3 -3
  62. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
  63. package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
  64. package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
  65. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  66. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +13 -12
  68. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
  70. package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
  71. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  72. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/html/PCG_8cpp_source.html +5 -5
  74. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  75. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +5 -5
  76. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  77. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
  78. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +33 -27
  79. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +32 -28
  80. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  81. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
  82. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
  83. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
  84. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +5 -4
  85. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
  86. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +117 -27
  87. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +32 -27
  88. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  90. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  91. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  92. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -3
  94. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  95. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +70 -70
  96. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +34 -34
  97. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -5
  98. package/SVF-doxygen/html/html/SVFIR_8h_source.html +10 -10
  99. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  100. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  102. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +3 -3
  103. package/SVF-doxygen/html/html/SVFUtil_8h.html +0 -3
  104. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +12 -13
  105. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +7 -7
  106. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +9 -7
  107. package/SVF-doxygen/html/html/SaberAnnotator_8h.html +1 -1
  108. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +6 -7
  109. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  110. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  111. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  112. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +62 -61
  113. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
  114. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +77 -76
  115. package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +1 -0
  116. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +135 -134
  117. package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
  118. package/SVF-doxygen/html/html/TCT_8h_source.html +7 -7
  119. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  120. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
  121. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
  122. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
  123. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
  124. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +12 -12
  125. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  126. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -11
  127. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +75 -80
  128. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  129. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  130. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  131. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  132. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  133. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  134. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +8 -8
  136. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +2 -2
  137. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  138. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  139. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  140. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
  141. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +15 -15
  142. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
  143. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  144. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  146. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +7 -7
  147. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +47 -47
  148. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  149. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +5 -3
  150. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
  153. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  154. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +6 -6
  155. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +11 -11
  156. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
  157. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  158. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
  160. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  161. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +14 -14
  162. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +16 -16
  164. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
  167. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +4 -4
  169. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -2
  170. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +21 -21
  171. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
  172. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +18 -18
  173. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +20 -19
  174. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
  175. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +9 -9
  176. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +15 -15
  177. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
  178. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +5 -4
  179. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +115 -88
  180. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +13 -13
  181. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
  183. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +94 -94
  184. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +1 -1
  186. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +10 -10
  187. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
  188. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
  190. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  192. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +26 -25
  193. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +153 -114
  194. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
  195. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
  196. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +31 -30
  197. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +11 -8
  198. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  199. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  200. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +29 -29
  201. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
  202. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  203. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  204. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +17 -17
  205. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +89 -89
  206. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +2 -2
  208. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator-members.html +3 -3
  209. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +28 -24
  210. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
  211. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  212. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +36 -36
  213. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +86 -86
  214. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +41 -42
  215. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +189 -220
  216. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
  217. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
  218. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +7 -7
  219. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
  221. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +16 -16
  222. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
  223. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  225. package/SVF-doxygen/html/html/functions_a.html +3 -3
  226. package/SVF-doxygen/html/html/functions_e.html +2 -2
  227. package/SVF-doxygen/html/html/functions_func.html +3 -3
  228. package/SVF-doxygen/html/html/functions_func_e.html +2 -2
  229. package/SVF-doxygen/html/html/functions_func_g.html +8 -7
  230. package/SVF-doxygen/html/html/functions_func_i.html +5 -8
  231. package/SVF-doxygen/html/html/functions_func_s.html +9 -8
  232. package/SVF-doxygen/html/html/functions_g.html +15 -14
  233. package/SVF-doxygen/html/html/functions_i.html +11 -14
  234. package/SVF-doxygen/html/html/functions_l.html +3 -3
  235. package/SVF-doxygen/html/html/functions_o.html +15 -15
  236. package/SVF-doxygen/html/html/functions_p.html +7 -7
  237. package/SVF-doxygen/html/html/functions_r.html +8 -8
  238. package/SVF-doxygen/html/html/functions_s.html +11 -10
  239. package/SVF-doxygen/html/html/functions_t.html +10 -8
  240. package/SVF-doxygen/html/html/functions_v.html +3 -3
  241. package/SVF-doxygen/html/html/globals.html +3 -0
  242. package/SVF-doxygen/html/html/globals_b.html +3 -0
  243. package/SVF-doxygen/html/html/globals_r.html +3 -0
  244. package/SVF-doxygen/html/html/globals_s.html +9 -6
  245. package/SVF-doxygen/html/html/globals_type.html +15 -0
  246. package/SVF-doxygen/html/html/globals_u.html +5 -2
  247. package/SVF-doxygen/html/html/namespaceSVF.html +40 -130
  248. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +253 -220
  249. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +20 -20
  250. package/SVF-doxygen/html/html/namespacemembers.html +0 -3
  251. package/SVF-doxygen/html/html/namespacemembers_b.html +1 -4
  252. package/SVF-doxygen/html/html/namespacemembers_func.html +8 -5
  253. package/SVF-doxygen/html/html/namespacemembers_i.html +11 -8
  254. package/SVF-doxygen/html/html/namespacemembers_r.html +1 -4
  255. package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
  256. package/SVF-doxygen/html/html/namespacemembers_type.html +0 -15
  257. package/SVF-doxygen/html/html/namespacemembers_u.html +0 -3
  258. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  259. package/SVF-doxygen/html/html/search/all_10.js +9 -9
  260. package/SVF-doxygen/html/html/search/all_12.js +4 -4
  261. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  262. package/SVF-doxygen/html/html/search/all_14.js +7 -7
  263. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  264. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  265. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  266. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  267. package/SVF-doxygen/html/html/search/all_7.js +1 -1
  268. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  269. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  270. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  271. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  272. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  273. package/SVF-doxygen/html/html/search/functions_0.js +3 -3
  274. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  275. package/SVF-doxygen/html/html/search/functions_4.js +2 -2
  276. package/SVF-doxygen/html/html/search/functions_6.js +1 -1
  277. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  278. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  279. package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
  280. package/SVF-doxygen/html/html/search/typedefs_1.js +1 -1
  281. package/SVF-doxygen/html/html/search/typedefs_10.js +1 -1
  282. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  283. package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
  284. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  285. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  286. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  287. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
  288. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  289. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  290. package/include/DDA/DDAVFSolver.h +3 -3
  291. package/include/MemoryModel/SymbolTableInfo.h +6 -4
  292. package/include/SABER/PathCondAllocator.h +8 -2
  293. package/include/SABER/SaberAnnotator.h +4 -4
  294. package/include/SVF-FE/BasicTypes.h +5 -0
  295. package/include/SVF-FE/LLVMUtil.h +13 -0
  296. package/include/Util/BasicTypes.h +0 -5
  297. package/include/Util/SVFUtil.h +0 -5
  298. package/lib/MSSA/MemRegion.cpp +4 -4
  299. package/lib/MemoryModel/PointerAnalysis.cpp +4 -4
  300. package/lib/MemoryModel/SymbolTableInfo.cpp +6 -8
  301. package/lib/SABER/PathCondAllocator.cpp +31 -26
  302. package/lib/SABER/ProgSlice.cpp +7 -4
  303. package/lib/SABER/SaberAnnotator.cpp +8 -8
  304. package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -1
  305. package/package.json +1 -1
@@ -74,7 +74,7 @@ $(function() {
74
74
  <div class="ttc" id="classSVF_1_1ObjVar_html_a78ee2be4a346728be947ce29d3820c13"><div class="ttname"><a href="classSVF_1_1ObjVar.html#a78ee2be4a346728be947ce29d3820c13">SVF::ObjVar::classof</a></div><div class="ttdeci">static bool classof(const SVFVar *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00331">SVFVariables.h:331</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1ValVar_html_ae5dc21b3327a100ffe3e0e2c876ba1bb"><div class="ttname"><a href="classSVF_1_1ValVar.html#ae5dc21b3327a100ffe3e0e2c876ba1bb">SVF::ValVar::ValVar</a></div><div class="ttdeci">ValVar(const Value *val, NodeID i, PNODEK ty=ValNode)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00295">SVFVariables.h:295</a></div></div>
76
76
  <div class="ttc" id="classSVF_1_1VarArgPN_html_a7f873a8015eb6a6b30530a7e5a69018d"><div class="ttname"><a href="classSVF_1_1VarArgPN.html#a7f873a8015eb6a6b30530a7e5a69018d">SVF::VarArgPN::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00632">SVFVariables.h:632</a></div></div>
77
- <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00393">SymbolTableInfo.h:393</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00392">SymbolTableInfo.h:392</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1SVFVar_html_a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVF::SVFVar::FIObjNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00071">SVFVariables.h:71</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1SVFVar_html_a9b00f9b5f8ad2422162f4396e2d8fa42"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a9b00f9b5f8ad2422162f4396e2d8fa42">SVF::SVFVar::hasOutgoingEdges</a></div><div class="ttdeci">bool hasOutgoingEdges(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Has outgoing SVFIR statements (edges) </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00172">SVFVariables.h:172</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1ValVar_html"><div class="ttname"><a href="classSVF_1_1ValVar.html">SVF::ValVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00266">SVFVariables.h:266</a></div></div>
@@ -99,13 +99,13 @@ $(function() {
99
99
  <div class="ttc" id="classSVF_1_1FIObjVar_html_ae77995bc46e4f7b1b17fa86aa601ffae"><div class="ttname"><a href="classSVF_1_1FIObjVar.html#ae77995bc46e4f7b1b17fa86aa601ffae">SVF::FIObjVar::FIObjVar</a></div><div class="ttdeci">FIObjVar(const Value *val, NodeID i, const MemObj *mem, PNODEK ty=FIObjNode)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00552">SVFVariables.h:552</a></div></div>
100
100
  <div class="ttc" id="classSVF_1_1RetPN_html_a5e9d174902aa6dcfae418697363967b9"><div class="ttname"><a href="classSVF_1_1RetPN.html#a5e9d174902aa6dcfae418697363967b9">SVF::RetPN::classof</a></div><div class="ttdeci">static bool classof(const SVFVar *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00581">SVFVariables.h:581</a></div></div>
101
101
  <div class="ttc" id="classSVF_1_1GepObjVar_html_ae80d95a4d90ca64eca819e140445004c"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#ae80d95a4d90ca64eca819e140445004c">SVF::GepObjVar::GepObjVar</a></div><div class="ttdeci">GepObjVar(const MemObj *mem, NodeID i, const LocationSet &amp;l, PNODEK ty=GepObjNode)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00473">SVFVariables.h:473</a></div></div>
102
- <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#l00184">BasicTypes.h:184</a></div></div>
102
+ <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#l00179">BasicTypes.h:179</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1GepObjVar_html_ac3583a2d4d4ceaf820d23b43a893ac92"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#ac3583a2d4d4ceaf820d23b43a893ac92">SVF::GepObjVar::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00465">SVFVariables.h:465</a></div></div>
104
104
  <div class="ttc" id="classSVF_1_1ObjVar_html_ac127d3ee00a6bed2bdba2f24b389eb4b"><div class="ttname"><a href="classSVF_1_1ObjVar.html#ac127d3ee00a6bed2bdba2f24b389eb4b">SVF::ObjVar::classof</a></div><div class="ttdeci">static bool classof(const ObjVar *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00327">SVFVariables.h:327</a></div></div>
105
105
  <div class="ttc" id="classSVF_1_1CloneFIObjVar_html"><div class="ttname"><a href="classSVF_1_1CloneFIObjVar.html">SVF::CloneFIObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00819">SVFVariables.h:819</a></div></div>
106
106
  <div class="ttc" id="classSVF_1_1SVFVar_html_a283f7c0c2eaae07c6865f73a0daafeffabf9e21e7cbec690ad318a68cd5d756dc"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffabf9e21e7cbec690ad318a68cd5d756dc">SVF::SVFVar::CloneGepObjNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00074">SVFVariables.h:74</a></div></div>
107
107
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00177">SVFStatements.h:177</a></div></div>
108
- <div class="ttc" id="classSVF_1_1MemObj_html_aa4fa7a1b86d66692ffffeaee0e187216"><div class="ttname"><a href="classSVF_1_1MemObj.html#aa4fa7a1b86d66692ffffeaee0e187216">SVF::MemObj::getType</a></div><div class="ttdeci">const Type * getType() const</div><div class="ttdoc">Get obj type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00648">SymbolTableInfo.cpp:648</a></div></div>
108
+ <div class="ttc" id="classSVF_1_1MemObj_html_aa4fa7a1b86d66692ffffeaee0e187216"><div class="ttname"><a href="classSVF_1_1MemObj.html#aa4fa7a1b86d66692ffffeaee0e187216">SVF::MemObj::getType</a></div><div class="ttdeci">const Type * getType() const</div><div class="ttdoc">Get obj type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00646">SymbolTableInfo.cpp:646</a></div></div>
109
109
  <div class="ttc" id="classSVF_1_1RetPN_html_ac551c1aaf9ec3cb77814aa4664d61a23"><div class="ttname"><a href="classSVF_1_1RetPN.html#ac551c1aaf9ec3cb77814aa4664d61a23">SVF::RetPN::RetPN</a></div><div class="ttdeci">RetPN(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00596">SVFVariables.h:596</a></div></div>
110
110
  <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00082">SVFBasicTypes.h:82</a></div></div>
111
111
  <div class="ttc" id="classSVF_1_1GepValVar_html_a0aab756122dcce24faf556f0b7057dc1"><div class="ttname"><a href="classSVF_1_1GepValVar.html#a0aab756122dcce24faf556f0b7057dc1">SVF::GepValVar::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00403">SVFVariables.h:403</a></div></div>
@@ -148,7 +148,7 @@ $(function() {
148
148
  <div class="ttc" id="classSVF_1_1DummyValVar_html_a188ddcb95f842245fb97362ff8a06efd"><div class="ttname"><a href="classSVF_1_1DummyValVar.html#a188ddcb95f842245fb97362ff8a06efd">SVF::DummyValVar::getValueName</a></div><div class="ttdeci">const std::string getValueName() const</div><div class="ttdoc">Return name of this node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00690">SVFVariables.h:690</a></div></div>
149
149
  <div class="ttc" id="classSVF_1_1SVFVar_html_a927733580b47be5ffcfced44ba9fd6c3"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a927733580b47be5ffcfced44ba9fd6c3">SVF::SVFVar::getOutgoingEdges</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy &amp; getOutgoingEdges(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get outgoing SVFIR statements (edges) </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00158">SVFVariables.h:158</a></div></div>
150
150
  <div class="ttc" id="classSVF_1_1ValVar_html_a371f38564932cc04c6c4a00a99bf6c6a"><div class="ttname"><a href="classSVF_1_1ValVar.html#a371f38564932cc04c6c4a00a99bf6c6a">SVF::ValVar::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00284">SVFVariables.h:284</a></div></div>
151
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2fc4bfb83b71a4c14e16168382cb8f5d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d">SVF::SymbolTableInfo::isBlkObjOrConstantObj</a></div><div class="ttdeci">static bool isBlkObjOrConstantObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00186">SymbolTableInfo.h:186</a></div></div>
151
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2fc4bfb83b71a4c14e16168382cb8f5d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d">SVF::SymbolTableInfo::isBlkObjOrConstantObj</a></div><div class="ttdeci">static bool isBlkObjOrConstantObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00185">SymbolTableInfo.h:185</a></div></div>
152
152
  <div class="ttc" id="classSVF_1_1GepValVar_html_aaf5f5d3734e1db83c6d4f38d560b2f45"><div class="ttname"><a href="classSVF_1_1GepValVar.html#aaf5f5d3734e1db83c6d4f38d560b2f45">SVF::GepValVar::gepValType</a></div><div class="ttdeci">const Type * gepValType</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00386">SVFVariables.h:386</a></div></div>
153
153
  <div class="ttc" id="classSVF_1_1GepObjVar_html_a5e371fae7592d763661a7cb777107ff4"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#a5e371fae7592d763661a7cb777107ff4">SVF::GepObjVar::setBaseNode</a></div><div class="ttdeci">void setBaseNode(NodeID base)</div><div class="ttdoc">Set the base object from which this GEP node came from. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00492">SVFVariables.h:492</a></div></div>
154
154
  <div class="ttc" id="classSVF_1_1SVFVar_html_a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11">SVF::SVFVar::ObjNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00066">SVFVariables.h:66</a></div></div>
@@ -176,7 +176,7 @@ $(function() {
176
176
  <div class="ttc" id="classSVF_1_1GenericNode_html_a93d217b0c9fd8008a2989ca2b4f3fbfb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a93d217b0c9fd8008a2989ca2b4f3fbfb">SVF::GenericNode::addIncomingEdge</a></div><div class="ttdeci">bool addIncomingEdge(EdgeType *inEdge)</div><div class="ttdoc">Add incoming and outgoing edges. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00275">GenericGraph.h:275</a></div></div>
177
177
  <div class="ttc" id="classSVF_1_1GepValVar_html_a0e5084d3fc54a70ace07075f846395ef"><div class="ttname"><a href="classSVF_1_1GepValVar.html#a0e5084d3fc54a70ace07075f846395ef">SVF::GepValVar::getConstantFieldIdx</a></div><div class="ttdeci">s32_t getConstantFieldIdx() const</div><div class="ttdoc">offset of the base value variable </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00416">SVFVariables.h:416</a></div></div>
178
178
  <div class="ttc" id="classSVF_1_1FIObjVar_html_a73cd80e57f81d34b6295e110e3d43acc"><div class="ttname"><a href="classSVF_1_1FIObjVar.html#a73cd80e57f81d34b6295e110e3d43acc">SVF::FIObjVar::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00544">SVFVariables.h:544</a></div></div>
179
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87ee08e81de307eb9c02889b6ed98dd5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">SVF::SymbolTableInfo::getFlatternedElemType</a></div><div class="ttdeci">const Type * getFlatternedElemType(const Type *baseType, u32_t flatten_idx)</div><div class="ttdoc">Return the type of a flattened element given a flattened index. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00429">SymbolTableInfo.cpp:429</a></div></div>
179
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87ee08e81de307eb9c02889b6ed98dd5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">SVF::SymbolTableInfo::getFlatternedElemType</a></div><div class="ttdeci">const Type * getFlatternedElemType(const Type *baseType, u32_t flatten_idx)</div><div class="ttdoc">Return the type of a flattened element given a flattened index. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00421">SymbolTableInfo.cpp:421</a></div></div>
180
180
  <div class="ttc" id="classSVF_1_1ValVar_html_a71e5f4eaf74f852d3354ac6b0b65f39c"><div class="ttname"><a href="classSVF_1_1ValVar.html#a71e5f4eaf74f852d3354ac6b0b65f39c">SVF::ValVar::classof</a></div><div class="ttdeci">static bool classof(const SVFVar *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00276">SVFVariables.h:276</a></div></div>
181
181
  <div class="ttc" id="classSVF_1_1VarArgPN_html_ad6ebe474373838bc6c00e8baaa3f7137"><div class="ttname"><a href="classSVF_1_1VarArgPN.html#ad6ebe474373838bc6c00e8baaa3f7137">SVF::VarArgPN::VarArgPN</a></div><div class="ttdeci">VarArgPN(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00639">SVFVariables.h:639</a></div></div>
182
182
  <div class="ttc" id="classSVF_1_1DummyObjVar_html_a3dff74bbf50b6a901239d3fd31e0f36c"><div class="ttname"><a href="classSVF_1_1DummyObjVar.html#a3dff74bbf50b6a901239d3fd31e0f36c">SVF::DummyObjVar::DummyObjVar</a></div><div class="ttdeci">DummyObjVar(NodeID i, const MemObj *m, PNODEK ty=DummyObjNode)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00730">SVFVariables.h:730</a></div></div>
@@ -198,12 +198,12 @@ $(function() {
198
198
  <div class="ttc" id="classSVF_1_1GepValVar_html_a28e42f01110a2d0a5f1f90bca14c5035"><div class="ttname"><a href="classSVF_1_1GepValVar.html#a28e42f01110a2d0a5f1f90bca14c5035">SVF::GepValVar::classof</a></div><div class="ttdeci">static bool classof(const GepValVar *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00391">SVFVariables.h:391</a></div></div>
199
199
  <div class="ttc" id="classSVF_1_1SVFVar_html_a54b2a5ed3ed21e54eaf04182f0338333"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">SVF::SVFVar::getValueName</a></div><div class="ttdeci">virtual const std::string getValueName() const =0</div><div class="ttdoc">Get name of the LLVM value. </div></div>
200
200
  <div class="ttc" id="classSVF_1_1FIObjVar_html_a1801ca6c6cf3367eff5621fa7c788619"><div class="ttname"><a href="classSVF_1_1FIObjVar.html#a1801ca6c6cf3367eff5621fa7c788619">SVF::FIObjVar::classof</a></div><div class="ttdeci">static bool classof(const FIObjVar *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00530">SVFVariables.h:530</a></div></div>
201
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00394">LLVMUtil.h:394</a></div></div>
201
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00407">LLVMUtil.h:407</a></div></div>
202
202
  <div class="ttc" id="classSVF_1_1GepObjVar_html_a4c5e346db61f7e04c15bf8527d8eff3c"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#a4c5e346db61f7e04c15bf8527d8eff3c">SVF::GepObjVar::getBaseNode</a></div><div class="ttdeci">NodeID getBaseNode(void) const</div><div class="ttdoc">Return the base object from which this GEP node came from. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00498">SVFVariables.h:498</a></div></div>
203
203
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
204
204
  <div class="ttc" id="classSVF_1_1SVFVar_html_a283f7c0c2eaae07c6865f73a0daafeffab85277a3daeecc24c99b3da86108e482"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffab85277a3daeecc24c99b3da86108e482">SVF::SVFVar::CloneDummyObjNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00076">SVFVariables.h:76</a></div></div>
205
205
  <div class="ttc" id="classSVF_1_1VarArgPN_html"><div class="ttname"><a href="classSVF_1_1VarArgPN.html">SVF::VarArgPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00614">SVFVariables.h:614</a></div></div>
206
- <div class="ttc" id="classSVF_1_1MemObj_html_a3ab6f65ffbf6442daac4d3f70f2d3cb1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">SVF::MemObj::getId</a></div><div class="ttdeci">SymID getId() const</div><div class="ttdoc">Get the memory object id. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00423">SymbolTableInfo.h:423</a></div></div>
206
+ <div class="ttc" id="classSVF_1_1MemObj_html_a3ab6f65ffbf6442daac4d3f70f2d3cb1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">SVF::MemObj::getId</a></div><div class="ttdeci">SymID getId() const</div><div class="ttdoc">Get the memory object id. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00422">SymbolTableInfo.h:422</a></div></div>
207
207
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
208
208
  <div class="ttc" id="classSVF_1_1SVFVar_html_a0d918a6c8dd3b7b395d4c7161bcf9656"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a0d918a6c8dd3b7b395d4c7161bcf9656">SVF::SVFVar::InEdgeKindToSetMap</a></div><div class="ttdeci">SVFStmt::KindToSVFStmtMapTy InEdgeKindToSetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00082">SVFVariables.h:82</a></div></div>
209
209
  <div class="ttc" id="classSVF_1_1SVFVar_html_a7c8ffadedbf53d30694feeb7771990af"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a7c8ffadedbf53d30694feeb7771990af">SVF::SVFVar::isPtr</a></div><div class="ttdeci">bool isPtr</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00084">SVFVariables.h:84</a></div></div>
@@ -66,32 +66,34 @@ $(function() {
66
66
  <div class="title">SaberAnnotator.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="SaberAnnotator_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- SaberAnnotator.cpp -- Annotation---------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * SaberAnnotator.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: May 4, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SaberAnnotator_8h.html">SABER/SaberAnnotator.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ProgSlice_8h.html">SABER/ProgSlice.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13"> 38</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13">SaberAnnotator::annotateSource</a>()</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::string str;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1Annotator.html#a01900f5ada5948361cc18857aee26744">SB_SLICESOURCE</a> ; <span class="comment">//&lt;&lt; _curSlice-&gt;getSource()-&gt;getId();</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* sourceinst = SVFUtil::dyn_cast&lt;Instruction&gt;(<a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()-&gt;<a class="code" href="classSVF_1_1VFGNode.html#a5ac80149696c243f77e4b4d25ad44898">getValue</a>()))</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1Annotator.html#ad1424270d91f70dee1461b6301ce8091">addMDTag</a>(const_cast&lt;Instruction*&gt;(sourceinst),rawstr.str());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;instruction of source node not found&quot;</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf"> 55</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf">SaberAnnotator::annotateSinks</a>()</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span>(ProgSlice::SVFGNodeSet::const_iterator it = <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d">getSinks</a>().begin(),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; eit = <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d">getSinks</a>().end(); it!=eit; ++it)</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">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmSVFGNode</a>* ap = SVFUtil::dyn_cast&lt;ActualParmSVFGNode&gt;(*it))</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* sinkinst = ap-&gt;getCallSite()-&gt;getCallSite();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;CallInst&gt;(sinkinst) &amp;&amp; <span class="stringliteral">&quot;not a call instruction?&quot;</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* sink = SVFUtil::cast&lt;CallInst&gt;(sinkinst);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::string str;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1Annotator.html#a3edacb8703c74abf42c4a29761a3437f">SB_SLICESINK</a> &lt;&lt; <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1Annotator.html#ad1424270d91f70dee1461b6301ce8091">addMDTag</a>(const_cast&lt;CallInst*&gt;(sink),sink-&gt;getArgOperand(0),rawstr.str());</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;sink node is not a actual parameter?&quot;</span>);</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="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#ad7f1d6220243793e0eb86689ff8fb35f"> 78</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#ad7f1d6220243793e0eb86689ff8fb35f">SaberAnnotator::annotateFeasibleBranch</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a> *brInst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((succPos == 0 || succPos == 1) &amp;&amp; <span class="stringliteral">&quot;branch instruction should only have two successors&quot;</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; std::string str;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1Annotator.html#ac58473072d90baa6dc377b45f18d0da5">SB_FESIBLE</a> &lt;&lt; <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>* br = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>*<span class="keyword">&gt;</span>(brInst);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classSVF_1_1Annotator.html#ad1424270d91f70dee1461b6301ce8091">addMDTag</a>(br,br-&gt;getCondition(),rawstr.str());</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;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#acc480b98ffa75b5c30829611bc451cc8"> 93</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#acc480b98ffa75b5c30829611bc451cc8">SaberAnnotator::annotateInfeasibleBranch</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a> *brInst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((succPos == 0 || succPos == 1) &amp;&amp; <span class="stringliteral">&quot;branch instruction should only have two successors&quot;</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; std::string str;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1Annotator.html#a556138c152d52921d6f0a709a826a93a">SB_INFESIBLE</a> &lt;&lt; <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>* br = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>*<span class="keyword">&gt;</span>(brInst);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1Annotator.html#ad1424270d91f70dee1461b6301ce8091">addMDTag</a>(br,br-&gt;getCondition(),rawstr.str());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#acaabbe6e6a8ad6e8068fcef6d8caef60"> 109</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#acaabbe6e6a8ad6e8068fcef6d8caef60">SaberAnnotator::annotateSwitch</a>(<a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> *switchInst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos)</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="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(succPos &lt; switchInst-&gt;getNumSuccessors() &amp;&amp; <span class="stringliteral">&quot;successor position not correct!&quot;</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;}</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</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;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="ttc" id="SaberAnnotator_8h_html"><div class="ttname"><a href="SaberAnnotator_8h.html">SaberAnnotator.h</a></div></div>
69
+ <a href="SaberAnnotator_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- SaberAnnotator.cpp -- Annotation---------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * SaberAnnotator.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: May 4, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SaberAnnotator_8h.html">SABER/SaberAnnotator.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ProgSlice_8h.html">SABER/ProgSlice.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13"> 38</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13">SaberAnnotator::annotateSource</a>()</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::string str;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1Annotator.html#a01900f5ada5948361cc18857aee26744">SB_SLICESOURCE</a> ; <span class="comment">//&lt;&lt; _curSlice-&gt;getSource()-&gt;getId();</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* sourceinst = SVFUtil::dyn_cast&lt;Instruction&gt;(<a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()-&gt;<a class="code" href="classSVF_1_1VFGNode.html#a5ac80149696c243f77e4b4d25ad44898">getValue</a>()))</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1Annotator.html#ad1424270d91f70dee1461b6301ce8091">addMDTag</a>(const_cast&lt;Instruction*&gt;(sourceinst),rawstr.str());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;instruction of source node not found&quot;</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf"> 55</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf">SaberAnnotator::annotateSinks</a>()</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span>(ProgSlice::SVFGNodeSet::const_iterator it = <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d">getSinks</a>().begin(),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; eit = <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d">getSinks</a>().end(); it!=eit; ++it)</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">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmSVFGNode</a>* ap = SVFUtil::dyn_cast&lt;ActualParmSVFGNode&gt;(*it))</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* sinkinst = ap-&gt;getCallSite()-&gt;getCallSite();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;CallInst&gt;(sinkinst) &amp;&amp; <span class="stringliteral">&quot;not a call instruction?&quot;</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* sink = SVFUtil::cast&lt;CallInst&gt;(sinkinst);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::string str;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1Annotator.html#a3edacb8703c74abf42c4a29761a3437f">SB_SLICESINK</a> &lt;&lt; <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1Annotator.html#ad1424270d91f70dee1461b6301ce8091">addMDTag</a>(const_cast&lt;CallInst*&gt;(sink),sink-&gt;getArgOperand(0),rawstr.str());</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;sink node is not a actual parameter?&quot;</span>);</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="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#a60b66e1cb775c175c88f514e202c7611"> 78</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#a60b66e1cb775c175c88f514e202c7611">SaberAnnotator::annotateFeasibleBranch</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *branchStmt, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((succPos == 0 || succPos == 1) &amp;&amp; <span class="stringliteral">&quot;branch instruction should only have two successors&quot;</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; std::string str;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1Annotator.html#ac58473072d90baa6dc377b45f18d0da5">SB_FESIBLE</a> &lt;&lt; <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1Annotator.html#ad1424270d91f70dee1461b6301ce8091">addMDTag</a>(const_cast&lt;Instruction *&gt;(branchStmt-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db">getInst</a>()),</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; const_cast&lt;Value *&gt;(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>()), rawstr.str());</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;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#a7982caf8a058f805ae6e777ce2366246"> 93</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#a7982caf8a058f805ae6e777ce2366246">SaberAnnotator::annotateInfeasibleBranch</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *branchStmt, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((succPos == 0 || succPos == 1) &amp;&amp; <span class="stringliteral">&quot;branch instruction should only have two successors&quot;</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; std::string str;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1Annotator.html#a556138c152d52921d6f0a709a826a93a">SB_INFESIBLE</a> &lt;&lt; <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="classSVF_1_1Annotator.html#ad1424270d91f70dee1461b6301ce8091">addMDTag</a>(const_cast&lt;Instruction *&gt;(branchStmt-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db">getInst</a>()),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; const_cast&lt;Value *&gt;(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>()), rawstr.str());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#aebed471b55aa459a007d6a2cf668d886"> 109</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#aebed471b55aa459a007d6a2cf668d886">SaberAnnotator::annotateSwitch</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *swithStmt, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos)</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="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(succPos &lt; swithStmt-&gt;getNumSuccessors() &amp;&amp; <span class="stringliteral">&quot;successor position not correct!&quot;</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;}</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</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;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="ttc" id="SaberAnnotator_8h_html"><div class="ttname"><a href="SaberAnnotator_8h.html">SaberAnnotator.h</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00842">VFGNode.h:842</a></div></div>
72
- <div class="ttc" id="namespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
73
72
  <div class="ttc" id="classSVF_1_1Annotator_html_ac58473072d90baa6dc377b45f18d0da5"><div class="ttname"><a href="classSVF_1_1Annotator.html#ac58473072d90baa6dc377b45f18d0da5">SVF::Annotator::SB_FESIBLE</a></div><div class="ttdeci">const char * SB_FESIBLE</div><div class="ttdef"><b>Definition:</b> <a href="Annotator_8h_source.html#l00176">Annotator.h:176</a></div></div>
73
+ <div class="ttc" id="classSVF_1_1SaberAnnotator_html_a7982caf8a058f805ae6e777ce2366246"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#a7982caf8a058f805ae6e777ce2366246">SVF::SaberAnnotator::annotateInfeasibleBranch</a></div><div class="ttdeci">void annotateInfeasibleBranch(const BranchStmt *branchStmt, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00093">SaberAnnotator.cpp:93</a></div></div>
74
74
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1SaberAnnotator_html_aa9446af29edf126ad30bbada51478c13"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13">SVF::SaberAnnotator::annotateSource</a></div><div class="ttdeci">void annotateSource()</div><div class="ttdoc">Annotation. </div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00038">SaberAnnotator.cpp:38</a></div></div>
76
- <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00127">BasicTypes.h:127</a></div></div>
76
+ <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1Annotator_html_a01900f5ada5948361cc18857aee26744"><div class="ttname"><a href="classSVF_1_1Annotator.html#a01900f5ada5948361cc18857aee26744">SVF::Annotator::SB_SLICESOURCE</a></div><div class="ttdeci">const char * SB_SLICESOURCE</div><div class="ttdoc">Saber annotations. </div><div class="ttdef"><b>Definition:</b> <a href="Annotator_8h_source.html#l00174">Annotator.h:174</a></div></div>
78
78
  <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>
79
79
  <div class="ttc" id="classSVF_1_1VFGNode_html_a5ac80149696c243f77e4b4d25ad44898"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a5ac80149696c243f77e4b4d25ad44898">SVF::VFGNode::getValue</a></div><div class="ttdeci">virtual const Value * getValue() const</div><div class="ttdoc">Return the corresponding LLVM value, if possible, nullptr otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00090">VFGNode.h:90</a></div></div>
80
80
  <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#l00076">BasicTypes.h:76</a></div></div>
81
81
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00921">SVFStatements.h:921</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1SaberAnnotator_html_aebed471b55aa459a007d6a2cf668d886"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#aebed471b55aa459a007d6a2cf668d886">SVF::SaberAnnotator::annotateSwitch</a></div><div class="ttdeci">void annotateSwitch(const BranchStmt *swithStmt, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00109">SaberAnnotator.cpp:109</a></div></div>
82
84
  <div class="ttc" id="classSVF_1_1Annotator_html_a556138c152d52921d6f0a709a826a93a"><div class="ttname"><a href="classSVF_1_1Annotator.html#a556138c152d52921d6f0a709a826a93a">SVF::Annotator::SB_INFESIBLE</a></div><div class="ttdeci">const char * SB_INFESIBLE</div><div class="ttdef"><b>Definition:</b> <a href="Annotator_8h_source.html#l00177">Annotator.h:177</a></div></div>
85
+ <div class="ttc" id="classSVF_1_1SVFVar_html_afaa33caa8d2a306f6741d9d066243e40"><div class="ttname"><a href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">SVF::SVFVar::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00096">SVFVariables.h:96</a></div></div>
86
+ <div class="ttc" id="classSVF_1_1BranchStmt_html_a915384027ae53e99311f05a08edf99f0"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">SVF::BranchStmt::getCondition</a></div><div class="ttdeci">const SVFVar * getCondition() const</div><div class="ttdoc">Return the condition. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00283">SVFStatements.cpp:283</a></div></div>
83
87
  <div class="ttc" id="classSVF_1_1SaberAnnotator_html_adceb8a459b44c289413401b57d8aeb4d"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">SVF::SaberAnnotator::_curSlice</a></div><div class="ttdeci">const ProgSlice * _curSlice</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8h_source.html#l00047">SaberAnnotator.h:47</a></div></div>
84
- <div class="ttc" id="namespaceSVF_html_a412280b134578905248ce0122c5db7c9"><div class="ttname"><a href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SVF::SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
85
- <div class="ttc" id="classSVF_1_1SaberAnnotator_html_ad7f1d6220243793e0eb86689ff8fb35f"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#ad7f1d6220243793e0eb86689ff8fb35f">SVF::SaberAnnotator::annotateFeasibleBranch</a></div><div class="ttdeci">void annotateFeasibleBranch(const BranchInst *brInst, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00078">SaberAnnotator.cpp:78</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1SaberAnnotator_html_a60b66e1cb775c175c88f514e202c7611"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#a60b66e1cb775c175c88f514e202c7611">SVF::SaberAnnotator::annotateFeasibleBranch</a></div><div class="ttdeci">void annotateFeasibleBranch(const BranchStmt *branchStmt, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00078">SaberAnnotator.cpp:78</a></div></div>
86
89
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
87
- <div class="ttc" id="classSVF_1_1SaberAnnotator_html_acc480b98ffa75b5c30829611bc451cc8"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#acc480b98ffa75b5c30829611bc451cc8">SVF::SaberAnnotator::annotateInfeasibleBranch</a></div><div class="ttdeci">void annotateInfeasibleBranch(const BranchInst *brInst, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00093">SaberAnnotator.cpp:93</a></div></div>
88
90
  <div class="ttc" id="classSVF_1_1Annotator_html_ad1424270d91f70dee1461b6301ce8091"><div class="ttname"><a href="classSVF_1_1Annotator.html#ad1424270d91f70dee1461b6301ce8091">SVF::Annotator::addMDTag</a></div><div class="ttdeci">void addMDTag(Instruction *inst, std::string str)</div><div class="ttdoc">Simple add/remove meta data information. </div><div class="ttdef"><b>Definition:</b> <a href="Annotator_8h_source.html#l00099">Annotator.h:99</a></div></div>
89
91
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
90
92
  <div class="ttc" id="classSVF_1_1Annotator_html_a3edacb8703c74abf42c4a29761a3437f"><div class="ttname"><a href="classSVF_1_1Annotator.html#a3edacb8703c74abf42c4a29761a3437f">SVF::Annotator::SB_SLICESINK</a></div><div class="ttdeci">const char * SB_SLICESINK</div><div class="ttdef"><b>Definition:</b> <a href="Annotator_8h_source.html#l00175">Annotator.h:175</a></div></div>
91
93
  <div class="ttc" id="classSVF_1_1SaberAnnotator_html_abec0f249cc64d3588e83a68ed12271bf"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf">SVF::SaberAnnotator::annotateSinks</a></div><div class="ttdeci">void annotateSinks()</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00055">SaberAnnotator.cpp:55</a></div></div>
92
94
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a03a1ef4d56958fa4a0c3a3a95806203d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d">SVF::ProgSlice::getSinks</a></div><div class="ttdeci">const SVFGNodeSet &amp; getSinks() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00120">ProgSlice.h:120</a></div></div>
95
+ <div class="ttc" id="classSVF_1_1SVFStmt_html_a86628ea173dec4934322f5d1caf2e1db"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db">SVF::SVFStmt::getInst</a></div><div class="ttdeci">const Instruction * getInst() const</div><div class="ttdoc">Get/set methods for llvm instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00107">SVFStatements.h:107</a></div></div>
93
96
  <div class="ttc" id="ProgSlice_8h_html"><div class="ttname"><a href="ProgSlice_8h.html">ProgSlice.h</a></div></div>
94
- <div class="ttc" id="classSVF_1_1SaberAnnotator_html_acaabbe6e6a8ad6e8068fcef6d8caef60"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#acaabbe6e6a8ad6e8068fcef6d8caef60">SVF::SaberAnnotator::annotateSwitch</a></div><div class="ttdeci">void annotateSwitch(SwitchInst *brInst, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00109">SaberAnnotator.cpp:109</a></div></div>
95
97
  </div><!-- fragment --></div><!-- contents -->
96
98
  <!-- start footer part -->
97
99
  <hr class="footer"/><address class="footer"><small>
@@ -69,7 +69,7 @@ $(function() {
69
69
  <div class="title">SaberAnnotator.h File Reference</div> </div>
70
70
  </div><!--header-->
71
71
  <div class="contents">
72
- <div class="textblock"><code>#include &quot;<a class="el" href="Util_2BasicTypes_8h_source.html">Util/BasicTypes.h</a>&quot;</code><br />
72
+ <div class="textblock"><code>#include &lt;<a class="el" href="SVFStatements_8h_source.html">MemoryModel/SVFStatements.h</a>&gt;</code><br />
73
73
  <code>#include &quot;<a class="el" href="Annotator_8h_source.html">Util/Annotator.h</a>&quot;</code><br />
74
74
  </div>
75
75
  <p><a href="SaberAnnotator_8h_source.html">Go to the source code of this file.</a></p>
@@ -66,23 +66,22 @@ $(function() {
66
66
  <div class="title">SaberAnnotator.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="SaberAnnotator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- SaberAnnotator.h -- Annotating LLVM IR---------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * SaberAnnotator.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: May 4, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef SABERANNOTATOR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define SABERANNOTATOR_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Annotator_8h.html">Util/Annotator.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">class </span>ProgSlice;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SaberAnnotator.html">SaberAnnotator</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1Annotator.html">Annotator</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d"> 47</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#a76cef1b7443870816e4f31877702380f"> 50</a></span>&#160; <a class="code" href="classSVF_1_1SaberAnnotator.html#a76cef1b7443870816e4f31877702380f">SaberAnnotator</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice): _curSlice(slice)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#a6a42eb94fe1604eba729c9f7b449b93c"> 55</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#a6a42eb94fe1604eba729c9f7b449b93c">~SaberAnnotator</a>()</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><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; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13">annotateSource</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf">annotateSinks</a>();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#ad7f1d6220243793e0eb86689ff8fb35f">annotateFeasibleBranch</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a> *brInst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#acc480b98ffa75b5c30829611bc451cc8">annotateInfeasibleBranch</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a> *brInst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#acaabbe6e6a8ad6e8068fcef6d8caef60">annotateSwitch</a>(<a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> *brInst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;};</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;} <span class="comment">// End namespace SVF</span></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;<span class="preprocessor">#endif </span><span class="comment">/* SABERANNOTATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SaberAnnotator_html_a76cef1b7443870816e4f31877702380f"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#a76cef1b7443870816e4f31877702380f">SVF::SaberAnnotator::SaberAnnotator</a></div><div class="ttdeci">SaberAnnotator(ProgSlice *slice)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8h_source.html#l00050">SaberAnnotator.h:50</a></div></div>
70
- <div class="ttc" id="namespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
69
+ <a href="SaberAnnotator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- SaberAnnotator.h -- Annotating LLVM IR---------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * SaberAnnotator.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: May 4, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef SABERANNOTATOR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define SABERANNOTATOR_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="SVFStatements_8h.html">MemoryModel/SVFStatements.h</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Annotator_8h.html">Util/Annotator.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">class </span>ProgSlice;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SaberAnnotator.html">SaberAnnotator</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1Annotator.html">Annotator</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d"> 47</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* <a class="code" href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">_curSlice</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#a76cef1b7443870816e4f31877702380f"> 50</a></span>&#160; <a class="code" href="classSVF_1_1SaberAnnotator.html#a76cef1b7443870816e4f31877702380f">SaberAnnotator</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice): _curSlice(slice)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberAnnotator.html#a6a42eb94fe1604eba729c9f7b449b93c"> 55</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#a6a42eb94fe1604eba729c9f7b449b93c">~SaberAnnotator</a>()</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><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; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13">annotateSource</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf">annotateSinks</a>();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#a60b66e1cb775c175c88f514e202c7611">annotateFeasibleBranch</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *branchStmt, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#a7982caf8a058f805ae6e777ce2366246">annotateInfeasibleBranch</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *branchStmt, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberAnnotator.html#aebed471b55aa459a007d6a2cf668d886">annotateSwitch</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *swithStmt, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succPos);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;};</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;} <span class="comment">// End namespace SVF</span></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;<span class="preprocessor">#endif </span><span class="comment">/* SABERANNOTATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SaberAnnotator_html_a76cef1b7443870816e4f31877702380f"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#a76cef1b7443870816e4f31877702380f">SVF::SaberAnnotator::SaberAnnotator</a></div><div class="ttdeci">SaberAnnotator(ProgSlice *slice)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8h_source.html#l00050">SaberAnnotator.h:50</a></div></div>
70
+ <div class="ttc" id="SVFStatements_8h_html"><div class="ttname"><a href="SVFStatements_8h.html">SVFStatements.h</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1Annotator_html"><div class="ttname"><a href="classSVF_1_1Annotator.html">SVF::Annotator</a></div><div class="ttdef"><b>Definition:</b> <a href="Annotator_8h_source.html#l00020">Annotator.h:20</a></div></div>
72
- <div class="ttc" id="Util_2BasicTypes_8h_html"><div class="ttname"><a href="Util_2BasicTypes_8h.html">BasicTypes.h</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1SaberAnnotator_html_a7982caf8a058f805ae6e777ce2366246"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#a7982caf8a058f805ae6e777ce2366246">SVF::SaberAnnotator::annotateInfeasibleBranch</a></div><div class="ttdeci">void annotateInfeasibleBranch(const BranchStmt *branchStmt, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00093">SaberAnnotator.cpp:93</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1SaberAnnotator_html_aa9446af29edf126ad30bbada51478c13"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13">SVF::SaberAnnotator::annotateSource</a></div><div class="ttdeci">void annotateSource()</div><div class="ttdoc">Annotation. </div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00038">SaberAnnotator.cpp:38</a></div></div>
74
74
  <div class="ttc" id="Annotator_8h_html"><div class="ttname"><a href="Annotator_8h.html">Annotator.h</a></div></div>
75
75
  <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>
76
+ <div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00921">SVFStatements.h:921</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1SaberAnnotator_html_aebed471b55aa459a007d6a2cf668d886"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#aebed471b55aa459a007d6a2cf668d886">SVF::SaberAnnotator::annotateSwitch</a></div><div class="ttdeci">void annotateSwitch(const BranchStmt *swithStmt, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00109">SaberAnnotator.cpp:109</a></div></div>
76
78
  <div class="ttc" id="classSVF_1_1SaberAnnotator_html_adceb8a459b44c289413401b57d8aeb4d"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#adceb8a459b44c289413401b57d8aeb4d">SVF::SaberAnnotator::_curSlice</a></div><div class="ttdeci">const ProgSlice * _curSlice</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8h_source.html#l00047">SaberAnnotator.h:47</a></div></div>
77
- <div class="ttc" id="namespaceSVF_html_a412280b134578905248ce0122c5db7c9"><div class="ttname"><a href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SVF::SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
78
- <div class="ttc" id="classSVF_1_1SaberAnnotator_html_ad7f1d6220243793e0eb86689ff8fb35f"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#ad7f1d6220243793e0eb86689ff8fb35f">SVF::SaberAnnotator::annotateFeasibleBranch</a></div><div class="ttdeci">void annotateFeasibleBranch(const BranchInst *brInst, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00078">SaberAnnotator.cpp:78</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1SaberAnnotator_html_a60b66e1cb775c175c88f514e202c7611"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#a60b66e1cb775c175c88f514e202c7611">SVF::SaberAnnotator::annotateFeasibleBranch</a></div><div class="ttdeci">void annotateFeasibleBranch(const BranchStmt *branchStmt, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00078">SaberAnnotator.cpp:78</a></div></div>
79
80
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
80
- <div class="ttc" id="classSVF_1_1SaberAnnotator_html_acc480b98ffa75b5c30829611bc451cc8"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#acc480b98ffa75b5c30829611bc451cc8">SVF::SaberAnnotator::annotateInfeasibleBranch</a></div><div class="ttdeci">void annotateInfeasibleBranch(const BranchInst *brInst, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00093">SaberAnnotator.cpp:93</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1SaberAnnotator_html_abec0f249cc64d3588e83a68ed12271bf"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf">SVF::SaberAnnotator::annotateSinks</a></div><div class="ttdeci">void annotateSinks()</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00055">SaberAnnotator.cpp:55</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1ProgSlice_html"><div class="ttname"><a href="classSVF_1_1ProgSlice.html">SVF::ProgSlice</a></div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00041">ProgSlice.h:41</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1SaberAnnotator_html_a6a42eb94fe1604eba729c9f7b449b93c"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#a6a42eb94fe1604eba729c9f7b449b93c">SVF::SaberAnnotator::~SaberAnnotator</a></div><div class="ttdeci">virtual ~SaberAnnotator()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8h_source.html#l00055">SaberAnnotator.h:55</a></div></div>
84
84
  <div class="ttc" id="classSVF_1_1SaberAnnotator_html"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html">SVF::SaberAnnotator</a></div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8h_source.html#l00043">SaberAnnotator.h:43</a></div></div>
85
- <div class="ttc" id="classSVF_1_1SaberAnnotator_html_acaabbe6e6a8ad6e8068fcef6d8caef60"><div class="ttname"><a href="classSVF_1_1SaberAnnotator.html#acaabbe6e6a8ad6e8068fcef6d8caef60">SVF::SaberAnnotator::annotateSwitch</a></div><div class="ttdeci">void annotateSwitch(SwitchInst *brInst, u32_t succPos)</div><div class="ttdef"><b>Definition:</b> <a href="SaberAnnotator_8cpp_source.html#l00109">SaberAnnotator.cpp:109</a></div></div>
86
85
  </div><!-- fragment --></div><!-- contents -->
87
86
  <!-- start footer part -->
88
87
  <hr class="footer"/><address class="footer"><small>
@@ -70,7 +70,7 @@ $(function() {
70
70
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_ab0cdd9671c406e8d881f0a057fe44081"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#ab0cdd9671c406e8d881f0a057fe44081">SVF::SaberCheckerAPI::getType</a></div><div class="ttdeci">CHECKER_TYPE getType(const SVFFunction *F) const</div><div class="ttdoc">Get the function type of a function. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00076">SaberCheckerAPI.h:76</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_ad7308258d0186a99325adf030c1138a6"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#ad7308258d0186a99325adf030c1138a6">SVF::SaberCheckerAPI::isFOpen</a></div><div class="ttdeci">bool isFOpen(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00136">SaberCheckerAPI.h:136</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_a32f3c37a5957dc7533f7e82617d5d056a7e06261f283161194d11f4d27c417c45"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#a32f3c37a5957dc7533f7e82617d5d056a7e06261f283161194d11f4d27c417c45">SVF::SaberCheckerAPI::CK_DUMMY</a></div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00050">SaberCheckerAPI.h:50</a></div></div>
73
- <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#l00184">BasicTypes.h:184</a></div></div>
73
+ <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#l00179">BasicTypes.h:179</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_a62471599cba4bde20d2696a91fa064ec"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#a62471599cba4bde20d2696a91fa064ec">SVF::SaberCheckerAPI::tdAPIMap</a></div><div class="ttdeci">TDAPIMap tdAPIMap</div><div class="ttdoc">API map, from a string to threadAPI type. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00061">SaberCheckerAPI.h:61</a></div></div>
75
75
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
76
76
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_acd2486bcf4cf413e63afed7884a0719e"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#acd2486bcf4cf413e63afed7884a0719e">SVF::SaberCheckerAPI::isMemAlloc</a></div><div class="ttdeci">bool isMemAlloc(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00108">SaberCheckerAPI.h:108</a></div></div>
@@ -80,7 +80,7 @@ $(function() {
80
80
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_a32f3c37a5957dc7533f7e82617d5d056a75cc4daa228ceb26f63cb1825da8a73e"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#a32f3c37a5957dc7533f7e82617d5d056a75cc4daa228ceb26f63cb1825da8a73e">SVF::SaberCheckerAPI::CK_FOPEN</a></div><div class="ttdoc">memory deallocation </div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00053">SaberCheckerAPI.h:53</a></div></div>
81
81
  <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#l00076">BasicTypes.h:76</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_a3115116dc595c4b157f2cfc0a6ea89fc"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#a3115116dc595c4b157f2cfc0a6ea89fc">SVF::SaberCheckerAPI::TDAPIMap</a></div><div class="ttdeci">llvm::StringMap&lt; CHECKER_TYPE &gt; TDAPIMap</div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00057">SaberCheckerAPI.h:57</a></div></div>
83
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00268">SVFUtil.h:268</a></div></div>
83
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00263">SVFUtil.h:263</a></div></div>
84
84
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_a32f3c37a5957dc7533f7e82617d5d056a0fa2e38d001b233c6563822491adf507"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#a32f3c37a5957dc7533f7e82617d5d056a0fa2e38d001b233c6563822491adf507">SVF::SaberCheckerAPI::CK_FREE</a></div><div class="ttdoc">memory allocation </div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00052">SaberCheckerAPI.h:52</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_a970676d884d66da9fce00fe5b60c96ba"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#a970676d884d66da9fce00fe5b60c96ba">SVF::SaberCheckerAPI::isFClose</a></div><div class="ttdeci">bool isFClose(const SVFFunction *fun) const</div><div class="ttdoc">Return true if this call is a file close. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00148">SaberCheckerAPI.h:148</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_a0977378f6f2a782041c97912762deb5f"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#a0977378f6f2a782041c97912762deb5f">SVF::SaberCheckerAPI::isFOpen</a></div><div class="ttdeci">bool isFOpen(const SVFFunction *fun) const</div><div class="ttdoc">Return true if this call is a file open. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00132">SaberCheckerAPI.h:132</a></div></div>
@@ -82,7 +82,7 @@ $(function() {
82
82
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
84
84
  <div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00174">PointsTo.h:174</a></div></div>
85
- <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#l00184">BasicTypes.h:184</a></div></div>
85
+ <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#l00179">BasicTypes.h:179</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1SVFIR_html_a77a6bb9335aa12d29825af1b5ea07e08"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">SVF::SVFIR::getBaseObjVar</a></div><div class="ttdeci">NodeID getBaseObjVar(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00410">SVFIR.h:410</a></div></div>
87
87
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a4880571f57542afc50da506dfe273183"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183">SVF::PointerAnalysis::printStat</a></div><div class="ttdeci">bool printStat()</div><div class="ttdoc">Whether print statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00366">PointerAnalysis.h:366</a></div></div>
88
88
  <div class="ttc" id="SVFG_8h_html"><div class="ttname"><a href="SVFG_8h.html">SVFG.h</a></div></div>
@@ -124,7 +124,7 @@ $(function() {
124
124
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae6ea391ac44dffeb6899bb44323c5361"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">SVF::PointerAnalysis::isHeapMemObj</a></div><div class="ttdeci">bool isHeapMemObj(NodeID id) const</div><div class="ttdoc">Whether this object is heap or array. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00316">PointerAnalysis.h:316</a></div></div>
125
125
  <div class="ttc" id="classSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
126
126
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList&lt; NodeID &gt;</a></div></div>
127
- <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00668">SymbolTableInfo.cpp:668</a></div></div>
127
+ <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00666">SymbolTableInfo.cpp:666</a></div></div>
128
128
  <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_ad8f4f63d2071be4eb5f6fb2fdf29a10a"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#ad8f4f63d2071be4eb5f6fb2fdf29a10a">SVF::SaberSVFGBuilder::rmDerefDirSVFGEdges</a></div><div class="ttdeci">void rmDerefDirSVFGEdges(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00145">SaberSVFGBuilder.cpp:145</a></div></div>
129
129
  <div class="ttc" id="SaberCheckerAPI_8h_html"><div class="ttname"><a href="SaberCheckerAPI_8h.html">SaberCheckerAPI.h</a></div></div>
130
130
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
@@ -81,7 +81,7 @@ $(function() {
81
81
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a79833c0cf1916d63e1dd32c2220056dd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a79833c0cf1916d63e1dd32c2220056dd">SVF::SrcSnkDDA::sinksBegin</a></div><div class="ttdeci">SVFGNodeSetIter sinksBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00216">SrcSnkDDA.h:216</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a0f6cfa30c346aab1fb03a44e47c32559"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a0f6cfa30c346aab1fb03a44e47c32559">SVF::SrcSnkDDA::initSnks</a></div><div class="ttdeci">virtual void initSnks()=0</div></div>
83
83
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00046">SrcSnkDDA.h:46</a></div></div>
84
- <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#l00184">BasicTypes.h:184</a></div></div>
84
+ <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#l00179">BasicTypes.h:179</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1CFLSolver_html"><div class="ttname"><a href="classSVF_1_1CFLSolver.html">SVF::CFLSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00044">CFLSolver.h:44</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a83d5ccf0836f8f751aff078f88328cca"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a83d5ccf0836f8f751aff078f88328cca">SVF::SrcSnkDDA::DPIm</a></div><div class="ttdeci">CxtDPItem DPIm</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00053">SrcSnkDDA.h:53</a></div></div>
87
87
  <div class="ttc" id="classSVF_1_1ProgSlice_html_af6f137be08ca0e743424ff07d679777d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af6f137be08ca0e743424ff07d679777d">SVF::ProgSlice::setPartialReachable</a></div><div class="ttdeci">void setPartialReachable()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00132">ProgSlice.h:132</a></div></div>