svf-tools 1.0.309 → 1.0.313

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 (418) hide show
  1. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
  5. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +6 -6
  6. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +6 -6
  7. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +22 -22
  8. package/SVF-doxygen/html/html/AndersenWaveDiffWithType_8cpp_source.html +4 -4
  9. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +5 -5
  10. package/SVF-doxygen/html/html/Andersen_8cpp.html +1 -0
  11. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +59 -57
  12. package/SVF-doxygen/html/html/Andersen_8h_source.html +118 -118
  13. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +6 -6
  14. package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
  15. package/SVF-doxygen/html/html/CHG_8cpp_source.html +54 -55
  16. package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
  17. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +17 -16
  18. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +16 -16
  19. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +5 -5
  20. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  22. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +10 -10
  23. package/SVF-doxygen/html/html/ConsG_8h_source.html +7 -7
  24. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +13 -13
  25. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
  26. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +13 -13
  27. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  28. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +10 -10
  29. package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
  30. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
  31. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
  33. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +14 -14
  34. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/ExternalPAG_8cpp.html +1 -1
  37. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +9 -9
  38. package/SVF-doxygen/html/html/ExternalPAG_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +13 -13
  40. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +8 -8
  43. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +5 -5
  44. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +10 -10
  45. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +12 -12
  46. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
  47. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +5 -5
  48. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +82 -81
  49. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  50. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +4 -4
  51. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
  54. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +9 -9
  55. package/SVF-doxygen/html/html/ICFG_8h_source.html +6 -6
  56. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
  57. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  58. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  59. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +5 -5
  61. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -2
  64. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +11 -11
  65. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +2 -2
  66. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
  67. package/SVF-doxygen/html/html/MHP_8cpp_source.html +19 -19
  68. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
  69. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  73. package/SVF-doxygen/html/html/MTA_8cpp_source.html +10 -10
  74. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  75. package/SVF-doxygen/html/html/MemModel_8cpp_source.html +8 -52
  76. package/SVF-doxygen/html/html/MemModel_8h_source.html +44 -44
  77. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +19 -19
  78. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +7 -7
  79. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +3 -3
  80. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  81. package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -2
  82. package/SVF-doxygen/html/html/Options_8h_source.html +2 -2
  83. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  84. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +18 -18
  85. package/SVF-doxygen/html/html/PAGBuilder_8h_source.html +1 -1
  86. package/SVF-doxygen/html/html/PAGEdge_8h_source.html +2 -2
  87. package/SVF-doxygen/html/html/PAGNode_8h_source.html +10 -10
  88. package/SVF-doxygen/html/html/PAG_8cpp_source.html +35 -35
  89. package/SVF-doxygen/html/html/PAG_8h_source.html +21 -21
  90. package/SVF-doxygen/html/html/PCG_8cpp_source.html +10 -10
  91. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  92. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +9 -9
  93. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  94. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +24 -24
  95. package/SVF-doxygen/html/html/PTAType_8h_source.html +4 -4
  96. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +4 -4
  97. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
  98. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +34 -33
  99. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +7 -7
  100. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +15 -15
  101. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +66 -66
  102. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +16 -16
  103. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +7 -7
  104. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +5 -5
  105. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +22 -22
  106. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +23 -23
  107. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +6 -6
  108. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  109. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +12 -12
  110. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
  111. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +6 -6
  112. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +11 -11
  113. package/SVF-doxygen/html/html/SVFG_8h_source.html +7 -7
  114. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +5 -5
  115. package/SVF-doxygen/html/html/SVFModule_8h.html +3 -0
  116. package/SVF-doxygen/html/html/SVFModule_8h_source.html +53 -46
  117. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  118. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  119. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +10 -10
  120. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +9 -9
  121. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  122. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  123. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +2 -2
  124. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +25 -18
  125. package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +0 -4
  126. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +36 -38
  127. package/SVF-doxygen/html/html/TCT_8cpp_source.html +13 -13
  128. package/SVF-doxygen/html/html/TCT_8h_source.html +10 -10
  129. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  130. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +2 -2
  131. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
  132. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +8 -8
  133. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +7 -7
  134. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  135. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  136. package/SVF-doxygen/html/html/VFG_8cpp_source.html +8 -8
  137. package/SVF-doxygen/html/html/VFG_8h_source.html +7 -7
  138. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +8 -8
  139. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +12 -12
  140. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +11 -11
  141. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  142. package/SVF-doxygen/html/html/annotated.html +134 -136
  143. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  144. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  145. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +231 -231
  153. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
  154. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +62 -60
  155. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +43 -43
  157. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +23 -23
  159. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +1 -1
  160. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +54 -54
  161. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +42 -42
  163. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +17 -17
  165. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +32 -32
  166. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +40 -40
  168. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType-members.html +1 -1
  169. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +31 -31
  170. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +73 -72
  172. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +132 -129
  176. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  178. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjPN.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjPN.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjPN.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +115 -115
  185. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +15 -15
  186. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +18 -18
  187. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +25 -25
  188. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +22 -22
  193. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +6 -6
  194. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
  195. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +6 -6
  196. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +27 -27
  197. package/SVF-doxygen/html/html/classSVF_1_1DummyObjPN.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1DummyValPN.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +8 -8
  200. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +20 -20
  203. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +55 -55
  204. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +25 -25
  205. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +37 -37
  206. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +9 -9
  207. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  208. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  209. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
  210. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
  211. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +2 -2
  212. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +2 -2
  213. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +5 -5
  214. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +47 -47
  215. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +58 -57
  216. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +4 -4
  217. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +1 -1
  221. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +15 -15
  222. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  223. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  225. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
  226. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
  227. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +2 -2
  228. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +2 -2
  230. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
  231. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +18 -18
  233. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  234. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1LocObjTypeInfo.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1LocSymTableInfo.html +2 -2
  238. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
  239. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +33 -33
  240. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +31 -31
  242. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +28 -28
  243. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  244. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  245. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +12 -12
  246. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +7 -7
  247. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +5 -5
  248. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +29 -29
  249. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
  250. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +7 -10
  251. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +92 -199
  252. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +18 -18
  253. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
  255. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +3 -3
  256. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +3 -3
  257. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +8 -10
  258. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +67 -167
  259. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +1 -1
  260. package/SVF-doxygen/html/html/classSVF_1_1Options.html +5 -5
  261. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +47 -47
  262. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +58 -58
  263. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  264. package/SVF-doxygen/html/html/classSVF_1_1PAGEdge.html +5 -5
  265. package/SVF-doxygen/html/html/classSVF_1_1PAGNode.html +10 -10
  266. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +17 -17
  267. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  268. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +17 -17
  269. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +5 -5
  270. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +32 -32
  271. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +4 -4
  272. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +6 -6
  273. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +5 -5
  274. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +10 -10
  275. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +39 -38
  276. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +153 -116
  277. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +22 -22
  278. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +5 -5
  279. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  280. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +2 -2
  281. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  283. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
  284. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
  285. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +10 -10
  286. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
  287. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +37 -37
  288. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +8 -8
  289. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +2 -2
  290. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +2 -2
  291. package/SVF-doxygen/html/html/classSVF_1_1SVFModule-members.html +1 -0
  292. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +114 -81
  293. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  294. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
  295. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +18 -18
  296. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +12 -12
  297. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +14 -14
  299. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  301. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +78 -73
  303. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +365 -140
  304. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +37 -37
  305. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  308. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  309. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +11 -11
  311. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +8 -8
  312. package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  314. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  315. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +16 -16
  316. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +2 -2
  318. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  319. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +39 -39
  320. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +12 -12
  321. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +3 -3
  322. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +11 -11
  323. package/SVF-doxygen/html/html/classes.html +90 -90
  324. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  325. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  326. package/SVF-doxygen/html/html/functions_0x7e.html +5 -8
  327. package/SVF-doxygen/html/html/functions_a.html +13 -10
  328. package/SVF-doxygen/html/html/functions_c.html +31 -28
  329. package/SVF-doxygen/html/html/functions_func.html +12 -9
  330. package/SVF-doxygen/html/html/functions_func_0x7e.html +5 -8
  331. package/SVF-doxygen/html/html/functions_func_c.html +22 -21
  332. package/SVF-doxygen/html/html/functions_func_g.html +11 -13
  333. package/SVF-doxygen/html/html/functions_func_i.html +8 -7
  334. package/SVF-doxygen/html/html/functions_func_l.html +2 -8
  335. package/SVF-doxygen/html/html/functions_func_m.html +1 -1
  336. package/SVF-doxygen/html/html/functions_func_v.html +0 -3
  337. package/SVF-doxygen/html/html/functions_g.html +6 -8
  338. package/SVF-doxygen/html/html/functions_i.html +13 -12
  339. package/SVF-doxygen/html/html/functions_l.html +1 -5
  340. package/SVF-doxygen/html/html/functions_m.html +1 -1
  341. package/SVF-doxygen/html/html/functions_o.html +3 -3
  342. package/SVF-doxygen/html/html/functions_p.html +3 -3
  343. package/SVF-doxygen/html/html/functions_r.html +1 -1
  344. package/SVF-doxygen/html/html/functions_s.html +17 -15
  345. package/SVF-doxygen/html/html/functions_t.html +7 -7
  346. package/SVF-doxygen/html/html/functions_v.html +5 -8
  347. package/SVF-doxygen/html/html/functions_vars_l.html +1 -1
  348. package/SVF-doxygen/html/html/hierarchy.html +2 -4
  349. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  350. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  351. package/SVF-doxygen/html/html/namespaceSVF.html +0 -4
  352. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  353. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +40 -39
  354. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  355. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  356. package/SVF-doxygen/html/html/search/all_1.js +3 -2
  357. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  358. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  359. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  360. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  361. package/SVF-doxygen/html/html/search/all_16.js +1 -2
  362. package/SVF-doxygen/html/html/search/all_1b.js +3 -4
  363. package/SVF-doxygen/html/html/search/all_3.js +5 -4
  364. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  365. package/SVF-doxygen/html/html/search/all_9.js +3 -2
  366. package/SVF-doxygen/html/html/search/all_c.js +2 -3
  367. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  368. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  369. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  370. package/SVF-doxygen/html/html/search/classes_9.js +1 -3
  371. package/SVF-doxygen/html/html/search/functions_0.js +3 -2
  372. package/SVF-doxygen/html/html/search/functions_13.js +0 -1
  373. package/SVF-doxygen/html/html/search/functions_16.js +3 -4
  374. package/SVF-doxygen/html/html/search/functions_2.js +5 -4
  375. package/SVF-doxygen/html/html/search/functions_6.js +2 -2
  376. package/SVF-doxygen/html/html/search/functions_8.js +2 -1
  377. package/SVF-doxygen/html/html/search/functions_a.js +1 -3
  378. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  379. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  380. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  381. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  382. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  383. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +1 -1
  384. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +12 -12
  385. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  386. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  387. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html +17 -17
  388. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  389. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +1 -1
  390. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +14 -14
  391. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +20 -20
  392. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +16 -16
  393. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  394. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SmallVector_3_01T_00_01N_01_4_01_4.html +3 -3
  395. package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
  396. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  397. package/SVF-doxygen/html/html/svf-ex_8cpp.html +8 -7
  398. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +6 -5
  399. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  400. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  401. package/include/Graphs/GenericGraph.h +5 -8
  402. package/include/MemoryModel/MemModel.h +5 -21
  403. package/include/MemoryModel/PersistentPointsToCache.h +13 -7
  404. package/include/MemoryModel/PointerAnalysisImpl.h +1 -0
  405. package/include/SVF-FE/CHG.h +1 -1
  406. package/include/SVF-FE/SymbolTableInfo.h +14 -56
  407. package/include/Util/SVFBasicTypes.h +4 -2
  408. package/include/Util/SVFModule.h +16 -0
  409. package/include/WPA/Andersen.h +2 -7
  410. package/lib/Graphs/PAG.cpp +3 -10
  411. package/lib/MemoryModel/MemModel.cpp +10 -436
  412. package/lib/SVF-FE/CHG.cpp +0 -6
  413. package/lib/SVF-FE/CPPUtil.cpp +2 -0
  414. package/lib/SVF-FE/SymbolTableInfo.cpp +139 -12
  415. package/lib/Util/Options.cpp +2 -10
  416. package/lib/WPA/Andersen.cpp +13 -1
  417. package/package.json +1 -1
  418. package/tools/Example/svf-ex.cpp +6 -3
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">PTAType.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="PTAType_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">//===- PTAType.h -- PTAType class---------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * PTAType.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Oct 06, 2016</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Xiaokang Fan</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef PTATYPE_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define PTATYPE_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</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">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">class </span>PAGNode;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">class </span>PAG;</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"><a class="line" href="classSVF_1_1PTAType.html"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PTAType.html">PTAType</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#a2c4257200d48cad0bda92b4298879827"> 47</a></span>&#160; <a class="code" href="classSVF_1_1PTAType.html#a2c4257200d48cad0bda92b4298879827">PTAType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *ty): <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>(ty) {}</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf"> 50</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf">getLLVMType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#a7d8ebd45e3db3b3574a8a35375f5aab7"> 56</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAType.html#a7d8ebd45e3db3b3574a8a35375f5aab7">dump</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>-&gt;dump();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#ae4f7f5c5980914d13cc97f3db249def6"> 63</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTAType.html#ae4f7f5c5980914d13cc97f3db249def6">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;ty)<span class="keyword"> const</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a> == ty.<a class="code" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf">getLLVMType</a>();</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;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#a705267b70cb6f29d14c0308da1d77b82"> 68</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTAType.html#a705267b70cb6f29d14c0308da1d77b82">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;ty)<span class="keyword"> const</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a> != ty.<a class="code" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf">getLLVMType</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#aedec4c8e6cbb1ce4583d8e065ddcab6a"> 73</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTAType.html#aedec4c8e6cbb1ce4583d8e065ddcab6a">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;ty)<span class="keyword"> const</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a> &lt; ty.<a class="code" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf">getLLVMType</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</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"><a class="line" href="classSVF_1_1PTAType.html#a62d5423de98721dfa56705824c53c3b6"> 78</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTAType.html#a62d5423de98721dfa56705824c53c3b6">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;ty)<span class="keyword"> const</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a> &gt; ty.<a class="code" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf">getLLVMType</a>();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b"> 85</a></span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>;</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;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html"> 88</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a></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;<span class="keyword">public</span>:</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"><a class="line" href="classSVF_1_1TypeSet.html#a0d173b719fbae32eac326f067b1c2653"> 92</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;PTAType&gt;</a> <a class="code" href="classSVF_1_1TypeSet.html#a0d173b719fbae32eac326f067b1c2653">TypeSetTy</a>;</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"><a class="line" href="classSVF_1_1TypeSet.html#a8eb3f8fd643deafb922572aca5691e60"> 94</a></span>&#160; <span class="keyword">typedef</span> TypeSetTy::iterator <a class="code" href="classSVF_1_1TypeSet.html#a8eb3f8fd643deafb922572aca5691e60">iterator</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#afe38ff234c6a3e2b051c89f773b20e75"> 95</a></span>&#160; <span class="keyword">typedef</span> TypeSetTy::const_iterator <a class="code" href="classSVF_1_1TypeSet.html#afe38ff234c6a3e2b051c89f773b20e75">const_iterator</a>;</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="comment">// Iterators</span></div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#a216644c991ab2ae6e5d21c93e325a8e7"> 99</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1TypeSet.html#a216644c991ab2ae6e5d21c93e325a8e7">begin</a>()</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> typeSet.begin();</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"><a class="line" href="classSVF_1_1TypeSet.html#acc97e569aacfe626a501d34d84d4d860"> 103</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1TypeSet.html#acc97e569aacfe626a501d34d84d4d860">end</a>()</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> typeSet.end();</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"><a class="line" href="classSVF_1_1TypeSet.html#a9172f8741c7cfdfd80b324bd5209bd20"> 107</a></span>&#160; <span class="keyword">inline</span> const_iterator <a class="code" href="classSVF_1_1TypeSet.html#a9172f8741c7cfdfd80b324bd5209bd20">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> typeSet.begin();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#a6687c5c175d601b2f1ddab8aac0bdf4e"> 111</a></span>&#160; <span class="keyword">inline</span> const_iterator <a class="code" href="classSVF_1_1TypeSet.html#a6687c5c175d601b2f1ddab8aac0bdf4e">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> typeSet.end();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#adea8605a85c9c383c0be4972b032b842"> 118</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1TypeSet.html#adea8605a85c9c383c0be4972b032b842">size</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> typeSet.size();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#a7f05ee0c1efe8a8abe015fd67add8180"> 124</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSet.html#a7f05ee0c1efe8a8abe015fd67add8180">addType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; std::pair&lt;iterator, bool&gt; ret = typeSet.insert(type);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> ret.second;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#ac9b23f47d61d226af3968fc69032ea71"> 131</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSet.html#ac9b23f47d61d226af3968fc69032ea71">containType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> typeSet.find(type) != typeSet.end();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// Algorithm set_intersection</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">// Complexity: 2 * (N1 + N2) - 1</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">// N1, N2: number of element in the two typeset</span></div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#adca05e10c3313b501cfb7a26975cb8e2"> 140</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSet.html#adca05e10c3313b501cfb7a26975cb8e2">intersect</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a> *typeset)<span class="keyword"> const</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span> (size() == 1)</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; const_iterator first = begin();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> typeset-&gt;<a class="code" href="classSVF_1_1TypeSet.html#ac9b23f47d61d226af3968fc69032ea71">containType</a>(*first);</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="keywordflow">else</span> <span class="keywordflow">if</span> (typeset-&gt;<a class="code" href="classSVF_1_1TypeSet.html#adea8605a85c9c383c0be4972b032b842">size</a>() == 1)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; const_iterator first = typeset-&gt;<a class="code" href="classSVF_1_1TypeSet.html#a216644c991ab2ae6e5d21c93e325a8e7">begin</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> containType(*first);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; const_iterator first1 = typeset-&gt;<a class="code" href="classSVF_1_1TypeSet.html#a216644c991ab2ae6e5d21c93e325a8e7">begin</a>(), first2 = begin(),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; last1 = typeset-&gt;<a class="code" href="classSVF_1_1TypeSet.html#acc97e569aacfe626a501d34d84d4d860">end</a>(), last2 = end();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; const_iterator largest1 = last1, largest2 = last2;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; largest1--;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; largest2--;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (*largest1 &lt; *first2 || *largest2 &lt; *first1)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">while</span> (first1 != last1 &amp;&amp; first2 != last2)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (*first1 &lt; *first2)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; first1++;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*first2 &lt; *first1)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; first2++;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#a27d5170fc3d0b9231da348fc69bdc4c1"> 176</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeSet.html#a27d5170fc3d0b9231da348fc69bdc4c1">dumpTypes</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span> (const_iterator it = begin(), eit = end(); it != eit; ++it)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a> = *it;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; type.<a class="code" href="classSVF_1_1PTAType.html#a7d8ebd45e3db3b3574a8a35375f5aab7">dump</a>();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</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;<span class="keyword">private</span>:</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#a29161e8ed226190892c02cbd7eb5dcce"> 186</a></span>&#160; TypeSetTy <a class="code" href="classSVF_1_1TypeSet.html#a29161e8ed226190892c02cbd7eb5dcce">typeSet</a>;</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;</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html"> 189</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1TypeSystem.html">TypeSystem</a></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ae3bb1f41445bc7258f32feadbf20f64e"> 193</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, TypeSet*&gt;</a> <a class="code" href="classSVF_1_1TypeSystem.html#ae3bb1f41445bc7258f32feadbf20f64e">VarToTypeSetMapTy</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a74e6c7885929b86eb4fa3d2c587d9631"> 195</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;PTAType, NodeBS&gt;</a> <a class="code" href="classSVF_1_1TypeSystem.html#a74e6c7885929b86eb4fa3d2c587d9631">TypeToVarsMapTy</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a4708b09e485ed2cd4b8534793b942247"> 197</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> VarToTypeSetMapTy::iterator <a class="code" href="classSVF_1_1TypeSystem.html#a4708b09e485ed2cd4b8534793b942247">iterator</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ad8106316691f8a2f01b296c484647431"> 198</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> VarToTypeSetMapTy::const_iterator <a class="code" href="classSVF_1_1TypeSystem.html#ad8106316691f8a2f01b296c484647431">const_iterator</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a16b21a48c3316630cf78868022213291"> 202</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1TypeSystem.html#a16b21a48c3316630cf78868022213291">begin</a>()</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> VarToTypeSetMap.begin();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a8c8733d3ab9a28a25d9886ee97c3341f"> 206</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1TypeSystem.html#a8c8733d3ab9a28a25d9886ee97c3341f">end</a>()</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> VarToTypeSetMap.end();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a51fec074a4142e203396cb021a780128"> 210</a></span>&#160; <span class="keyword">inline</span> const_iterator <a class="code" href="classSVF_1_1TypeSystem.html#a51fec074a4142e203396cb021a780128">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> VarToTypeSetMap.begin();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a3c0e2a090705c1f6a67b36ee4c607b9d"> 214</a></span>&#160; <span class="keyword">inline</span> const_iterator <a class="code" href="classSVF_1_1TypeSystem.html#a3c0e2a090705c1f6a67b36ee4c607b9d">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> VarToTypeSetMap.end();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">//}@</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a14f2c80f05304e9a3f257b29dd48985e"> 221</a></span>&#160; <a class="code" href="classSVF_1_1TypeSystem.html#a14f2c80f05304e9a3f257b29dd48985e">TypeSystem</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PAG.html">PAG</a> *pag)</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; translateLLVMTypeToPTAType(pag);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a945097eb1bb050a416f37beeb7ee6194"> 227</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSystem.html#a945097eb1bb050a416f37beeb7ee6194">hasTypeSet</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var)<span class="keyword"> const</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; const_iterator it = VarToTypeSetMap.find(var);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> it != VarToTypeSetMap.end();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a6b52e1b6fbf9cfcc0337471bb425f330"> 234</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a> *<a class="code" href="classSVF_1_1TypeSystem.html#a6b52e1b6fbf9cfcc0337471bb425f330">getTypeSet</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var)<span class="keyword"> const</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; const_iterator it = VarToTypeSetMap.find(var);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != VarToTypeSetMap.end() &amp;&amp; <span class="stringliteral">&quot;Can not find typeset for var&quot;</span>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ad88b2a9bb6ddfc5a9fbef0b924559685"> 243</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSystem.html#ad88b2a9bb6ddfc5a9fbef0b924559685">addTypeForVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; iterator it = VarToTypeSetMap.find(var);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (it != VarToTypeSetMap.end())</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a> *typeSet = it-&gt;second;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> typeSet-&gt;<a class="code" href="classSVF_1_1TypeSet.html#a7f05ee0c1efe8a8abe015fd67add8180">addType</a>(type);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a> *typeSet = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; typeSet-&gt;<a class="code" href="classSVF_1_1TypeSet.html#a7f05ee0c1efe8a8abe015fd67add8180">addType</a>(type);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; VarToTypeSetMap[var] = typeSet;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a78ba5fd094d4a5fd77cc9e01bca821c2"> 262</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSystem.html#a78ba5fd094d4a5fd77cc9e01bca821c2">addTypeForVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> ptaTy(type);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> addTypeForVar(var, ptaTy);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a8b14cbba82ee2608b1ac6007e003e93f"> 268</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeSystem.html#a8b14cbba82ee2608b1ac6007e003e93f">addVarForType</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; TypeToVarsMapTy::iterator it = typeToVarsMap.find(type);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> (it == typeToVarsMap.end())</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> nodes;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; nodes.set(var);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; typeToVarsMap[<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>] = nodes;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;nodes = it-&gt;second;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; nodes.set(var);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ae9b228ed0cabc0f7185a2187f5ff0c90"> 284</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeSystem.html#ae9b228ed0cabc0f7185a2187f5ff0c90">addVarForType</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> ptaTy(type);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">return</span> addVarForType(var, ptaTy);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a5006938c789d97d2d1c4de3fa7a4b9a8"> 290</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSystem.html#a5006938c789d97d2d1c4de3fa7a4b9a8">hasVarsForType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; TypeToVarsMapTy::const_iterator it = typeToVarsMap.find(type);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> it != typeToVarsMap.end();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a4e0aa8f26c1a7c51706acbba3f6642b8"> 296</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;<a class="code" href="classSVF_1_1TypeSystem.html#a4e0aa8f26c1a7c51706acbba3f6642b8">getVarsForType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; TypeToVarsMapTy::iterator it = typeToVarsMap.find(type);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != typeToVarsMap.end() &amp;&amp; <span class="stringliteral">&quot;Can not find vars for type&quot;</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">void</span> printTypeSystem()<span class="keyword"> const</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">for</span> (const_iterator it = VarToTypeSetMap.begin(),</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; eit = VarToTypeSetMap.end(); it != eit; ++it)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af0f447732c67402037a86ea29006efc2">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;Var: &quot;</span> &lt;&lt; it-&gt;first &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af0f447732c67402037a86ea29006efc2">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;types:\n&quot;</span>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a> *typeSet = it-&gt;second;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; typeSet-&gt;<a class="code" href="classSVF_1_1TypeSet.html#a27d5170fc3d0b9231da348fc69bdc4c1">dumpTypes</a>();</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af0f447732c67402037a86ea29006efc2">SVFUtil::errs</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment"> * Translate llvm type into ptatype and build the pagnode to ptatype map</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"> * Kinds of PAGNode:</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment"> * ValPN: GepValPN, DummyValPN</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"> * ObjPN: GepObjPN, FIObjPN, DummyObjPN</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> * RetPN</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment"> * VarArgPN</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a961bbab47530d05ddb18e4c7d58d8a69"> 330</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeSystem.html#a961bbab47530d05ddb18e4c7d58d8a69">translateLLVMTypeToPTAType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PAG.html">PAG</a> *pag)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">PAG::const_iterator</a> it = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *pagNode = it-&gt;second;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span> (pagNode-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a071f592f2b811c136db5e05a6169aa99">hasValue</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *value = pagNode-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a45be6b7b2f1f9754ea47e511e65d46ae">getValue</a>();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *valType = value-&gt;getType();</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *nodeType = valType;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepValPN.html">GepValPN</a> *gepvalnode = SVFUtil::dyn_cast&lt;GepValPN&gt;(pagNode))</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; nodeType = gepvalnode-&gt;getType();</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPN&gt;(pagNode))</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">llvm::PointerType</a> *ptrTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">llvm::PointerType</a>&gt;(valType);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">llvm::FunctionType</a> *funTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">llvm::FunctionType</a>&gt;(ptrTy-&gt;getElementType());</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; nodeType = funTy-&gt;getReturnType();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> ptaType(nodeType);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (addTypeForVar(pagNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), ptaType))</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; addVarForType(pagNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), ptaType);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a4d8cfc39d4083158d34cc8e4dbaaa333"> 361</a></span>&#160; VarToTypeSetMapTy <a class="code" href="classSVF_1_1TypeSystem.html#a4d8cfc39d4083158d34cc8e4dbaaa333">VarToTypeSetMap</a>;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ae6d1f3a2e6449e5efb25ee0cb32cb1b3"> 362</a></span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;PTAType&gt;</a> <a class="code" href="classSVF_1_1TypeSystem.html#ae6d1f3a2e6449e5efb25ee0cb32cb1b3">allPTATypes</a>;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ae418e2ee701744813447350f9ece4f80"> 363</a></span>&#160; TypeToVarsMapTy <a class="code" href="classSVF_1_1TypeSystem.html#ae418e2ee701744813447350f9ece4f80">typeToVarsMap</a>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;};</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* PTATYPE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
69
+ <a href="PTAType_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">//===- PTAType.h -- PTAType class---------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * PTAType.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Oct 06, 2016</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Xiaokang Fan</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef PTATYPE_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define PTATYPE_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</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">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">class </span>PAGNode;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">class </span>PAG;</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"><a class="line" href="classSVF_1_1PTAType.html"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PTAType.html">PTAType</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#a2c4257200d48cad0bda92b4298879827"> 47</a></span>&#160; <a class="code" href="classSVF_1_1PTAType.html#a2c4257200d48cad0bda92b4298879827">PTAType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *ty): <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>(ty) {}</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf"> 50</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf">getLLVMType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#a7d8ebd45e3db3b3574a8a35375f5aab7"> 56</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAType.html#a7d8ebd45e3db3b3574a8a35375f5aab7">dump</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>-&gt;dump();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#ae4f7f5c5980914d13cc97f3db249def6"> 63</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTAType.html#ae4f7f5c5980914d13cc97f3db249def6">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;ty)<span class="keyword"> const</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a> == ty.<a class="code" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf">getLLVMType</a>();</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;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#a705267b70cb6f29d14c0308da1d77b82"> 68</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTAType.html#a705267b70cb6f29d14c0308da1d77b82">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;ty)<span class="keyword"> const</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a> != ty.<a class="code" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf">getLLVMType</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#aedec4c8e6cbb1ce4583d8e065ddcab6a"> 73</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTAType.html#aedec4c8e6cbb1ce4583d8e065ddcab6a">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;ty)<span class="keyword"> const</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a> &lt; ty.<a class="code" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf">getLLVMType</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</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"><a class="line" href="classSVF_1_1PTAType.html#a62d5423de98721dfa56705824c53c3b6"> 78</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTAType.html#a62d5423de98721dfa56705824c53c3b6">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;ty)<span class="keyword"> const</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a> &gt; ty.<a class="code" href="classSVF_1_1PTAType.html#a03fa0db591fb5b93e6701e835ade9dcf">getLLVMType</a>();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b"> 85</a></span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>;</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;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html"> 88</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a></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;<span class="keyword">public</span>:</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"><a class="line" href="classSVF_1_1TypeSet.html#a0d173b719fbae32eac326f067b1c2653"> 92</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;PTAType&gt;</a> <a class="code" href="classSVF_1_1TypeSet.html#a0d173b719fbae32eac326f067b1c2653">TypeSetTy</a>;</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"><a class="line" href="classSVF_1_1TypeSet.html#a8eb3f8fd643deafb922572aca5691e60"> 94</a></span>&#160; <span class="keyword">typedef</span> TypeSetTy::iterator <a class="code" href="classSVF_1_1TypeSet.html#a8eb3f8fd643deafb922572aca5691e60">iterator</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#afe38ff234c6a3e2b051c89f773b20e75"> 95</a></span>&#160; <span class="keyword">typedef</span> TypeSetTy::const_iterator <a class="code" href="classSVF_1_1TypeSet.html#afe38ff234c6a3e2b051c89f773b20e75">const_iterator</a>;</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="comment">// Iterators</span></div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#a216644c991ab2ae6e5d21c93e325a8e7"> 99</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1TypeSet.html#a216644c991ab2ae6e5d21c93e325a8e7">begin</a>()</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> typeSet.begin();</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"><a class="line" href="classSVF_1_1TypeSet.html#acc97e569aacfe626a501d34d84d4d860"> 103</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1TypeSet.html#acc97e569aacfe626a501d34d84d4d860">end</a>()</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> typeSet.end();</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"><a class="line" href="classSVF_1_1TypeSet.html#a9172f8741c7cfdfd80b324bd5209bd20"> 107</a></span>&#160; <span class="keyword">inline</span> const_iterator <a class="code" href="classSVF_1_1TypeSet.html#a9172f8741c7cfdfd80b324bd5209bd20">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> typeSet.begin();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#a6687c5c175d601b2f1ddab8aac0bdf4e"> 111</a></span>&#160; <span class="keyword">inline</span> const_iterator <a class="code" href="classSVF_1_1TypeSet.html#a6687c5c175d601b2f1ddab8aac0bdf4e">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> typeSet.end();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#adea8605a85c9c383c0be4972b032b842"> 118</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1TypeSet.html#adea8605a85c9c383c0be4972b032b842">size</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> typeSet.size();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#a7f05ee0c1efe8a8abe015fd67add8180"> 124</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSet.html#a7f05ee0c1efe8a8abe015fd67add8180">addType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; std::pair&lt;iterator, bool&gt; ret = typeSet.insert(type);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> ret.second;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#ac9b23f47d61d226af3968fc69032ea71"> 131</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSet.html#ac9b23f47d61d226af3968fc69032ea71">containType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> typeSet.find(type) != typeSet.end();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// Algorithm set_intersection</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">// Complexity: 2 * (N1 + N2) - 1</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">// N1, N2: number of element in the two typeset</span></div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#adca05e10c3313b501cfb7a26975cb8e2"> 140</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSet.html#adca05e10c3313b501cfb7a26975cb8e2">intersect</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a> *typeset)<span class="keyword"> const</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span> (size() == 1)</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; const_iterator first = begin();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> typeset-&gt;<a class="code" href="classSVF_1_1TypeSet.html#ac9b23f47d61d226af3968fc69032ea71">containType</a>(*first);</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="keywordflow">else</span> <span class="keywordflow">if</span> (typeset-&gt;<a class="code" href="classSVF_1_1TypeSet.html#adea8605a85c9c383c0be4972b032b842">size</a>() == 1)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; const_iterator first = typeset-&gt;<a class="code" href="classSVF_1_1TypeSet.html#a216644c991ab2ae6e5d21c93e325a8e7">begin</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> containType(*first);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; const_iterator first1 = typeset-&gt;<a class="code" href="classSVF_1_1TypeSet.html#a216644c991ab2ae6e5d21c93e325a8e7">begin</a>(), first2 = begin(),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; last1 = typeset-&gt;<a class="code" href="classSVF_1_1TypeSet.html#acc97e569aacfe626a501d34d84d4d860">end</a>(), last2 = end();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; const_iterator largest1 = last1, largest2 = last2;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; largest1--;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; largest2--;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (*largest1 &lt; *first2 || *largest2 &lt; *first1)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">while</span> (first1 != last1 &amp;&amp; first2 != last2)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (*first1 &lt; *first2)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; first1++;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*first2 &lt; *first1)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; first2++;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#a27d5170fc3d0b9231da348fc69bdc4c1"> 176</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeSet.html#a27d5170fc3d0b9231da348fc69bdc4c1">dumpTypes</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span> (const_iterator it = begin(), eit = end(); it != eit; ++it)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a> = *it;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; type.<a class="code" href="classSVF_1_1PTAType.html#a7d8ebd45e3db3b3574a8a35375f5aab7">dump</a>();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</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;<span class="keyword">private</span>:</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSet.html#a29161e8ed226190892c02cbd7eb5dcce"> 186</a></span>&#160; TypeSetTy <a class="code" href="classSVF_1_1TypeSet.html#a29161e8ed226190892c02cbd7eb5dcce">typeSet</a>;</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;</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html"> 189</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1TypeSystem.html">TypeSystem</a></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ae3bb1f41445bc7258f32feadbf20f64e"> 193</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, TypeSet*&gt;</a> <a class="code" href="classSVF_1_1TypeSystem.html#ae3bb1f41445bc7258f32feadbf20f64e">VarToTypeSetMapTy</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a74e6c7885929b86eb4fa3d2c587d9631"> 195</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;PTAType, NodeBS&gt;</a> <a class="code" href="classSVF_1_1TypeSystem.html#a74e6c7885929b86eb4fa3d2c587d9631">TypeToVarsMapTy</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a4708b09e485ed2cd4b8534793b942247"> 197</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> VarToTypeSetMapTy::iterator <a class="code" href="classSVF_1_1TypeSystem.html#a4708b09e485ed2cd4b8534793b942247">iterator</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ad8106316691f8a2f01b296c484647431"> 198</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> VarToTypeSetMapTy::const_iterator <a class="code" href="classSVF_1_1TypeSystem.html#ad8106316691f8a2f01b296c484647431">const_iterator</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a16b21a48c3316630cf78868022213291"> 202</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1TypeSystem.html#a16b21a48c3316630cf78868022213291">begin</a>()</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> VarToTypeSetMap.begin();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a8c8733d3ab9a28a25d9886ee97c3341f"> 206</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1TypeSystem.html#a8c8733d3ab9a28a25d9886ee97c3341f">end</a>()</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> VarToTypeSetMap.end();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a51fec074a4142e203396cb021a780128"> 210</a></span>&#160; <span class="keyword">inline</span> const_iterator <a class="code" href="classSVF_1_1TypeSystem.html#a51fec074a4142e203396cb021a780128">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> VarToTypeSetMap.begin();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a3c0e2a090705c1f6a67b36ee4c607b9d"> 214</a></span>&#160; <span class="keyword">inline</span> const_iterator <a class="code" href="classSVF_1_1TypeSystem.html#a3c0e2a090705c1f6a67b36ee4c607b9d">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> VarToTypeSetMap.end();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">//}@</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a14f2c80f05304e9a3f257b29dd48985e"> 221</a></span>&#160; <a class="code" href="classSVF_1_1TypeSystem.html#a14f2c80f05304e9a3f257b29dd48985e">TypeSystem</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PAG.html">PAG</a> *pag)</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; translateLLVMTypeToPTAType(pag);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a945097eb1bb050a416f37beeb7ee6194"> 227</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSystem.html#a945097eb1bb050a416f37beeb7ee6194">hasTypeSet</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var)<span class="keyword"> const</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; const_iterator it = VarToTypeSetMap.find(var);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> it != VarToTypeSetMap.end();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a6b52e1b6fbf9cfcc0337471bb425f330"> 234</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a> *<a class="code" href="classSVF_1_1TypeSystem.html#a6b52e1b6fbf9cfcc0337471bb425f330">getTypeSet</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var)<span class="keyword"> const</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; const_iterator it = VarToTypeSetMap.find(var);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != VarToTypeSetMap.end() &amp;&amp; <span class="stringliteral">&quot;Can not find typeset for var&quot;</span>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ad88b2a9bb6ddfc5a9fbef0b924559685"> 243</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSystem.html#ad88b2a9bb6ddfc5a9fbef0b924559685">addTypeForVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; iterator it = VarToTypeSetMap.find(var);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (it != VarToTypeSetMap.end())</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a> *typeSet = it-&gt;second;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> typeSet-&gt;<a class="code" href="classSVF_1_1TypeSet.html#a7f05ee0c1efe8a8abe015fd67add8180">addType</a>(type);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a> *typeSet = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; typeSet-&gt;<a class="code" href="classSVF_1_1TypeSet.html#a7f05ee0c1efe8a8abe015fd67add8180">addType</a>(type);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; VarToTypeSetMap[var] = typeSet;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a78ba5fd094d4a5fd77cc9e01bca821c2"> 262</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSystem.html#a78ba5fd094d4a5fd77cc9e01bca821c2">addTypeForVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> ptaTy(type);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> addTypeForVar(var, ptaTy);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a8b14cbba82ee2608b1ac6007e003e93f"> 268</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeSystem.html#a8b14cbba82ee2608b1ac6007e003e93f">addVarForType</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; TypeToVarsMapTy::iterator it = typeToVarsMap.find(type);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> (it == typeToVarsMap.end())</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> nodes;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; nodes.set(var);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; typeToVarsMap[<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>] = nodes;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;nodes = it-&gt;second;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; nodes.set(var);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ae9b228ed0cabc0f7185a2187f5ff0c90"> 284</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeSystem.html#ae9b228ed0cabc0f7185a2187f5ff0c90">addVarForType</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> ptaTy(type);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">return</span> addVarForType(var, ptaTy);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a5006938c789d97d2d1c4de3fa7a4b9a8"> 290</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TypeSystem.html#a5006938c789d97d2d1c4de3fa7a4b9a8">hasVarsForType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; TypeToVarsMapTy::const_iterator it = typeToVarsMap.find(type);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> it != typeToVarsMap.end();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a4e0aa8f26c1a7c51706acbba3f6642b8"> 296</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;<a class="code" href="classSVF_1_1TypeSystem.html#a4e0aa8f26c1a7c51706acbba3f6642b8">getVarsForType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> &amp;<a class="code" href="classSVF_1_1PTAType.html#a748b82b463001ba95f08a7ec229c412b">type</a>)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; TypeToVarsMapTy::iterator it = typeToVarsMap.find(type);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != typeToVarsMap.end() &amp;&amp; <span class="stringliteral">&quot;Can not find vars for type&quot;</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">void</span> printTypeSystem()<span class="keyword"> const</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">for</span> (const_iterator it = VarToTypeSetMap.begin(),</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; eit = VarToTypeSetMap.end(); it != eit; ++it)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af0f447732c67402037a86ea29006efc2">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;Var: &quot;</span> &lt;&lt; it-&gt;first &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af0f447732c67402037a86ea29006efc2">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;types:\n&quot;</span>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TypeSet.html">TypeSet</a> *typeSet = it-&gt;second;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; typeSet-&gt;<a class="code" href="classSVF_1_1TypeSet.html#a27d5170fc3d0b9231da348fc69bdc4c1">dumpTypes</a>();</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af0f447732c67402037a86ea29006efc2">SVFUtil::errs</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment"> * Translate llvm type into ptatype and build the pagnode to ptatype map</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"> * Kinds of PAGNode:</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment"> * ValPN: GepValPN, DummyValPN</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"> * ObjPN: GepObjPN, FIObjPN, DummyObjPN</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> * RetPN</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment"> * VarArgPN</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a961bbab47530d05ddb18e4c7d58d8a69"> 330</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeSystem.html#a961bbab47530d05ddb18e4c7d58d8a69">translateLLVMTypeToPTAType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PAG.html">PAG</a> *pag)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">PAG::const_iterator</a> it = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *pagNode = it-&gt;second;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span> (pagNode-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a071f592f2b811c136db5e05a6169aa99">hasValue</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *value = pagNode-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a45be6b7b2f1f9754ea47e511e65d46ae">getValue</a>();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *valType = value-&gt;getType();</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *nodeType = valType;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepValPN.html">GepValPN</a> *gepvalnode = SVFUtil::dyn_cast&lt;GepValPN&gt;(pagNode))</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; nodeType = gepvalnode-&gt;getType();</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPN&gt;(pagNode))</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">llvm::PointerType</a> *ptrTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">llvm::PointerType</a>&gt;(valType);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">llvm::FunctionType</a> *funTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">llvm::FunctionType</a>&gt;(ptrTy-&gt;getElementType());</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; nodeType = funTy-&gt;getReturnType();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="classSVF_1_1PTAType.html">PTAType</a> ptaType(nodeType);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (addTypeForVar(pagNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), ptaType))</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; addVarForType(pagNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), ptaType);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#a4d8cfc39d4083158d34cc8e4dbaaa333"> 361</a></span>&#160; VarToTypeSetMapTy <a class="code" href="classSVF_1_1TypeSystem.html#a4d8cfc39d4083158d34cc8e4dbaaa333">VarToTypeSetMap</a>;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ae6d1f3a2e6449e5efb25ee0cb32cb1b3"> 362</a></span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;PTAType&gt;</a> <a class="code" href="classSVF_1_1TypeSystem.html#ae6d1f3a2e6449e5efb25ee0cb32cb1b3">allPTATypes</a>;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeSystem.html#ae418e2ee701744813447350f9ece4f80"> 363</a></span>&#160; TypeToVarsMapTy <a class="code" href="classSVF_1_1TypeSystem.html#ae418e2ee701744813447350f9ece4f80">typeToVarsMap</a>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;};</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* PTATYPE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1TypeSystem_html_ad8106316691f8a2f01b296c484647431"><div class="ttname"><a href="classSVF_1_1TypeSystem.html#ad8106316691f8a2f01b296c484647431">SVF::TypeSystem::const_iterator</a></div><div class="ttdeci">VarToTypeSetMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00198">PTAType.h:198</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1TypeSystem_html_ae3bb1f41445bc7258f32feadbf20f64e"><div class="ttname"><a href="classSVF_1_1TypeSystem.html#ae3bb1f41445bc7258f32feadbf20f64e">SVF::TypeSystem::VarToTypeSetMapTy</a></div><div class="ttdeci">Map&lt; NodeID, TypeSet * &gt; VarToTypeSetMapTy</div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00193">PTAType.h:193</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1TypeSystem_html_ae418e2ee701744813447350f9ece4f80"><div class="ttname"><a href="classSVF_1_1TypeSystem.html#ae418e2ee701744813447350f9ece4f80">SVF::TypeSystem::typeToVarsMap</a></div><div class="ttdeci">TypeToVarsMapTy typeToVarsMap</div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00363">PTAType.h:363</a></div></div>
@@ -90,10 +90,10 @@ $(function() {
90
90
  <div class="ttc" id="classSVF_1_1PTAType_html_ae4f7f5c5980914d13cc97f3db249def6"><div class="ttname"><a href="classSVF_1_1PTAType.html#ae4f7f5c5980914d13cc97f3db249def6">SVF::PTAType::operator==</a></div><div class="ttdeci">bool operator==(const PTAType &amp;ty) const</div><div class="ttdoc">Operator overloading. </div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00063">PTAType.h:63</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1PAGNode_html_a45be6b7b2f1f9754ea47e511e65d46ae"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a45be6b7b2f1f9754ea47e511e65d46ae">SVF::PAGNode::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00094">PAGNode.h:94</a></div></div>
92
92
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00100">SVFBasicTypes.h:100</a></div></div>
93
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph&lt; PAGNode, PAGEdge &gt;::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00338">GenericGraph.h:338</a></div></div>
93
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph&lt; PAGNode, PAGEdge &gt;::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00339">GenericGraph.h:339</a></div></div>
94
94
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1TypeSet_html_adca05e10c3313b501cfb7a26975cb8e2"><div class="ttname"><a href="classSVF_1_1TypeSet.html#adca05e10c3313b501cfb7a26975cb8e2">SVF::TypeSet::intersect</a></div><div class="ttdeci">bool intersect(const TypeSet *typeset) const</div><div class="ttdoc">Intersect with another typeset or not. </div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00140">PTAType.h:140</a></div></div>
96
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
96
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
97
97
  <div class="ttc" id="classSVF_1_1TypeSet_html_a6687c5c175d601b2f1ddab8aac0bdf4e"><div class="ttname"><a href="classSVF_1_1TypeSet.html#a6687c5c175d601b2f1ddab8aac0bdf4e">SVF::TypeSet::end</a></div><div class="ttdeci">const_iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00111">PTAType.h:111</a></div></div>
98
98
  <div class="ttc" id="classSVF_1_1TypeSet_html_a27d5170fc3d0b9231da348fc69bdc4c1"><div class="ttname"><a href="classSVF_1_1TypeSet.html#a27d5170fc3d0b9231da348fc69bdc4c1">SVF::TypeSet::dumpTypes</a></div><div class="ttdeci">void dumpTypes() const</div><div class="ttdoc">Dump all types in the typeset. </div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00176">PTAType.h:176</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1TypeSystem_html_a8b14cbba82ee2608b1ac6007e003e93f"><div class="ttname"><a href="classSVF_1_1TypeSystem.html#a8b14cbba82ee2608b1ac6007e003e93f">SVF::TypeSystem::addVarForType</a></div><div class="ttdeci">void addVarForType(NodeID var, const PTAType &amp;type)</div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00268">PTAType.h:268</a></div></div>
@@ -120,7 +120,7 @@ $(function() {
120
120
  <div class="ttc" id="classSVF_1_1TypeSystem_html_a74e6c7885929b86eb4fa3d2c587d9631"><div class="ttname"><a href="classSVF_1_1TypeSystem.html#a74e6c7885929b86eb4fa3d2c587d9631">SVF::TypeSystem::TypeToVarsMapTy</a></div><div class="ttdeci">OrderedMap&lt; PTAType, NodeBS &gt; TypeToVarsMapTy</div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00195">PTAType.h:195</a></div></div>
121
121
  <div class="ttc" id="classSVF_1_1PTAType_html_a2c4257200d48cad0bda92b4298879827"><div class="ttname"><a href="classSVF_1_1PTAType.html#a2c4257200d48cad0bda92b4298879827">SVF::PTAType::PTAType</a></div><div class="ttdeci">PTAType(const Type *ty)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00047">PTAType.h:47</a></div></div>
122
122
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
123
- <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#l00164">GenericGraph.h:164</a></div></div>
123
+ <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
124
124
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
125
125
  <div class="ttc" id="classSVF_1_1TypeSystem_html_a8c8733d3ab9a28a25d9886ee97c3341f"><div class="ttname"><a href="classSVF_1_1TypeSystem.html#a8c8733d3ab9a28a25d9886ee97c3341f">SVF::TypeSystem::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="PTAType_8h_source.html#l00206">PTAType.h:206</a></div></div>
126
126
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
@@ -83,11 +83,11 @@ $(function() {
83
83
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a2932b15ef74e46b676075ba1b2e82111"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">SVF::PathCondAllocator::printPathCond</a></div><div class="ttdeci">void printPathCond()</div><div class="ttdoc">Print out the path condition information. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00534">PathCondAllocator.cpp:534</a></div></div>
84
84
  <div class="ttc" id="SVFG_8h_html"><div class="ttname"><a href="SVFG_8h.html">SVFG.h</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1DPItem_html_a5dbb0e6010b38c5b937ff06cb40cd0ef"><div class="ttname"><a href="classSVF_1_1DPItem.html#a5dbb0e6010b38c5b937ff06cb40cd0ef">SVF::DPItem::maximumBudget</a></div><div class="ttdeci">static u64_t maximumBudget</div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00050">DPItem.h:50</a></div></div>
86
- <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00038">SVFModule.h:38</a></div></div>
86
+ <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
87
87
  <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00209">BasicTypes.h:209</a></div></div>
88
88
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
89
89
  <div class="ttc" id="classSVF_1_1CondExpr_html"><div class="ttname"><a href="classSVF_1_1CondExpr.html">SVF::CondExpr</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00042">Conditions.h:42</a></div></div>
90
- <div class="ttc" id="SVFBasicTypes_8h_html_a817abc424f7cfcdec5954c7807970f36"><div class="ttname"><a href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a></div><div class="ttdeci">#define DSaber</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00166">SVFBasicTypes.h:166</a></div></div>
90
+ <div class="ttc" id="SVFBasicTypes_8h_html_a817abc424f7cfcdec5954c7807970f36"><div class="ttname"><a href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a></div><div class="ttdeci">#define DSaber</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00168">SVFBasicTypes.h:168</a></div></div>
91
91
  <div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00198">BasicTypes.h:198</a></div></div>
92
92
  <div class="ttc" id="classSVF_1_1ContextCond_html_a151b9f21eedd4fdd8f46b78bb456582d"><div class="ttname"><a href="classSVF_1_1ContextCond.html#a151b9f21eedd4fdd8f46b78bb456582d">SVF::ContextCond::maximumCxt</a></div><div class="ttdeci">static u32_t maximumCxt</div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00354">DPItem.h:354</a></div></div>
93
93
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6528edf9a1750df4a84d1a60d4d0bbe4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVF::SVFUtil::isProgExitCall</a></div><div class="ttdeci">bool isProgExitCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00470">LLVMUtil.h:470</a></div></div>
@@ -113,7 +113,7 @@ $(function() {
113
113
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a3fce010083b85a4421eed4c17eb54640"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a3fce010083b85a4421eed4c17eb54640">SVF::PathCondAllocator::allocate</a></div><div class="ttdeci">void allocate(const SVFModule *module)</div><div class="ttdoc">Perform path allocation. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00051">PathCondAllocator.cpp:51</a></div></div>
114
114
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
115
115
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d685cfd0f0652a0ff839969f763371b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b">SVF::PathCondAllocator::CondPosMap</a></div><div class="ttdeci">Map&lt; u32_t, Condition * &gt; CondPosMap</div><div class="ttdoc">z3 condition </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00053">PathCondAllocator.h:53</a></div></div>
116
- <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00152">SVFBasicTypes.h:152</a></div></div>
116
+ <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
117
117
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab31b523d760d634811ca4d1de7fc4eb2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab31b523d760d634811ca4d1de7fc4eb2">SVF::PathCondAllocator::evaluateTestNullLikeExpr</a></div><div class="ttdeci">Condition * evaluateTestNullLikeExpr(const BranchInst *brInst, const BasicBlock *succ)</div><div class="ttdoc">Return branch condition after evaluating test null like expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00177">PathCondAllocator.cpp:177</a></div></div>
118
118
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
119
119
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
@@ -123,7 +123,7 @@ $(function() {
123
123
  <div class="ttc" id="classSVF_1_1ContextCond_html_aa61b4de81e440448daaf0c5be53aebf3"><div class="ttname"><a href="classSVF_1_1ContextCond.html#aa61b4de81e440448daaf0c5be53aebf3">SVF::ContextCond::maximumPathLen</a></div><div class="ttdeci">static u32_t maximumPathLen</div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00351">DPItem.h:351</a></div></div>
124
124
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00478">PathCondAllocator.cpp:478</a></div></div>
125
125
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_abef2785eb426d5e1d6f273300c691db6"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#abef2785eb426d5e1d6f273300c691db6">SVF::PathCondAllocator::getPHIComplementCond</a></div><div class="ttdeci">virtual Condition * getPHIComplementCond(const BasicBlock *BB1, const BasicBlock *BB2, const BasicBlock *BB0)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00430">PathCondAllocator.cpp:430</a></div></div>
126
- <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00147">SVFBasicTypes.h:147</a></div></div>
126
+ <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
127
127
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
128
128
  <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="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
129
129
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a737684498679dc16a26f2411d88f36aa"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">SVF::SVFUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&amp;#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00331">LLVMUtil.cpp:331</a></div></div>