svf-tools 1.0.553 → 1.0.554

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 (347) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +7 -7
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
  6. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +1 -1
  7. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +8 -8
  10. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +2 -2
  11. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +18 -18
  13. package/SVF-doxygen/html/html/CHGBuilder_8h.html +1 -0
  14. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +11 -10
  15. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  16. package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
  17. package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
  18. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +17 -17
  19. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +4 -4
  21. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  22. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +3 -3
  28. package/SVF-doxygen/html/html/DCHG_8cpp.html +2 -2
  29. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +38 -35
  30. package/SVF-doxygen/html/html/DCHG_8h_source.html +9 -10
  31. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +11 -14
  32. package/SVF-doxygen/html/html/DDAPass_8h_source.html +12 -13
  33. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  34. package/SVF-doxygen/html/html/DPItem_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +5 -5
  36. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +7 -7
  37. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
  40. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +3 -3
  41. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  49. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +9 -9
  50. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
  52. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +5 -5
  53. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +5 -5
  55. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  57. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +3 -3
  58. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +12 -12
  59. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +20 -18
  60. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +27 -27
  61. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +17 -17
  62. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  63. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  64. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +7 -7
  66. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +10 -10
  68. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  70. package/SVF-doxygen/html/html/MHP_8cpp_source.html +11 -11
  71. package/SVF-doxygen/html/html/MHP_8h_source.html +3 -3
  72. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  73. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  74. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  75. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +12 -12
  76. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +4 -4
  77. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
  78. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  79. package/SVF-doxygen/html/html/MTA_8h_source.html +3 -3
  80. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  81. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  82. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
  83. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  84. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +10 -10
  85. package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
  86. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  87. package/SVF-doxygen/html/html/PCG_8cpp_source.html +6 -6
  88. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +6 -6
  90. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  91. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +1 -1
  92. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  93. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  94. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +11 -11
  95. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  96. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  97. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  98. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +2 -0
  99. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +110 -109
  100. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  101. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  102. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  103. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  104. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  105. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  106. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +60 -60
  107. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +40 -40
  108. package/SVF-doxygen/html/html/SVFIR_8h_source.html +1 -1
  109. package/SVF-doxygen/html/html/SVFModule_8h_source.html +4 -4
  110. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  111. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +9 -9
  112. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +49 -52
  113. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  114. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +2 -2
  115. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
  116. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  117. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +10 -10
  118. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +4 -4
  119. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  120. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  121. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  122. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +34 -34
  123. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  124. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +5 -5
  125. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +5 -5
  126. package/SVF-doxygen/html/html/TCT_8cpp_source.html +12 -12
  127. package/SVF-doxygen/html/html/TCT_8h_source.html +8 -8
  128. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +4 -4
  129. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
  130. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  131. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
  132. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  133. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -2
  134. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +79 -80
  135. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  136. package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
  137. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  138. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  139. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +9 -12
  140. package/SVF-doxygen/html/html/WPAPass_8h_source.html +10 -11
  141. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +7 -7
  148. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  154. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +2 -2
  158. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +8 -8
  159. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +50 -50
  160. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
  161. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  164. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +2 -2
  165. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  168. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  169. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  170. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +3 -3
  173. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -4
  174. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph-members.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +114 -111
  183. package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +5 -6
  184. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +42 -79
  185. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
  186. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  188. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +5 -5
  191. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +3 -3
  192. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +12 -12
  196. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  197. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  200. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
  201. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  202. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  204. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  205. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  206. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  208. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +13 -13
  209. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
  210. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  211. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
  212. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
  214. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  215. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  216. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  221. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
  225. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +3 -3
  226. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +20 -19
  227. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +95 -54
  228. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +4 -4
  229. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  230. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +4 -4
  232. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +20 -20
  233. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +9 -9
  234. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +19 -19
  235. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +12 -12
  236. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
  239. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +10 -10
  240. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +15 -15
  241. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
  242. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  243. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +13 -13
  244. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  245. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
  246. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  248. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +11 -11
  249. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +4 -4
  251. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +4 -4
  253. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
  254. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +1 -1
  255. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
  256. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
  257. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +16 -16
  259. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +3 -3
  260. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +2 -2
  261. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +4 -4
  263. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  264. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
  265. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
  266. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
  267. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  268. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
  269. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  270. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +61 -61
  271. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
  272. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  273. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  274. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +79 -79
  275. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
  276. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +3 -3
  277. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +5 -5
  278. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
  279. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +14 -14
  280. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  281. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +2 -2
  283. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  284. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  286. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +40 -40
  287. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +8 -8
  288. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +19 -19
  289. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  290. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  291. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +4 -4
  292. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +4 -4
  293. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  294. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
  296. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  298. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  299. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  300. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
  301. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  303. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  304. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1WPAPass-members.html +4 -5
  307. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +28 -66
  308. package/SVF-doxygen/html/html/functions_b.html +1 -1
  309. package/SVF-doxygen/html/html/functions_func_b.html +1 -1
  310. package/SVF-doxygen/html/html/functions_func_g.html +6 -6
  311. package/SVF-doxygen/html/html/functions_func_r.html +3 -3
  312. package/SVF-doxygen/html/html/functions_g.html +7 -7
  313. package/SVF-doxygen/html/html/functions_r.html +2 -4
  314. package/SVF-doxygen/html/html/namespaceSVF.html +141 -141
  315. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +49 -49
  316. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +168 -171
  317. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +28 -28
  318. package/SVF-doxygen/html/html/search/all_11.js +1 -1
  319. package/SVF-doxygen/html/html/search/all_13.js +1 -1
  320. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  321. package/SVF-doxygen/html/html/search/all_7.js +1 -1
  322. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  323. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  324. package/SVF-doxygen/html/html/search/functions_6.js +1 -1
  325. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
  326. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  327. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  328. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  329. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +3 -3
  330. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +4 -4
  331. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
  332. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  333. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  334. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  335. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  336. package/include/DDA/DDAPass.h +0 -3
  337. package/include/SVF-FE/BasicTypes.h +1 -0
  338. package/include/SVF-FE/CHGBuilder.h +1 -0
  339. package/include/SVF-FE/DCHG.h +1 -1
  340. package/include/SVF-FE/LLVMModule.h +17 -0
  341. package/include/Util/BasicTypes.h +0 -1
  342. package/include/Util/SVFUtil.h +1 -13
  343. package/include/WPA/WPAPass.h +0 -3
  344. package/lib/DDA/DDAPass.cpp +0 -7
  345. package/lib/SVF-FE/DCHG.cpp +4 -7
  346. package/lib/WPA/WPAPass.cpp +0 -10
  347. package/package.json +1 -1
@@ -105,7 +105,7 @@ $(function() {
105
105
  <div class="ttc" id="classSVF_1_1Andersen_html_a8ba593bd16d4436310f2f25e75687c57"><div class="ttname"><a href="classSVF_1_1Andersen.html#a8ba593bd16d4436310f2f25e75687c57">SVF::Andersen::addCopyEdge</a></div><div class="ttdeci">virtual bool addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add copy edge on constraint graph. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00293">Andersen.h:293</a></div></div>
106
106
  <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="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
107
107
  <div class="ttc" id="classSVF_1_1AndersenSCD_html_aaee864bb1fc5b5d4643e145d80ecfb8b"><div class="ttname"><a href="classSVF_1_1AndersenSCD.html#aaee864bb1fc5b5d4643e145d80ecfb8b">SVF::AndersenSCD::processPWC</a></div><div class="ttdeci">virtual void processPWC(ConstraintNode *rep)</div><div class="ttdef"><b>Definition:</b> <a href="AndersenSCD_8cpp_source.html#l00162">AndersenSCD.cpp:162</a></div></div>
108
- <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00251">BasicTypes.h:251</a></div></div>
108
+ <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00250">BasicTypes.h:250</a></div></div>
109
109
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad95c842964e6ca46e51fb763fefec585"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">SVF::PointerAnalysis::CallSiteToFunPtrMap</a></div><div class="ttdeci">SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00104">PointerAnalysis.h:104</a></div></div>
110
110
  <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#l00169">GenericGraph.h:169</a></div></div>
111
111
  <div class="ttc" id="classSVF_1_1AddrCGEdge_html"><div class="ttname"><a href="classSVF_1_1AddrCGEdge.html">SVF::AddrCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00093">ConsGEdge.h:93</a></div></div>
@@ -134,7 +134,7 @@ $(function() {
134
134
  <div class="ttc" id="classSVF_1_1PointsTo_html_ac4688413177b49b37dbbfd3ed188d59b"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">SVF::PointsTo::empty</a></div><div class="ttdeci">bool empty(void) const</div><div class="ttdoc">Returns true if set is empty. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00094">PointsTo.cpp:94</a></div></div>
135
135
  <div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
136
136
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a0d7298cbf83568f24fd2bd1926a32968"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968">SVF::AndersenBase::numOfSCCDetection</a></div><div class="ttdeci">static u32_t numOfSCCDetection</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00126">Andersen.h:126</a></div></div>
137
- <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#l00083">BasicTypes.h:83</a></div></div>
137
+ <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#l00082">BasicTypes.h:82</a></div></div>
138
138
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00201">PointerAnalysis.h:201</a></div></div>
139
139
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a9f453ec1b4236b8194ae590981217259"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259">SVF::AndersenBase::numOfFieldExpand</a></div><div class="ttdeci">static u32_t numOfFieldExpand</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00124">Andersen.h:124</a></div></div>
140
140
  <div class="ttc" id="classSVF_1_1PTAStat_html_a5524ff7901659f56e9de343992be8f3b"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a5524ff7901659f56e9de343992be8f3b">SVF::PTAStat::startClk</a></div><div class="ttdeci">virtual void startClk()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00134">PTAStat.h:134</a></div></div>
@@ -89,7 +89,7 @@ $(function() {
89
89
  <div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00181">PointsTo.h:181</a></div></div>
90
90
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_ab1868f04de44f6fe1e9ac14f3d4ee56b"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">SVF::ConstraintNode::const_iterator</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00045">ConsGNode.h:45</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00073">GenericGraph.h:73</a></div></div>
92
- <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#l00126">BasicTypes.h:126</a></div></div>
92
+ <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#l00125">BasicTypes.h:125</a></div></div>
93
93
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a69aae96fc1c99bf108075e5061f50f9e"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a69aae96fc1c99bf108075e5061f50f9e">SVF::AndersenBase::numOfProcessedLoad</a></div><div class="ttdeci">static u32_t numOfProcessedLoad</div><div class="ttdoc">Number of processed Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00121">Andersen.h:121</a></div></div>
94
94
  <div class="ttc" id="classSVF_1_1Andersen_html_a6c60b761ddf3d6bf08c8a9c3f6fd9f0b"><div class="ttname"><a href="classSVF_1_1Andersen.html#a6c60b761ddf3d6bf08c8a9c3f6fd9f0b">SVF::Andersen::updateCallGraph</a></div><div class="ttdeci">virtual bool updateCallGraph(const CallSiteToFunPtrMap &amp;callsites)</div><div class="ttdoc">Update call graph for the input indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00626">Andersen.cpp:626</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1GepCGEdge_html"><div class="ttname"><a href="classSVF_1_1GepCGEdge.html">SVF::GepCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00225">ConsGEdge.h:225</a></div></div>
@@ -97,7 +97,7 @@ $(function() {
97
97
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
98
98
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1Options_html_adfc1a5c6098d3867e29fc65ca9ffa1cc"><div class="ttname"><a href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00037">Options.h:37</a></div></div>
100
- <div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00259">BasicTypes.h:259</a></div></div>
100
+ <div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00258">BasicTypes.h:258</a></div></div>
101
101
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00267">SVFUtil.cpp:267</a></div></div>
102
102
  <div class="ttc" id="namespaceSVF_html_ac82022f3f81965c3ce9b26c299f537a7"><div class="ttname"><a href="namespaceSVF.html#ac82022f3f81965c3ce9b26c299f537a7">SVF::NodePairSet</a></div><div class="ttdeci">Set&lt; NodePair &gt; NodePairSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00123">SVFBasicTypes.h:123</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a04acd871bd1b98cd9e83e395334ac130"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a04acd871bd1b98cd9e83e395334ac130">SVF::AndersenBase::numOfProcessedCopy</a></div><div class="ttdeci">static u32_t numOfProcessedCopy</div><div class="ttdoc">Number of processed Addr edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00119">Andersen.h:119</a></div></div>
@@ -142,7 +142,7 @@ $(function() {
142
142
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a6b7d0e57f741c446d0bf178939960143"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">SVF::AndersenBase::timeOfSCCDetection</a></div><div class="ttdeci">static double timeOfSCCDetection</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00127">Andersen.h:127</a></div></div>
143
143
  <div class="ttc" id="classSVF_1_1Steensgaard_html"><div class="ttname"><a href="classSVF_1_1Steensgaard.html">SVF::Steensgaard</a></div><div class="ttdef"><b>Definition:</b> <a href="Steensgaard_8h_source.html#l00020">Steensgaard.h:20</a></div></div>
144
144
  <div class="ttc" id="classSVF_1_1Options_html_a98a521e5c99c5248eae8f8234453b116"><div class="ttname"><a href="classSVF_1_1Options.html#a98a521e5c99c5248eae8f8234453b116">SVF::Options::ReadAnder</a></div><div class="ttdeci">static const llvm::cl::opt&lt; std ::string &gt; ReadAnder</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00236">Options.h:236</a></div></div>
145
- <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#l00281">SVFUtil.h:281</a></div></div>
145
+ <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#l00269">SVFUtil.h:269</a></div></div>
146
146
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a0ffe4f1ca1a6f70466cc1c6b3b12c90d"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a0ffe4f1ca1a6f70466cc1c6b3b12c90d">SVF::ConstraintNode::isPWCNode</a></div><div class="ttdeci">bool isPWCNode() const</div><div class="ttdoc">Whether a node involves in PWC, if so, all its points-to elements should become field-insensitive. </div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00081">ConsGNode.h:81</a></div></div>
147
147
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a8d58f5224728bb6811f12c94826167f6"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a8d58f5224728bb6811f12c94826167f6">SVF::ConstraintNode::incomingStoresEnd</a></div><div class="ttdeci">const_iterator incomingStoresEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00219">ConsGNode.h:219</a></div></div>
148
148
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01118">SparseBitVector.h:1118</a></div></div>
@@ -151,7 +151,7 @@ $(function() {
151
151
  <div class="ttc" id="classSVF_1_1GepObjVar_html"><div class="ttname"><a href="classSVF_1_1GepObjVar.html">SVF::GepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00426">SVFVariables.h:426</a></div></div>
152
152
  <div class="ttc" id="classSVF_1_1PointsTo_html_a6c1885ddfcc72604463f7c4ea94d2f74"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a6c1885ddfcc72604463f7c4ea94d2f74">SVF::PointsTo::getCurrentBestNodeMapping</a></div><div class="ttdeci">static MappingPtr getCurrentBestNodeMapping(void)</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00357">PointsTo.cpp:357</a></div></div>
153
153
  <div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
154
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a19b96a872d9096037f20e25122e469ea"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a19b96a872d9096037f20e25122e469ea">SVF::SVFUtil::isHeapAllocExtFunViaRet</a></div><div class="ttdeci">bool isHeapAllocExtFunViaRet(const SVFFunction *fun)</div><div class="ttdoc">Return true if the call is a heap allocator/reallocator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00366">SVFUtil.h:366</a></div></div>
154
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a19b96a872d9096037f20e25122e469ea"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a19b96a872d9096037f20e25122e469ea">SVF::SVFUtil::isHeapAllocExtFunViaRet</a></div><div class="ttdeci">bool isHeapAllocExtFunViaRet(const SVFFunction *fun)</div><div class="ttdoc">Return true if the call is a heap allocator/reallocator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00354">SVFUtil.h:354</a></div></div>
155
155
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a28a1c3571cdee5e05004b29ace364e67"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase::finalize</a></div><div class="ttdeci">virtual void finalize() override</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00088">Andersen.cpp:88</a></div></div>
156
156
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
157
157
  <div class="ttc" id="classSVF_1_1Andersen_html_ac4afe532655c3f311143ebbe15175ca2"><div class="ttname"><a href="classSVF_1_1Andersen.html#ac4afe532655c3f311143ebbe15175ca2">SVF::Andersen::processCopy</a></div><div class="ttdeci">virtual bool processCopy(NodeID node, const ConstraintEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00361">Andersen.cpp:361</a></div></div>
@@ -184,12 +184,12 @@ $(function() {
184
184
  <div class="ttc" id="classSVF_1_1Andersen_html_ad90c8cf193bd81870ce8dd88c9580e2c"><div class="ttname"><a href="classSVF_1_1Andersen.html#ad90c8cf193bd81870ce8dd88c9580e2c">SVF::Andersen::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00200">Andersen.cpp:200</a></div></div>
185
185
  <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="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
186
186
  <div class="ttc" id="classSVF_1_1AndersenBase_html_adaf738bee77a4b1fbb8d42911fabdb49"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#adaf738bee77a4b1fbb8d42911fabdb49">SVF::AndersenBase::AveragePointsToSetSize</a></div><div class="ttdeci">static u32_t AveragePointsToSetSize</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00130">Andersen.h:130</a></div></div>
187
- <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00251">BasicTypes.h:251</a></div></div>
187
+ <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00250">BasicTypes.h:250</a></div></div>
188
188
  <div class="ttc" id="classSVF_1_1Options_html_a8459d43a21bcf8a50fc55d14fcf5a81e"><div class="ttname"><a href="classSVF_1_1Options.html#a8459d43a21bcf8a50fc55d14fcf5a81e">SVF::Options::ClusterAnder</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ClusterAnder</div><div class="ttdoc">Whether to stage Andersen&amp;#39;s with Steensgaard and cluster based on that data. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00040">Options.h:40</a></div></div>
189
189
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad95c842964e6ca46e51fb763fefec585"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">SVF::PointerAnalysis::CallSiteToFunPtrMap</a></div><div class="ttdeci">SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00104">PointerAnalysis.h:104</a></div></div>
190
190
  <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#l00169">GenericGraph.h:169</a></div></div>
191
191
  <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
192
- <div class="ttc" id="classSVF_1_1CallSite_html_a9b7d53a345875e4e6c72eb23ac6475de"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">SVF::CallSite::getType</a></div><div class="ttdeci">Type * getType() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00268">BasicTypes.h:268</a></div></div>
192
+ <div class="ttc" id="classSVF_1_1CallSite_html_a9b7d53a345875e4e6c72eb23ac6475de"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">SVF::CallSite::getType</a></div><div class="ttdeci">Type * getType() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00267">BasicTypes.h:267</a></div></div>
193
193
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
194
194
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a19c1ed324f65f4cc58dd2fd21ed4a971"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a19c1ed324f65f4cc58dd2fd21ed4a971">SVF::ConstraintNode::incomingAddrsBegin</a></div><div class="ttdeci">const_iterator incomingAddrsBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00181">ConsGNode.h:181</a></div></div>
195
195
  <div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00162">SVFBasicTypes.h:162</a></div></div>
@@ -199,7 +199,7 @@ $(function() {
199
199
  <div class="ttc" id="classSVF_1_1AndersenBase_html_ad40b196c2c699bd115529b806d20de25"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#ad40b196c2c699bd115529b806d20de25">SVF::AndersenBase::timeOfCollapse</a></div><div class="ttdeci">static double timeOfCollapse</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00129">Andersen.h:129</a></div></div>
200
200
  <div class="ttc" id="classSVF_1_1Options_html_a620fe156ba70f997eace0ccb0d2c9f67"><div class="ttname"><a href="classSVF_1_1Options.html#a620fe156ba70f997eace0ccb0d2c9f67">SVF::Options::AnderTimeLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; AnderTimeLimit</div><div class="ttdoc">Time limit for the Andersen&amp;#39;s analyses. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00074">Options.h:74</a></div></div>
201
201
  <div class="ttc" id="classSVF_1_1Andersen_html_ae6b1e54a389abc68994219e39539127e"><div class="ttname"><a href="classSVF_1_1Andersen.html#ae6b1e54a389abc68994219e39539127e">SVF::Andersen::mergeSrcToTgt</a></div><div class="ttdeci">virtual bool mergeSrcToTgt(NodeID srcId, NodeID tgtId)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00778">Andersen.cpp:778</a></div></div>
202
- <div class="ttc" id="classSVF_1_1SVFFunction_html_a3c1fa59deae39c75c72c97e47326d982"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a3c1fa59deae39c75c72c97e47326d982">SVF::SVFFunction::isVarArg</a></div><div class="ttdeci">bool isVarArg() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00178">BasicTypes.h:178</a></div></div>
202
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_a3c1fa59deae39c75c72c97e47326d982"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a3c1fa59deae39c75c72c97e47326d982">SVF::SVFFunction::isVarArg</a></div><div class="ttdeci">bool isVarArg() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00177">BasicTypes.h:177</a></div></div>
203
203
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_ae8ac9ad8e766b961c7ce06d7219f37af"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#ae8ac9ad8e766b961c7ce06d7219f37af">SVF::ConstraintNode::incomingAddrsEnd</a></div><div class="ttdeci">const_iterator incomingAddrsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00185">ConsGNode.h:185</a></div></div>
204
204
  <div class="ttc" id="classSVF_1_1Andersen_html_ac86ffd334568e4df5c08b3c827018bef"><div class="ttname"><a href="classSVF_1_1Andersen.html#ac86ffd334568e4df5c08b3c827018bef">SVF::Andersen::mergeSccCycle</a></div><div class="ttdeci">void mergeSccCycle()</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00478">Andersen.cpp:478</a></div></div>
205
205
  <div class="ttc" id="classSVF_1_1AndersenStat_html"><div class="ttname"><a href="classSVF_1_1AndersenStat.html">SVF::AndersenStat</a></div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00048">WPAStat.h:48</a></div></div>
@@ -89,7 +89,7 @@ $(function() {
89
89
  <div class="ttc" id="classSVF_1_1AndersenWaveDiff_html"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html">SVF::AndersenWaveDiff</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00373">Andersen.h:373</a></div></div>
90
90
  <div class="ttc" id="classSVF_1_1Andersen_html_a2f88b6035ecb480f7d11afe6bc666541"><div class="ttname"><a href="classSVF_1_1Andersen.html#a2f88b6035ecb480f7d11afe6bc666541">SVF::Andersen::callsite2DummyValPN</a></div><div class="ttdeci">CallSite2DummyValPN callsite2DummyValPN</div><div class="ttdoc">Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocat...</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00234">Andersen.h:234</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1DiffPTData_html_a0f422f826bb378ebb34199f0378e351d"><div class="ttname"><a href="classSVF_1_1DiffPTData.html#a0f422f826bb378ebb34199f0378e351d">SVF::DiffPTData::updatePropaPtsMap</a></div><div class="ttdeci">virtual void updatePropaPtsMap(Key &amp;src, Key &amp;dst)=0</div></div>
92
- <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#l00126">BasicTypes.h:126</a></div></div>
92
+ <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#l00125">BasicTypes.h:125</a></div></div>
93
93
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a69aae96fc1c99bf108075e5061f50f9e"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a69aae96fc1c99bf108075e5061f50f9e">SVF::AndersenBase::numOfProcessedLoad</a></div><div class="ttdeci">static u32_t numOfProcessedLoad</div><div class="ttdoc">Number of processed Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00121">Andersen.h:121</a></div></div>
94
94
  <div class="ttc" id="classSVF_1_1WPASolver_html_aa7c0636780a86f376e9222bce771e859"><div class="ttname"><a href="classSVF_1_1WPASolver.html#aa7c0636780a86f376e9222bce771e859">SVF::WPASolver::iterationForPrintStat</a></div><div class="ttdeci">u32_t iterationForPrintStat</div><div class="ttdoc">print out statistics for i-th iteration </div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00177">WPASolver.h:177</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1GepCGEdge_html"><div class="ttname"><a href="classSVF_1_1GepCGEdge.html">SVF::GepCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00225">ConsGEdge.h:225</a></div></div>
@@ -165,7 +165,7 @@ $(function() {
165
165
  <div class="ttc" id="classSVF_1_1Andersen_html_a8ba593bd16d4436310f2f25e75687c57"><div class="ttname"><a href="classSVF_1_1Andersen.html#a8ba593bd16d4436310f2f25e75687c57">SVF::Andersen::addCopyEdge</a></div><div class="ttdeci">virtual bool addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add copy edge on constraint graph. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00293">Andersen.h:293</a></div></div>
166
166
  <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="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
167
167
  <div class="ttc" id="classSVF_1_1AndersenBase_html_adaf738bee77a4b1fbb8d42911fabdb49"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#adaf738bee77a4b1fbb8d42911fabdb49">SVF::AndersenBase::AveragePointsToSetSize</a></div><div class="ttdeci">static u32_t AveragePointsToSetSize</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00130">Andersen.h:130</a></div></div>
168
- <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00251">BasicTypes.h:251</a></div></div>
168
+ <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00250">BasicTypes.h:250</a></div></div>
169
169
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad95c842964e6ca46e51fb763fefec585"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">SVF::PointerAnalysis::CallSiteToFunPtrMap</a></div><div class="ttdeci">SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00104">PointerAnalysis.h:104</a></div></div>
170
170
  <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
171
171
  <div class="ttc" id="classSVF_1_1DiffPTData_html_a7784c4a76aa41149975840af8b32c2a9"><div class="ttname"><a href="classSVF_1_1DiffPTData.html#a7784c4a76aa41149975840af8b32c2a9">SVF::DiffPTData::clearPropaPts</a></div><div class="ttdeci">virtual void clearPropaPts(Key &amp;var)=0</div><div class="ttdoc">Clear propagated points-to set of var. </div></div>
@@ -81,7 +81,7 @@ $(function() {
81
81
  <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>
82
82
  <div class="ttc" id="classSVF_1_1Annotator_html_a11d7bfcb525e4fb74e3031dd9a2635fe"><div class="ttname"><a href="classSVF_1_1Annotator.html#a11d7bfcb525e4fb74e3031dd9a2635fe">SVF::Annotator::hasDRNotCheckFlag</a></div><div class="ttdeci">bool hasDRNotCheckFlag(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="Annotator_8h_source.html#l00067">Annotator.h:67</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1Annotator_html_a77ae10cccf9eeece8adf7dd00821e836"><div class="ttname"><a href="classSVF_1_1Annotator.html#a77ae10cccf9eeece8adf7dd00821e836">SVF::Annotator::~Annotator</a></div><div class="ttdeci">virtual ~Annotator()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="Annotator_8h_source.html#l00037">Annotator.h:37</a></div></div>
84
- <div class="ttc" id="namespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
84
+ <div class="ttc" id="namespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1Annotator_html_abc2d4a40ac8a0d70428b5066266f861c"><div class="ttname"><a href="classSVF_1_1Annotator.html#abc2d4a40ac8a0d70428b5066266f861c">SVF::Annotator::hasDRCheckFlag</a></div><div class="ttdeci">bool hasDRCheckFlag(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="Annotator_8h_source.html#l00086">Annotator.h:86</a></div></div>
86
86
  <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="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
87
87
  <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>
@@ -184,7 +184,7 @@ Functions</h2></td></tr>
184
184
  <p class="definition">Definition at line <a class="el" href="BreakConstantExpr_8cpp_source.html#l00087">87</a> of file <a class="el" href="BreakConstantExpr_8cpp_source.html">BreakConstantExpr.cpp</a>.</p>
185
185
  <div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> * CE = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(V))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (CE-&gt;getOpcode() == Instruction::GetElementPtr)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> CE;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; CE-&gt;getNumOperands(); ++<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="BreakConstantExpr_8cpp.html#a81381bb19688464256bd09ef22e965e4">hasConstantGEP</a> (CE-&gt;getOperand(<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> CE;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</div><div class="ttc" id="cJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
186
186
  <div class="ttc" id="BreakConstantExpr_8cpp_html_a81381bb19688464256bd09ef22e965e4"><div class="ttname"><a href="BreakConstantExpr_8cpp.html#a81381bb19688464256bd09ef22e965e4">hasConstantGEP</a></div><div class="ttdeci">static ConstantExpr * hasConstantGEP(Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="BreakConstantExpr_8cpp_source.html#l00087">BreakConstantExpr.cpp:87</a></div></div>
187
- <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00060">BasicTypes.h:60</a></div></div>
187
+ <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
188
188
  </div><!-- fragment -->
189
189
  </div>
190
190
  </div>
@@ -67,8 +67,8 @@ $(function() {
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
69
  <a href="BreakConstantExpr_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">/* SVF - Static Value-Flow Analysis Framework</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">Copyright (C) 2015 Yulei Sui</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">Copyright (C) 2015 Jingling Xue</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">This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">License as published by the Free Software Foundation; either</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">version 2.1 of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">Lesser General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</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"> * BreakConstantExpr.cpp</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * Created on: Oct 8, 2013</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * Author: Yulei Sui</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;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//===- BreakConstantGEPs.cpp - Change constant GEPs into GEP instructions - --//</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// The SAFECode Compiler</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">// This file was developed by the LLVM research group and is distributed under</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">// the University of Illinois Open Source License. See LICENSE.TXT for details.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// This pass changes all GEP constant expressions into GEP instructions. This</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// permits the rest of SAFECode to put run-time checks on them if necessary.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &quot;llvm/ADT/Statistic.h&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;llvm/IR/Constants.h&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;llvm/IR/InstrTypes.h&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &quot;llvm/IR/Instruction.h&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;llvm/IR/Instructions.h&quot;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;llvm/IR/LLVMContext.h&quot;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &quot;llvm/IR/InstIterator.h&quot;</span></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;<span class="preprocessor">#include &quot;<a class="code" href="SVF-FE_2BasicTypes_8h.html">SVF-FE/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="BreakConstantExpr_8h.html">SVF-FE/BreakConstantExpr.h</a>&quot;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</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="comment">// Identifier variable for the pass</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keywordtype">char</span> <a class="code" href="classSVF_1_1BreakConstantGEPs.html#a8010c4f5824ed5ebcb7ae283473ada22">BreakConstantGEPs::ID</a> = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keywordtype">char</span> <a class="code" href="classSVF_1_1MergeFunctionRets.html#a7a763ae6c9d3c72345495f01b0b4b458">MergeFunctionRets::ID</a> = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="BreakConstantExpr_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d"> 65</a></span>&#160;<span class="preprocessor">#define DEBUG_TYPE &quot;break-constgeps&quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">// Statistics</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<a class="code" href="BreakConstantExpr_8cpp.html#a53fcf89c33901a1e4bf09351eb612a6a">STATISTIC</a> (GEPChanges, <span class="stringliteral">&quot;Number of Converted GEP Constant Expressions&quot;</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<a class="code" href="BreakConstantExpr_8cpp.html#a53fcf89c33901a1e4bf09351eb612a6a">STATISTIC</a> (TotalChanges, <span class="stringliteral">&quot;Number of Converted Constant Expressions&quot;</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">// Function: hasConstantGEP()</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">// Description:</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment">// This function determines whether the given value is a constant expression</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment">// that has a constant GEP expression embedded within it.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment">// Inputs:</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">// V - The value to check.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment">// Return value:</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">// nullptr - This value is not a constant expression with a constant expression</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">// GEP within it.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">// ~nullptr - A pointer to the value casted into a ConstantExpr is returned.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="BreakConstantExpr_8cpp.html#a81381bb19688464256bd09ef22e965e4"> 87</a></span>&#160;<a class="code" href="BreakConstantExpr_8cpp.html#a81381bb19688464256bd09ef22e965e4">hasConstantGEP</a> (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * V)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> * CE = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(V))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (CE-&gt;getOpcode() == Instruction::GetElementPtr)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> CE;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; CE-&gt;getNumOperands(); ++<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="BreakConstantExpr_8cpp.html#a81381bb19688464256bd09ef22e965e4">hasConstantGEP</a> (CE-&gt;getOperand(<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> CE;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment">// Function: convertExpression()</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">// Description:</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">// Convert a constant expression into an instruction. This routine does *not*</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">// perform any recursion, so the resulting instruction may have constant</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment">// expression operands.</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="BreakConstantExpr_8cpp.html#a25cf7d9aff084a1cd1aa51c85a4a17e1"> 118</a></span>&#160;<a class="code" href="BreakConstantExpr_8cpp.html#a25cf7d9aff084a1cd1aa51c85a4a17e1">convertExpression</a> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> * CE, <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> * InsertPt)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// Convert this constant expression into a regular instruction.</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (CE-&gt;getOpcode() == Instruction::GetElementPtr)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; ++GEPChanges;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; ++TotalChanges;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* Result = CE-&gt;getAsInstruction();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; Result-&gt;insertBefore(InsertPt);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> Result;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment">// Method: runOnFunction()</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment">// Description:</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment">// Entry point for this LLVM pass.</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment">// Return value:</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment">// true - The function was modified.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">// false - The function was not modified.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keywordtype">bool</span></div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1BreakConstantGEPs.html#ae99ceb7923161d54e7d0a687f4f68e1a"> 142</a></span>&#160;<a class="code" href="classSVF_1_1BreakConstantGEPs.html#ae99ceb7923161d54e7d0a687f4f68e1a">BreakConstantGEPs::runOnModule</a> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp; module)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">bool</span> modified = <span class="keyword">false</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">for</span> (Module::iterator <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = module.begin(), E = module.end(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// Worklist of values to check for constant GEP expressions</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; std::vector&lt;Instruction *&gt; Worklist;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// Initialize the worklist by finding all instructions that have one or more</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">// operands containing a constant GEP expression.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">for</span> (Function::iterator BB = (*F).begin(); BB != (*F).end(); ++BB)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">for</span> (BasicBlock::iterator i = BB-&gt;begin(); i != BB-&gt;end(); ++i)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// Scan through the operands of this instruction. If it is a constant</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// expression GEP, insert an instruction GEP before the instruction.</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> * I = &amp;(*i);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; I-&gt;getNumOperands(); ++<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="BreakConstantExpr_8cpp.html#a81381bb19688464256bd09ef22e965e4">hasConstantGEP</a> (I-&gt;getOperand(<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)))</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; Worklist.push_back (I);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// Determine whether we will modify anything.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (Worklist.size()) modified = <span class="keyword">true</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="comment">// While the worklist is not empty, take an item from it, convert the</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// operands into instructions if necessary, and determine if the newly</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// added instructions need to be processed as well.</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">while</span> (Worklist.size())</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> * I = Worklist.back();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; Worklist.pop_back();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="comment">// Scan through the operands of this instruction and convert each into an</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="comment">// instruction. Note that this works a little differently for phi</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment">// instructions because the new instruction must be added to the</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// appropriate predecessor block.</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">PHINode</a> * PHI = SVFUtil::dyn_cast&lt;PHINode&gt;(I))</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; PHI-&gt;getNumIncomingValues(); ++<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// For PHI Nodes, if an operand is a constant expression with a GEP, we</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// want to insert the new instructions in the predecessor basic block.</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="comment">// Note: It seems that it&#39;s possible for a phi to have the same</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// incoming basic block listed multiple times; this seems okay as long</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="comment">// the same value is listed for the incoming block.</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> * InsertPt = PHI-&gt;getIncomingBlock(<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)-&gt;getTerminator();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> * CE = <a class="code" href="BreakConstantExpr_8cpp.html#a81381bb19688464256bd09ef22e965e4">hasConstantGEP</a> (PHI-&gt;getIncomingValue(<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)))</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> * NewInst = <a class="code" href="BreakConstantExpr_8cpp.html#a25cf7d9aff084a1cd1aa51c85a4a17e1">convertExpression</a> (CE, InsertPt);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i2 = <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>; i2 &lt; PHI-&gt;getNumIncomingValues(); ++i2)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> ((PHI-&gt;getIncomingBlock (i2)) == PHI-&gt;getIncomingBlock (<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>))</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; PHI-&gt;setIncomingValue (i2, NewInst);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; Worklist.push_back (NewInst);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; I-&gt;getNumOperands(); ++<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// For other instructions, we want to insert instructions replacing</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="comment">// constant expressions immediently before the instruction using the</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// constant expression.</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> * CE = <a class="code" href="BreakConstantExpr_8cpp.html#a81381bb19688464256bd09ef22e965e4">hasConstantGEP</a> (I-&gt;getOperand(<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>)))</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> * NewInst = <a class="code" href="BreakConstantExpr_8cpp.html#a25cf7d9aff084a1cd1aa51c85a4a17e1">convertExpression</a> (CE, I);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; I-&gt;replaceUsesOfWith (CE, NewInst);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; Worklist.push_back (NewInst);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> modified;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="ttc" id="cJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
70
- <div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
71
- <div class="ttc" id="namespaceSVF_html_ac8d4990439af7a2ecca7e15383119674"><div class="ttname"><a href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">SVF::PHINode</a></div><div class="ttdeci">llvm::PHINode PHINode</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
70
+ <div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00041">BasicTypes.h:41</a></div></div>
71
+ <div class="ttc" id="namespaceSVF_html_ac8d4990439af7a2ecca7e15383119674"><div class="ttname"><a href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">SVF::PHINode</a></div><div class="ttdeci">llvm::PHINode PHINode</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1BreakConstantGEPs_html_a8010c4f5824ed5ebcb7ae283473ada22"><div class="ttname"><a href="classSVF_1_1BreakConstantGEPs.html#a8010c4f5824ed5ebcb7ae283473ada22">SVF::BreakConstantGEPs::ID</a></div><div class="ttdeci">static char ID</div><div class="ttdef"><b>Definition:</b> <a href="BreakConstantExpr_8h_source.html#l00038">BreakConstantExpr.h:38</a></div></div>
73
73
  <div class="ttc" id="BreakConstantExpr_8cpp_html_a53fcf89c33901a1e4bf09351eb612a6a"><div class="ttname"><a href="BreakConstantExpr_8cpp.html#a53fcf89c33901a1e4bf09351eb612a6a">STATISTIC</a></div><div class="ttdeci">STATISTIC(GEPChanges, &quot;Number of Converted GEP Constant Expressions&quot;)</div></div>
74
74
  <div class="ttc" id="SVF-FE_2BasicTypes_8h_html"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html">BasicTypes.h</a></div></div>
@@ -80,7 +80,7 @@ $(function() {
80
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="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1MergeFunctionRets_html_a7a763ae6c9d3c72345495f01b0b4b458"><div class="ttname"><a href="classSVF_1_1MergeFunctionRets.html#a7a763ae6c9d3c72345495f01b0b4b458">SVF::MergeFunctionRets::ID</a></div><div class="ttdeci">static char ID</div><div class="ttdef"><b>Definition:</b> <a href="BreakConstantExpr_8h_source.html#l00062">BreakConstantExpr.h:62</a></div></div>
82
82
  <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
83
- <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00060">BasicTypes.h:60</a></div></div>
83
+ <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
84
84
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
85
85
  </div><!-- fragment --></div><!-- contents -->
86
86
  <!-- start footer part -->
@@ -67,7 +67,7 @@ $(function() {
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
69
  <a href="BreakConstantExpr_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">//===- BreakConstantGEPs.h - Change constant GEPs into GEP instructions --- --//</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">// The SAFECode Compiler</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">// This file was developed by the LLVM research group and is distributed under</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// the University of Illinois Open Source License. See LICENSE.TXT for details.</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// This pass changes all GEP constant expressions into GEP instructions. This</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// permits the rest of SAFECode to put run-time checks on them if necessary.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef BREAKCONSTANTGEPS_H</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define BREAKCONSTANTGEPS_H</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="preprocessor">#include &quot;<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</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">// Pass: BreakConstantGEPs</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">// Description:</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// This pass modifies a function so that it uses GEP instructions instead of</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// GEP constant expressions.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classSVF_1_1BreakConstantGEPs.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1BreakConstantGEPs.html">BreakConstantGEPs</a> : <span class="keyword">public</span> <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// Private methods</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="comment">// Private variables</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1BreakConstantGEPs.html#a8010c4f5824ed5ebcb7ae283473ada22"> 38</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="classSVF_1_1BreakConstantGEPs.html#a8010c4f5824ed5ebcb7ae283473ada22">ID</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classSVF_1_1BreakConstantGEPs.html#a5397ce21e78d09c8d1cdc3f912d53a7f"> 39</a></span>&#160; <a class="code" href="classSVF_1_1BreakConstantGEPs.html#a5397ce21e78d09c8d1cdc3f912d53a7f">BreakConstantGEPs</a>() : <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a>(ID) {}</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1BreakConstantGEPs.html#a182830d0a9d07015628211ec5eb0d4c6"> 40</a></span>&#160; llvm::StringRef <a class="code" href="classSVF_1_1BreakConstantGEPs.html#a182830d0a9d07015628211ec5eb0d4c6">getPassName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Remove Constant GEP Expressions&quot;</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BreakConstantGEPs.html#ae99ceb7923161d54e7d0a687f4f68e1a">runOnModule</a> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp; <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a>);</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;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">// Pass: MergeFunctionRets</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">// Description:</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">// This pass modifies a function so that each function only have one unified exit basic block</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1MergeFunctionRets.html"> 54</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MergeFunctionRets.html">MergeFunctionRets</a> : <span class="keyword">public</span> <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Private methods</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// Private variables</span></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="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MergeFunctionRets.html#a7a763ae6c9d3c72345495f01b0b4b458"> 62</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="classSVF_1_1MergeFunctionRets.html#a7a763ae6c9d3c72345495f01b0b4b458">ID</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1MergeFunctionRets.html#a2b989707893cd81dd275be6a3b8c79fc"> 63</a></span>&#160; <a class="code" href="classSVF_1_1MergeFunctionRets.html#a2b989707893cd81dd275be6a3b8c79fc">MergeFunctionRets</a>() : <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a>(ID) {}</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1MergeFunctionRets.html#a436a61f00b607dd0e5728daad9dd2e93"> 64</a></span>&#160; llvm::StringRef <a class="code" href="classSVF_1_1MergeFunctionRets.html#a436a61f00b607dd0e5728daad9dd2e93">getPassName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;unify function exit into one dummy exit basic block&quot;</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1MergeFunctionRets.html#a8fe74477a43f80104fb3461d006ad392"> 68</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MergeFunctionRets.html#a8fe74477a43f80104fb3461d006ad392">runOnModule</a> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp; <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a>)</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; UnifyFunctionExit(M);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</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"><a class="line" href="classSVF_1_1MergeFunctionRets.html#a8c04750179ee48d283c5db4d84b3eca1"> 73</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MergeFunctionRets.html#a8c04750179ee48d283c5db4d84b3eca1">UnifyFunctionExit</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; module)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span> (Module::const_iterator iter = module.begin(), eiter = module.end();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun = *iter;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span>(fun.isDeclaration())</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; getUnifyExit(fun)-&gt;runOnFunction(const_cast&lt;Function&amp;&gt;(fun));</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; }</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1MergeFunctionRets.html#a0644ac0f560911632855d9129f3d71ca"> 85</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ae5853f7df76735b195ff93949ca4256b">UnifyFunctionExitNodes</a>* <a class="code" href="classSVF_1_1MergeFunctionRets.html#a0644ac0f560911632855d9129f3d71ca">getUnifyExit</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fn)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; assert(!fn.isDeclaration() &amp;&amp; <span class="stringliteral">&quot;external function does not have DF&quot;</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> &amp;getAnalysis&lt;UnifyFunctionExitNodes&gt;(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(fn));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;};</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="namespaceSVF_html_ae5853f7df76735b195ff93949ca4256b"><div class="ttname"><a href="namespaceSVF.html#ae5853f7df76735b195ff93949ca4256b">SVF::UnifyFunctionExitNodes</a></div><div class="ttdeci">llvm::UnifyFunctionExitNodes UnifyFunctionExitNodes</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00038">BasicTypes.h:38</a></div></div>
70
- <div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
70
+ <div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00041">BasicTypes.h:41</a></div></div>
71
71
  <div class="ttc" id="namespaceSVF_html_ac226d84f86637126d17f6814632c8a90"><div class="ttname"><a href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">SVF::ModulePass</a></div><div class="ttdeci">llvm::ModulePass ModulePass</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00033">BasicTypes.h:33</a></div></div>
72
72
  <div class="ttc" id="Util_2BasicTypes_8h_html"><div class="ttname"><a href="Util_2BasicTypes_8h.html">BasicTypes.h</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1BreakConstantGEPs_html_a5397ce21e78d09c8d1cdc3f912d53a7f"><div class="ttname"><a href="classSVF_1_1BreakConstantGEPs.html#a5397ce21e78d09c8d1cdc3f912d53a7f">SVF::BreakConstantGEPs::BreakConstantGEPs</a></div><div class="ttdeci">BreakConstantGEPs()</div><div class="ttdef"><b>Definition:</b> <a href="BreakConstantExpr_8h_source.html#l00039">BreakConstantExpr.h:39</a></div></div>