svf-tools 1.0.310 → 1.0.314

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 (447) 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 +3 -3
  4. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +3 -3
  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 +21 -21
  8. package/SVF-doxygen/html/html/AndersenWaveDiffWithType_8cpp_source.html +4 -4
  9. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +4 -4
  10. package/SVF-doxygen/html/html/Andersen_8cpp.html +1 -0
  11. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +58 -56
  12. package/SVF-doxygen/html/html/Andersen_8h_source.html +118 -118
  13. package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
  14. package/SVF-doxygen/html/html/CHG_8cpp_source.html +49 -50
  15. package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
  16. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +17 -16
  17. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +16 -16
  18. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +5 -5
  19. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  21. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +10 -10
  22. package/SVF-doxygen/html/html/ConsG_8h_source.html +7 -7
  23. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +8 -8
  24. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +5 -5
  25. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +13 -13
  26. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  27. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +7 -7
  28. package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
  29. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
  30. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
  32. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +10 -10
  33. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  34. package/SVF-doxygen/html/html/ExternalPAG_8cpp.html +1 -1
  35. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +8 -8
  36. package/SVF-doxygen/html/html/ExternalPAG_8h_source.html +1 -1
  37. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +10 -10
  38. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  41. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +3 -3
  42. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +9 -9
  43. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +11 -11
  44. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
  45. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +5 -5
  46. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +82 -81
  47. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  48. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +4 -4
  49. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  50. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
  52. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
  53. package/SVF-doxygen/html/html/ICFG_8h_source.html +6 -6
  54. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
  55. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  56. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  57. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  58. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +4 -4
  59. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -2
  62. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +6 -6
  63. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  64. package/SVF-doxygen/html/html/MHP_8cpp_source.html +13 -13
  65. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  66. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  70. package/SVF-doxygen/html/html/MTA_8cpp_source.html +5 -5
  71. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/MemModelBuilder_8cpp.html +90 -0
  73. package/SVF-doxygen/html/html/MemModelBuilder_8cpp_source.html +205 -0
  74. package/SVF-doxygen/html/html/MemModelBuilder_8h.html +97 -0
  75. package/SVF-doxygen/html/html/MemModelBuilder_8h_source.html +105 -0
  76. package/SVF-doxygen/html/html/MemModel_8cpp_source.html +9 -53
  77. package/SVF-doxygen/html/html/MemModel_8h_source.html +44 -44
  78. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +17 -17
  79. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  80. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +13 -13
  81. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +12 -12
  82. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -2
  84. package/SVF-doxygen/html/html/Options_8h_source.html +2 -2
  85. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  86. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +25 -25
  87. package/SVF-doxygen/html/html/PAGBuilder_8h_source.html +1 -1
  88. package/SVF-doxygen/html/html/PAGEdge_8h_source.html +2 -2
  89. package/SVF-doxygen/html/html/PAGNode_8h_source.html +11 -11
  90. package/SVF-doxygen/html/html/PAG_8cpp_source.html +34 -34
  91. package/SVF-doxygen/html/html/PAG_8h_source.html +41 -41
  92. package/SVF-doxygen/html/html/PCG_8cpp_source.html +8 -8
  93. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  94. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +8 -8
  95. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  96. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +24 -24
  97. package/SVF-doxygen/html/html/PTAType_8h_source.html +4 -4
  98. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  99. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
  100. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +34 -33
  101. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +7 -7
  102. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +15 -15
  103. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +66 -66
  104. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +15 -15
  105. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +7 -7
  106. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
  107. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  108. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  109. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +10 -10
  110. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
  111. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +5 -5
  112. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +9 -9
  113. package/SVF-doxygen/html/html/SVFG_8h_source.html +7 -7
  114. package/SVF-doxygen/html/html/SVFModule_8cpp.html +1 -1
  115. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +6 -5
  116. package/SVF-doxygen/html/html/SVFModule_8h.html +3 -0
  117. package/SVF-doxygen/html/html/SVFModule_8h_source.html +53 -46
  118. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  119. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
  120. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +6 -6
  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 +5 -55
  125. package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +0 -4
  126. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +88 -101
  127. package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
  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 +1 -1
  131. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  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 +6 -6
  137. package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
  138. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +7 -7
  139. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +13 -13
  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 +135 -136
  143. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  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 +228 -228
  153. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
  154. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +60 -58
  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 +52 -52
  161. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +38 -38
  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 +31 -31
  166. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +38 -38
  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 +123 -120
  176. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +1 -1
  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 +13 -13
  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_1DCHGraph.html +22 -22
  191. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  192. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
  193. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +4 -4
  194. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  195. package/SVF-doxygen/html/html/classSVF_1_1DummyObjPN.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1DummyValPN.html +1 -1
  197. package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +8 -8
  198. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
  200. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +10 -10
  201. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +44 -44
  202. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +24 -24
  203. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +32 -32
  204. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +5 -5
  205. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  206. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
  210. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
  211. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +5 -5
  212. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +47 -47
  213. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +58 -57
  214. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +5 -5
  215. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  216. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +13 -13
  220. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  221. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  223. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
  224. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
  225. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  226. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +1 -1
  228. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  230. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +17 -17
  231. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
  232. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  233. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  234. package/SVF-doxygen/html/html/classSVF_1_1LocObjTypeInfo.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1LocSymTableInfo.html +2 -2
  236. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +8 -8
  238. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  239. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +15 -15
  240. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +24 -24
  241. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  242. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  243. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +5 -5
  244. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -3
  245. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
  246. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +21 -21
  247. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
  248. package/SVF-doxygen/html/html/classSVF_1_1MemModelBuilder-members.html +95 -0
  249. package/SVF-doxygen/html/html/classSVF_1_1MemModelBuilder.html +711 -0
  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 +3 -3
  253. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator-members.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +7 -7
  255. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +34 -34
  256. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +3 -3
  257. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +3 -3
  258. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +8 -10
  259. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +68 -168
  260. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +1 -1
  261. package/SVF-doxygen/html/html/classSVF_1_1Options.html +5 -5
  262. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +67 -67
  263. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +41 -41
  264. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  265. package/SVF-doxygen/html/html/classSVF_1_1PAGEdge.html +5 -5
  266. package/SVF-doxygen/html/html/classSVF_1_1PAGNode.html +10 -10
  267. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +15 -15
  268. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  269. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +16 -16
  270. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +4 -4
  271. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +32 -32
  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 +21 -21
  278. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
  279. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  280. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
  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_1SVFG.html +8 -8
  284. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  285. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +35 -35
  286. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +7 -7
  287. package/SVF-doxygen/html/html/classSVF_1_1SVFModule-members.html +1 -0
  288. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +113 -80
  289. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
  290. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +16 -16
  291. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +5 -5
  292. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
  293. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +14 -14
  294. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
  295. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  296. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +49 -55
  298. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +300 -587
  299. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +28 -28
  300. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  301. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  303. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  304. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +11 -11
  306. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +8 -8
  307. package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.html +1 -1
  308. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  309. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +14 -14
  311. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  312. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +2 -2
  313. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  314. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +35 -35
  315. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +11 -11
  316. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +3 -3
  317. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +11 -11
  318. package/SVF-doxygen/html/html/classes.html +91 -91
  319. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  320. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  321. package/SVF-doxygen/html/html/dir_5840dc76920ee0f379cd88b55fa041fd.html +1 -1
  322. package/SVF-doxygen/html/html/dir_770a542efe75a1b68c109cb4e4290224.html +1 -1
  323. package/SVF-doxygen/html/html/files.html +2 -2
  324. package/SVF-doxygen/html/html/functions_0x7e.html +5 -8
  325. package/SVF-doxygen/html/html/functions_a.html +13 -10
  326. package/SVF-doxygen/html/html/functions_b.html +1 -1
  327. package/SVF-doxygen/html/html/functions_c.html +38 -36
  328. package/SVF-doxygen/html/html/functions_e.html +1 -1
  329. package/SVF-doxygen/html/html/functions_f.html +3 -3
  330. package/SVF-doxygen/html/html/functions_func.html +12 -9
  331. package/SVF-doxygen/html/html/functions_func_0x7e.html +5 -8
  332. package/SVF-doxygen/html/html/functions_func_b.html +1 -1
  333. package/SVF-doxygen/html/html/functions_func_c.html +28 -26
  334. package/SVF-doxygen/html/html/functions_func_e.html +1 -1
  335. package/SVF-doxygen/html/html/functions_func_g.html +11 -13
  336. package/SVF-doxygen/html/html/functions_func_h.html +3 -3
  337. package/SVF-doxygen/html/html/functions_func_i.html +8 -7
  338. package/SVF-doxygen/html/html/functions_func_l.html +2 -8
  339. package/SVF-doxygen/html/html/functions_func_m.html +4 -1
  340. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  341. package/SVF-doxygen/html/html/functions_func_s.html +8 -5
  342. package/SVF-doxygen/html/html/functions_func_v.html +0 -3
  343. package/SVF-doxygen/html/html/functions_g.html +6 -8
  344. package/SVF-doxygen/html/html/functions_h.html +3 -3
  345. package/SVF-doxygen/html/html/functions_i.html +15 -14
  346. package/SVF-doxygen/html/html/functions_l.html +6 -10
  347. package/SVF-doxygen/html/html/functions_m.html +5 -1
  348. package/SVF-doxygen/html/html/functions_n.html +4 -4
  349. package/SVF-doxygen/html/html/functions_o.html +3 -3
  350. package/SVF-doxygen/html/html/functions_p.html +13 -9
  351. package/SVF-doxygen/html/html/functions_r.html +1 -1
  352. package/SVF-doxygen/html/html/functions_rela.html +3 -0
  353. package/SVF-doxygen/html/html/functions_s.html +20 -14
  354. package/SVF-doxygen/html/html/functions_t.html +4 -4
  355. package/SVF-doxygen/html/html/functions_u.html +3 -3
  356. package/SVF-doxygen/html/html/functions_v.html +2 -5
  357. package/SVF-doxygen/html/html/functions_vars_l.html +1 -1
  358. package/SVF-doxygen/html/html/functions_vars_s.html +2 -1
  359. package/SVF-doxygen/html/html/functions_w.html +3 -1
  360. package/SVF-doxygen/html/html/hierarchy.html +127 -128
  361. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  362. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  363. package/SVF-doxygen/html/html/namespaceSVF.html +1 -3
  364. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  365. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +40 -39
  366. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  367. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  368. package/SVF-doxygen/html/html/search/all_1.js +3 -2
  369. package/SVF-doxygen/html/html/search/all_10.js +9 -9
  370. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  371. package/SVF-doxygen/html/html/search/all_13.js +9 -8
  372. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  373. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  374. package/SVF-doxygen/html/html/search/all_16.js +0 -1
  375. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  376. package/SVF-doxygen/html/html/search/all_1b.js +3 -4
  377. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  378. package/SVF-doxygen/html/html/search/all_3.js +11 -10
  379. package/SVF-doxygen/html/html/search/all_5.js +1 -1
  380. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  381. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  382. package/SVF-doxygen/html/html/search/all_8.js +3 -3
  383. package/SVF-doxygen/html/html/search/all_9.js +4 -3
  384. package/SVF-doxygen/html/html/search/all_c.js +4 -7
  385. package/SVF-doxygen/html/html/search/all_d.js +4 -1
  386. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  387. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  388. package/SVF-doxygen/html/html/search/classes_9.js +1 -3
  389. package/SVF-doxygen/html/html/search/classes_a.js +1 -0
  390. package/SVF-doxygen/html/html/search/files_8.js +1 -3
  391. package/SVF-doxygen/html/html/search/files_9.js +2 -0
  392. package/SVF-doxygen/html/html/search/functions_0.js +3 -2
  393. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  394. package/SVF-doxygen/html/html/search/functions_10.js +1 -0
  395. package/SVF-doxygen/html/html/search/functions_13.js +0 -1
  396. package/SVF-doxygen/html/html/search/functions_16.js +3 -4
  397. package/SVF-doxygen/html/html/search/functions_2.js +10 -9
  398. package/SVF-doxygen/html/html/search/functions_4.js +1 -1
  399. package/SVF-doxygen/html/html/search/functions_6.js +2 -2
  400. package/SVF-doxygen/html/html/search/functions_7.js +3 -3
  401. package/SVF-doxygen/html/html/search/functions_8.js +2 -1
  402. package/SVF-doxygen/html/html/search/functions_a.js +1 -3
  403. package/SVF-doxygen/html/html/search/functions_b.js +2 -1
  404. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  405. package/SVF-doxygen/html/html/search/related_3.js +1 -0
  406. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  407. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  408. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  409. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  410. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  411. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +12 -12
  412. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  413. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  414. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html +17 -17
  415. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  416. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +1 -1
  417. 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
  418. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +20 -20
  419. 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
  420. package/SVF-doxygen/html/html/svf-ex_8cpp.html +8 -7
  421. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +6 -5
  422. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  423. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  424. package/include/Graphs/GenericGraph.h +5 -8
  425. package/include/MemoryModel/MemModel.h +5 -21
  426. package/include/MemoryModel/PersistentPointsToCache.h +13 -7
  427. package/include/MemoryModel/PointerAnalysisImpl.h +1 -0
  428. package/include/SVF-FE/CHG.h +1 -1
  429. package/include/SVF-FE/MemModelBuilder.h +102 -0
  430. package/include/SVF-FE/SymbolTableInfo.h +12 -79
  431. package/include/Util/NodeIDAllocator.h +1 -1
  432. package/include/Util/SVFModule.h +16 -0
  433. package/include/WPA/Andersen.h +2 -7
  434. package/lib/Graphs/PAG.cpp +3 -10
  435. package/lib/MemoryModel/MemModel.cpp +10 -436
  436. package/lib/SVF-FE/CHG.cpp +0 -6
  437. package/lib/SVF-FE/CPPUtil.cpp +2 -0
  438. package/lib/SVF-FE/MemModelBuilder.cpp +616 -0
  439. package/lib/SVF-FE/SymbolTableInfo.cpp +10 -453
  440. package/lib/Util/NodeIDAllocator.cpp +2 -1
  441. package/lib/Util/Options.cpp +2 -10
  442. package/lib/Util/SVFModule.cpp +3 -2
  443. package/lib/WPA/Andersen.cpp +13 -1
  444. package/package.json +1 -1
  445. package/tools/Example/svf-ex.cpp +6 -3
  446. package/include/SVF-FE/LocMemModel.h +0 -35
  447. package/lib/SVF-FE/LocMemModel.cpp +0 -31
@@ -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,7 +83,7 @@ $(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>
@@ -93,7 +93,7 @@ $(function() {
93
93
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00087">PathCondAllocator.h:87</a></div></div>
94
94
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0753fb35cb8fd37cfe8fd795d01e5275"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0753fb35cb8fd37cfe8fd795d01e5275">SVF::PathCondAllocator::FunToExitBBsMap</a></div><div class="ttdeci">Map&lt; const Function *, BasicBlockSet &gt; FunToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00056">PathCondAllocator.h:56</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1CondManager_html_a4b88160366a7c7b2bf7e2ab632ed04c7"><div class="ttname"><a href="classSVF_1_1CondManager.html#a4b88160366a7c7b2bf7e2ab632ed04c7">SVF::CondManager::AND</a></div><div class="ttdeci">CondExpr * AND(CondExpr *lhs, CondExpr *rhs)</div><div class="ttdoc">Operations on conditions. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00134">Conditions.cpp:134</a></div></div>
96
- <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>
96
+ <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>
97
97
  <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>
98
98
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad6d58127299d87ae3c231065bb411557"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad6d58127299d87ae3c231065bb411557">SVF::PathCondAllocator::getMemUsage</a></div><div class="ttdeci">std::string getMemUsage()</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00071">PathCondAllocator.h:71</a></div></div>
99
99
  <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>