svf-tools 1.0.348 → 1.0.352

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 (583) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +6 -5
  2. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +16 -16
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +14 -14
  5. package/SVF-doxygen/html/html/Andersen_8h_source.html +13 -13
  6. package/SVF-doxygen/html/html/CHG_8h_source.html +7 -7
  7. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +3 -3
  8. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  10. package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
  11. package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
  12. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +4 -4
  14. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +7 -7
  15. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +45 -46
  16. package/SVF-doxygen/html/html/ConsG_8h_source.html +22 -22
  17. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +10 -8
  18. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +5 -5
  19. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/DCHG_8h_source.html +4 -4
  21. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +4 -4
  22. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +4 -2
  29. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
  31. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
  32. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +24 -22
  33. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +17 -17
  34. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +15 -14
  35. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +25 -25
  36. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +7 -8
  37. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
  38. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
  39. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +5 -5
  41. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/IRGraph_8h_source.html +7 -8
  43. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  44. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +13 -6
  45. package/SVF-doxygen/html/html/LocationSet_8h_source.html +12 -14
  46. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  47. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  48. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -5
  49. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  50. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  51. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +8 -8
  52. package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -6
  53. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  54. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  55. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +4 -4
  57. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +3 -3
  58. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  59. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +4 -5
  60. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +9 -10
  61. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
  64. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -4
  66. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +4 -4
  67. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +5 -5
  68. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  69. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +2 -3
  70. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +8 -8
  71. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +12 -12
  73. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +53 -55
  74. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +39 -41
  75. package/SVF-doxygen/html/html/SVFIR_8h_source.html +38 -41
  76. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +22 -24
  77. package/SVF-doxygen/html/html/SVFStatements_8h.html +0 -4
  78. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +150 -160
  79. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  80. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +101 -100
  81. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  82. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +6 -6
  84. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +3 -4
  85. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  86. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  87. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +14 -13
  88. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  89. package/SVF-doxygen/html/html/VFGNode_8h_source.html +13 -13
  90. package/SVF-doxygen/html/html/VFG_8cpp_source.html +50 -51
  91. package/SVF-doxygen/html/html/VFG_8h_source.html +35 -35
  92. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
  93. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  94. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
  95. package/SVF-doxygen/html/html/annotated.html +100 -102
  96. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +3 -3
  97. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +9 -9
  98. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +3 -3
  99. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +9 -9
  100. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +3 -3
  101. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +9 -9
  102. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +3 -3
  103. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +9 -9
  104. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge-members.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +5 -5
  106. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +26 -27
  107. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +26 -27
  108. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +3 -3
  109. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +9 -9
  110. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  111. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +11 -11
  112. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +46 -46
  113. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +11 -11
  114. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +64 -64
  115. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +11 -11
  116. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +29 -29
  117. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +11 -11
  118. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +29 -29
  119. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +11 -11
  120. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +31 -31
  121. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +11 -11
  122. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +33 -33
  123. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +12 -12
  124. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +43 -42
  125. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +18 -18
  126. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +11 -11
  127. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +31 -31
  128. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode-members.html +3 -3
  129. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +11 -11
  130. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +30 -31
  131. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +34 -39
  132. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.png +0 -0
  133. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -7
  135. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +30 -31
  136. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +32 -33
  137. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode-members.html +3 -3
  138. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +11 -11
  139. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +33 -34
  140. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +47 -48
  141. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +3 -3
  142. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +12 -12
  143. package/SVF-doxygen/html/html/classSVF_1_1CHEdge-members.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1CHEdge.html +3 -3
  145. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +3 -3
  146. package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +4 -4
  147. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +24 -24
  148. package/SVF-doxygen/html/html/classSVF_1_1CHNode-members.html +3 -3
  149. package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +11 -11
  150. package/SVF-doxygen/html/html/classSVF_1_1CSC-members.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +11 -11
  152. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge-members.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +4 -4
  154. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge-members.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +4 -4
  156. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +3 -3
  157. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +9 -9
  158. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +4 -4
  160. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +29 -30
  161. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +35 -36
  162. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +3 -3
  163. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +20 -20
  164. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +3 -3
  165. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +21 -21
  166. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +4 -4
  167. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +24 -24
  168. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +32 -33
  169. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +33 -34
  170. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode-members.html +3 -3
  171. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +11 -11
  172. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +2 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +3 -3
  175. package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge-members.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge.html +3 -3
  177. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +99 -100
  179. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  180. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +68 -68
  181. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +20 -19
  183. package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge-members.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge.html +3 -3
  185. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +26 -27
  186. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +26 -27
  187. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +3 -3
  188. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +9 -9
  189. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +5 -5
  190. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +8 -8
  191. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +7 -7
  192. package/SVF-doxygen/html/html/classSVF_1_1DCHNode-members.html +3 -3
  193. package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +11 -11
  194. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  195. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  196. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +5 -5
  197. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge-members.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +4 -4
  200. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +3 -3
  203. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +22 -22
  204. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +3 -3
  205. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +22 -22
  206. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode-members.html +3 -3
  207. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +9 -9
  208. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +3 -3
  209. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +23 -23
  210. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +13 -13
  211. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +37 -37
  212. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +9 -8
  214. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +13 -13
  215. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +134 -134
  216. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +22 -22
  217. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +13 -13
  218. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +93 -92
  219. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +3 -3
  220. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +9 -9
  221. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +3 -3
  222. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +9 -9
  223. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode-members.html +3 -3
  224. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +9 -9
  225. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode-members.html +3 -3
  226. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +9 -9
  227. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode-members.html +3 -3
  228. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +9 -9
  229. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode-members.html +3 -3
  230. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +9 -9
  231. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge-members.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +7 -7
  233. package/SVF-doxygen/html/html/classSVF_1_1GenericNode-members.html +3 -3
  234. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +43 -42
  235. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  236. package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge-members.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge.html +3 -3
  238. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +4 -4
  239. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +52 -52
  240. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +18 -16
  241. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +148 -59
  242. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
  243. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +3 -3
  244. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +9 -9
  245. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +5 -5
  246. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +49 -49
  247. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode-members.html +3 -3
  248. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +9 -9
  249. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +4 -4
  251. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  252. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge-members.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +5 -5
  254. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +3 -3
  255. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +9 -9
  256. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +7 -8
  257. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
  259. package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +5 -5
  260. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +27 -27
  261. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge-members.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +4 -4
  263. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +1 -1
  264. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode-members.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +9 -9
  267. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +3 -3
  268. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +9 -9
  269. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +3 -3
  270. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +9 -9
  271. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +1 -1
  272. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +4 -4
  273. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge-members.html +1 -1
  274. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +4 -4
  275. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +1 -1
  276. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
  277. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode-members.html +3 -3
  278. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +9 -9
  279. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge-members.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +4 -4
  281. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +3 -3
  282. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +9 -9
  283. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode-members.html +3 -3
  284. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +9 -9
  285. package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge-members.html +1 -1
  286. package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge.html +3 -3
  287. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +29 -30
  288. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +26 -27
  289. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +3 -3
  290. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +9 -9
  291. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +12 -12
  292. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +120 -150
  293. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +1 -1
  294. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +11 -11
  295. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +3 -3
  296. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +9 -9
  297. package/SVF-doxygen/html/html/classSVF_1_1MRVer-members.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1MRVer.html +8 -8
  299. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +3 -3
  300. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +9 -9
  301. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  303. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  304. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +7 -7
  306. package/SVF-doxygen/html/html/classSVF_1_1MemRegion-members.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +8 -8
  308. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
  309. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +3 -3
  310. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +35 -36
  311. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +41 -42
  312. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +6 -6
  314. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +11 -11
  315. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +3 -3
  316. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +17 -17
  317. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode-members.html +3 -3
  318. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +9 -9
  319. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +13 -13
  321. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +3 -3
  322. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +27 -27
  323. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +1 -1
  324. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +6 -6
  325. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile-members.html +1 -1
  326. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +12 -12
  327. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode-members.html +3 -3
  328. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +11 -11
  329. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph-members.html +2 -2
  330. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +15 -15
  331. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +1 -1
  332. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +5 -5
  333. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode-members.html +3 -3
  334. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +9 -9
  335. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +11 -12
  336. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +32 -33
  337. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +32 -33
  338. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +1 -1
  339. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +12 -12
  340. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge-members.html +1 -1
  341. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +4 -4
  342. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge-members.html +1 -1
  343. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +4 -4
  344. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +3 -3
  345. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +9 -9
  346. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +1 -1
  347. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +4 -4
  348. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +29 -30
  349. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +35 -36
  350. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +3 -3
  351. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +22 -22
  352. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +1 -1
  353. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  354. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
  355. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +3 -3
  356. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
  357. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
  358. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  359. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +10 -10
  361. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +3 -3
  362. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal-members.html +1 -1
  363. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  364. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +10 -10
  365. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +110 -111
  366. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
  367. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +152 -151
  368. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +26 -27
  369. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +67 -71
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +9 -9
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +3 -3
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +15 -15
  375. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
  376. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +11 -11
  377. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +31 -31
  378. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +3 -3
  379. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +12 -12
  380. package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge-members.html +1 -1
  381. package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge.html +3 -3
  382. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +26 -27
  383. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +27 -28
  384. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +3 -3
  385. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +9 -9
  386. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  387. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +1 -1
  388. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +12 -12
  389. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge-members.html +1 -1
  390. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +3 -3
  391. package/SVF-doxygen/html/html/classSVF_1_1TCTNode-members.html +3 -3
  392. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +9 -9
  393. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +28 -29
  394. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +28 -29
  395. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +28 -29
  396. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +28 -29
  397. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph-members.html +2 -2
  398. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  399. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +1 -1
  400. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +4 -4
  401. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +1 -1
  402. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +4 -4
  403. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +1 -1
  404. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +4 -4
  405. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +11 -11
  406. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +31 -31
  407. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +22 -21
  408. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +31 -32
  409. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +39 -40
  410. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode-members.html +3 -3
  411. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +9 -9
  412. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +2 -2
  413. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +79 -80
  414. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge-members.html +1 -1
  415. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +5 -5
  416. package/SVF-doxygen/html/html/classSVF_1_1VFGNode-members.html +3 -3
  417. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +9 -9
  418. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +3 -3
  419. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +20 -20
  420. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +3 -3
  421. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +22 -22
  422. package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge-members.html +1 -1
  423. package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +3 -3
  424. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +2 -2
  425. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +9 -9
  426. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +15 -15
  427. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +55 -55
  428. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +20 -20
  429. package/SVF-doxygen/html/html/classes.html +95 -93
  430. package/SVF-doxygen/html/html/functions_a.html +19 -16
  431. package/SVF-doxygen/html/html/functions_c.html +22 -22
  432. package/SVF-doxygen/html/html/functions_eval_g.html +2 -1
  433. package/SVF-doxygen/html/html/functions_eval_n.html +0 -1
  434. package/SVF-doxygen/html/html/functions_eval_v.html +0 -1
  435. package/SVF-doxygen/html/html/functions_f.html +3 -3
  436. package/SVF-doxygen/html/html/functions_func.html +20 -17
  437. package/SVF-doxygen/html/html/functions_func_c.html +20 -22
  438. package/SVF-doxygen/html/html/functions_func_f.html +1 -1
  439. package/SVF-doxygen/html/html/functions_func_g.html +37 -40
  440. package/SVF-doxygen/html/html/functions_func_i.html +8 -5
  441. package/SVF-doxygen/html/html/functions_func_n.html +0 -3
  442. package/SVF-doxygen/html/html/functions_func_o.html +5 -7
  443. package/SVF-doxygen/html/html/functions_func_r.html +2 -2
  444. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  445. package/SVF-doxygen/html/html/functions_func_t.html +0 -2
  446. package/SVF-doxygen/html/html/functions_func_v.html +1 -4
  447. package/SVF-doxygen/html/html/functions_g.html +30 -32
  448. package/SVF-doxygen/html/html/functions_i.html +13 -10
  449. package/SVF-doxygen/html/html/functions_l.html +4 -4
  450. package/SVF-doxygen/html/html/functions_m.html +3 -3
  451. package/SVF-doxygen/html/html/functions_n.html +23 -27
  452. package/SVF-doxygen/html/html/functions_o.html +6 -8
  453. package/SVF-doxygen/html/html/functions_p.html +7 -7
  454. package/SVF-doxygen/html/html/functions_r.html +2 -2
  455. package/SVF-doxygen/html/html/functions_s.html +7 -5
  456. package/SVF-doxygen/html/html/functions_t.html +4 -8
  457. package/SVF-doxygen/html/html/functions_type_g.html +3 -3
  458. package/SVF-doxygen/html/html/functions_type_n.html +1 -1
  459. package/SVF-doxygen/html/html/functions_type_o.html +1 -1
  460. package/SVF-doxygen/html/html/functions_v.html +10 -11
  461. package/SVF-doxygen/html/html/functions_vars_a.html +1 -1
  462. package/SVF-doxygen/html/html/functions_vars_f.html +2 -2
  463. package/SVF-doxygen/html/html/functions_vars_m.html +2 -2
  464. package/SVF-doxygen/html/html/functions_vars_n.html +22 -22
  465. package/SVF-doxygen/html/html/functions_vars_t.html +3 -3
  466. package/SVF-doxygen/html/html/functions_vars_v.html +5 -2
  467. package/SVF-doxygen/html/html/functions_w.html +5 -9
  468. package/SVF-doxygen/html/html/hierarchy.html +55 -57
  469. package/SVF-doxygen/html/html/namespaceSVF.html +22 -26
  470. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  471. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +5 -5
  472. package/SVF-doxygen/html/html/namespacemembers_s.html +3 -3
  473. package/SVF-doxygen/html/html/namespacemembers_type_s.html +3 -3
  474. package/SVF-doxygen/html/html/search/all_1.js +9 -8
  475. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  476. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  477. package/SVF-doxygen/html/html/search/all_13.js +9 -9
  478. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  479. package/SVF-doxygen/html/html/search/all_16.js +7 -7
  480. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  481. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  482. package/SVF-doxygen/html/html/search/all_6.js +3 -3
  483. package/SVF-doxygen/html/html/search/all_7.js +19 -20
  484. package/SVF-doxygen/html/html/search/all_9.js +4 -3
  485. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  486. package/SVF-doxygen/html/html/search/all_d.js +5 -5
  487. package/SVF-doxygen/html/html/search/all_e.js +20 -21
  488. package/SVF-doxygen/html/html/search/all_f.js +4 -4
  489. package/SVF-doxygen/html/html/search/classes_12.js +0 -1
  490. package/SVF-doxygen/html/html/search/classes_b.js +0 -1
  491. package/SVF-doxygen/html/html/search/enumvalues_12.js +1 -1
  492. package/SVF-doxygen/html/html/search/enumvalues_6.js +1 -1
  493. package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
  494. package/SVF-doxygen/html/html/search/functions_0.js +8 -7
  495. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  496. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  497. package/SVF-doxygen/html/html/search/functions_13.js +1 -2
  498. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  499. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  500. package/SVF-doxygen/html/html/search/functions_6.js +16 -17
  501. package/SVF-doxygen/html/html/search/functions_8.js +3 -2
  502. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  503. package/SVF-doxygen/html/html/search/functions_c.js +0 -1
  504. package/SVF-doxygen/html/html/search/functions_d.js +3 -3
  505. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  506. package/SVF-doxygen/html/html/search/functions_f.js +2 -2
  507. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  508. package/SVF-doxygen/html/html/search/typedefs_6.js +2 -2
  509. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
  510. package/SVF-doxygen/html/html/search/typedefs_e.js +1 -1
  511. package/SVF-doxygen/html/html/search/variables_1.js +1 -1
  512. package/SVF-doxygen/html/html/search/variables_14.js +4 -4
  513. package/SVF-doxygen/html/html/search/variables_16.js +3 -2
  514. package/SVF-doxygen/html/html/search/variables_6.js +2 -2
  515. package/SVF-doxygen/html/html/search/variables_d.js +3 -3
  516. package/SVF-doxygen/html/html/search/variables_e.js +18 -18
  517. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
  518. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  519. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
  520. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +5 -5
  521. package/include/Graphs/CHG.h +6 -6
  522. package/include/Graphs/ConsG.h +2 -2
  523. package/include/Graphs/ConsGEdge.h +1 -1
  524. package/include/Graphs/ConsGNode.h +16 -16
  525. package/include/Graphs/GenericGraph.h +4 -4
  526. package/include/Graphs/IRGraph.h +5 -5
  527. package/include/Graphs/PTACallGraph.h +2 -2
  528. package/include/Graphs/VFG.h +2 -2
  529. package/include/MSSA/MSSAMuChi.h +1 -1
  530. package/include/MSSA/MemRegion.h +2 -2
  531. package/include/MemoryModel/LocationSet.h +10 -48
  532. package/include/MemoryModel/PAGBuilderFromFile.h +1 -1
  533. package/include/MemoryModel/PointerAnalysis.h +1 -1
  534. package/include/MemoryModel/SVFIR.h +5 -5
  535. package/include/MemoryModel/SVFStatements.h +18 -95
  536. package/include/MemoryModel/SVFVariables.h +9 -6
  537. package/include/MemoryModel/SymbolTableInfo.h +3 -3
  538. package/include/SVF-FE/DCHG.h +1 -1
  539. package/include/SVF-FE/SVFIRBuilder.h +7 -7
  540. package/include/Util/IRAnnotator.h +3 -3
  541. package/include/Util/SVFBasicTypes.h +3 -3
  542. package/include/WPA/Andersen.h +11 -11
  543. package/include/WPA/AndersenSFR.h +1 -1
  544. package/include/WPA/CSC.h +1 -1
  545. package/include/WPA/FlowSensitive.h +13 -13
  546. package/include/WPA/VersionedFlowSensitive.h +2 -2
  547. package/lib/DDA/ContextDDA.cpp +4 -5
  548. package/lib/DDA/DDAClient.cpp +6 -6
  549. package/lib/DDA/DDAStat.cpp +1 -1
  550. package/lib/DDA/FlowDDA.cpp +4 -5
  551. package/lib/Graphs/ConsG.cpp +30 -35
  552. package/lib/Graphs/ICFG.cpp +1 -1
  553. package/lib/Graphs/SVFG.cpp +2 -2
  554. package/lib/Graphs/SVFGStat.cpp +2 -2
  555. package/lib/Graphs/VFG.cpp +36 -43
  556. package/lib/MSSA/MemRegion.cpp +2 -2
  557. package/lib/MTA/MHP.cpp +2 -2
  558. package/lib/MTA/MTAAnnotator.cpp +3 -3
  559. package/lib/MemoryModel/LocationSet.cpp +49 -9
  560. package/lib/MemoryModel/PAGBuilderFromFile.cpp +3 -3
  561. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  562. package/lib/MemoryModel/SVFIR.cpp +27 -35
  563. package/lib/MemoryModel/SVFStatements.cpp +0 -22
  564. package/lib/MemoryModel/SVFVariables.cpp +1 -1
  565. package/lib/MemoryModel/SymbolTableInfo.cpp +4 -4
  566. package/lib/SVF-FE/CPPUtil.cpp +6 -6
  567. package/lib/SVF-FE/DCHG.cpp +1 -1
  568. package/lib/SVF-FE/Graph2Json.cpp +24 -27
  569. package/lib/SVF-FE/LLVMUtil.cpp +1 -1
  570. package/lib/SVF-FE/SVFIRBuilder.cpp +14 -13
  571. package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -1
  572. package/lib/Util/Conditions.cpp +1 -1
  573. package/lib/Util/PTAStat.cpp +9 -9
  574. package/lib/Util/TypeBasedHeapCloning.cpp +6 -6
  575. package/lib/WPA/Andersen.cpp +13 -13
  576. package/lib/WPA/AndersenSFR.cpp +8 -8
  577. package/lib/WPA/AndersenStat.cpp +2 -2
  578. package/lib/WPA/CSC.cpp +6 -6
  579. package/lib/WPA/FlowSensitive.cpp +4 -7
  580. package/lib/WPA/FlowSensitiveStat.cpp +2 -2
  581. package/lib/WPA/FlowSensitiveTBHC.cpp +6 -9
  582. package/lib/WPA/TypeAnalysis.cpp +3 -3
  583. package/package.json +1 -1
@@ -66,12 +66,16 @@ $(function() {
66
66
  <div class="title">LocationSet.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="LocationSet_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- LocationSet.cpp -- Location set for modeling abstract memory object----//</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"> * @file: LocationSet.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * @date: 26 Sep 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * LICENSE</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LocationSet_8h.html">MemoryModel/LocationSet.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ac544fa84eff20dfe043b7d0c771dec2b"> 42</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#ac544fa84eff20dfe043b7d0c771dec2b">LocationSet::addOffsetValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* offsetVal)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val : offsetValues){</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">if</span>(val==offsetVal)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; offsetValues.push_back(offsetVal);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d"> 53</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">LocationSet::isConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val : offsetValues){</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantInt&gt;(val) == <span class="keyword">false</span>)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f"> 65</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">LocationSet::computeAllLocations</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; result.set(accumulateConstantFieldIdx());</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4e839125b32c7cb3ad07fbec6f203c10"> 72</a></span>&#160;<a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">SVF::LocationSet::LSRelation</a> <a class="code" href="classSVF_1_1LocationSet.html#a4e839125b32c7cb3ad07fbec6f203c10">LocationSet::checkRelation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; LHS, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; RHS)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> lhsLocations = LHS.<a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">computeAllLocations</a>();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> rhsLocations = RHS.<a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">computeAllLocations</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (lhsLocations.intersects(rhsLocations))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> Same;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhsLocations.contains(rhsLocations))</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> Superset;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhsLocations.contains(lhsLocations))</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> Subset;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> Overlap;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> NonOverlap;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;}</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a53f1b2e417682a56d45dfb1f7d5ccd1c"> 94</a></span>&#160;std::string <a class="code" href="classSVF_1_1LocationSet.html#a53f1b2e417682a56d45dfb1f7d5ccd1c">LocationSet::dump</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; std::string str;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;LocationSet\tField_Index: &quot;</span> &lt;&lt; accumulateConstantFieldIdx();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;,\tNum-Stride: {&quot;</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9cfbfba21f40feb2cc7e0003d4aaaae5">OffsetValueVec</a>&amp; vec = getOffsetValueVec();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; OffsetValueVec::const_iterator it = vec.begin();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; OffsetValueVec::const_iterator eit = vec.end();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(*it) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div><div class="ttc" id="classSVF_1_1LocationSet_html_a4a9185282308c50f86fdf66f7060373d"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">SVF::LocationSet::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00053">LocationSet.cpp:53</a></div></div>
70
- <div class="ttc" id="classSVF_1_1LocationSet_html_a9cfbfba21f40feb2cc7e0003d4aaaae5"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a9cfbfba21f40feb2cc7e0003d4aaaae5">SVF::LocationSet::OffsetValueVec</a></div><div class="ttdeci">std::vector&lt; const Value *&gt; OffsetValueVec</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00081">LocationSet.h:81</a></div></div>
71
- <div class="ttc" id="classSVF_1_1LocationSet_html_ac544fa84eff20dfe043b7d0c771dec2b"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ac544fa84eff20dfe043b7d0c771dec2b">SVF::LocationSet::addOffsetValue</a></div><div class="ttdeci">bool addOffsetValue(const Value *offsetValue)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00042">LocationSet.cpp:42</a></div></div>
69
+ <a href="LocationSet_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- LocationSet.cpp -- Location set for modeling abstract memory object----//</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"> * @file: LocationSet.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * @date: 26 Sep 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * LICENSE</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LocationSet_8h.html">MemoryModel/LocationSet.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b"> 42</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">LocationSet::addOffsetValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* offsetVal, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; offsetValues.push_back(std::make_pair(offsetVal,type));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d"> 49</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">LocationSet::isConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it : offsetValues){</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantInt&gt;(it.first) == <span class="keyword">false</span>)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a216afe1a2481c57b278549732d5e185e"> 61</a></span>&#160;<a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1LocationSet.html#a216afe1a2481c57b278549732d5e185e">LocationSet::accumulateConstantOffset</a>()<span class="keyword"> const</span>{</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"> 63</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f"> 68</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">LocationSet::computeAllLocations</a>()<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; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; result.set(accumulateConstantFieldIdx());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a67387c3b42fcc1bb3ee8fe85bda02ba8"> 75</a></span>&#160;<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1LocationSet.html#a67387c3b42fcc1bb3ee8fe85bda02ba8">LocationSet::operator+ </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls(rhs);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03">fldIdx</a> += accumulateConstantFieldIdx();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; OffsetValueVec::const_iterator it = getOffsetValueVec().begin();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; OffsetValueVec::const_iterator eit = getOffsetValueVec().end();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">addOffsetValue</a>(it-&gt;first, it-&gt;second);</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="keywordflow">return</span> ls;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a511e8324d88624013eed04e8c2a6cbc4"> 88</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a511e8324d88624013eed04e8c2a6cbc4">LocationSet::operator&lt; </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> (fldIdx != rhs.<a class="code" href="classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03">fldIdx</a>)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> (fldIdx &lt; rhs.<a class="code" href="classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03">fldIdx</a>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">OffsetValueVec</a>&amp; pairVec = getOffsetValueVec();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">OffsetValueVec</a>&amp; rhsPairVec = rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; OffsetValueVec::const_iterator it = pairVec.begin();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; OffsetValueVec::const_iterator rhsIt = rhsPairVec.begin();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">for</span> (; it != pairVec.end() &amp;&amp; rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> (*it) &lt; (*rhsIt);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4e839125b32c7cb3ad07fbec6f203c10"> 112</a></span>&#160;<a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">SVF::LocationSet::LSRelation</a> <a class="code" href="classSVF_1_1LocationSet.html#a4e839125b32c7cb3ad07fbec6f203c10">LocationSet::checkRelation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; LHS, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; RHS)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> lhsLocations = LHS.<a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">computeAllLocations</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> rhsLocations = RHS.<a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">computeAllLocations</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (lhsLocations.intersects(rhsLocations))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> Same;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhsLocations.contains(rhsLocations))</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> Superset;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhsLocations.contains(lhsLocations))</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> Subset;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> Overlap;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></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; <span class="keywordflow">return</span> NonOverlap;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a53f1b2e417682a56d45dfb1f7d5ccd1c"> 134</a></span>&#160;std::string <a class="code" href="classSVF_1_1LocationSet.html#a53f1b2e417682a56d45dfb1f7d5ccd1c">LocationSet::dump</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; std::string str;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;LocationSet\tField_Index: &quot;</span> &lt;&lt; accumulateConstantFieldIdx();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;,\tNum-Stride: {&quot;</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">OffsetValueVec</a>&amp; vec = getOffsetValueVec();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; OffsetValueVec::const_iterator it = vec.begin();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; OffsetValueVec::const_iterator eit = vec.end();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; (value: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(it-&gt;first) &lt;&lt; <span class="stringliteral">&quot; type: &quot;</span> &lt;&lt; it-&gt;second &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="ttc" id="classSVF_1_1LocationSet_html_a4a9185282308c50f86fdf66f7060373d"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">SVF::LocationSet::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00049">LocationSet.cpp:49</a></div></div>
70
+ <div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a9bb7e08f7cfb2859d25b0e68e21fec89"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">SVF::LocationSet::OffsetValueVec</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; const Value *, const Type * &gt; &gt; OffsetValueVec</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00081">LocationSet.h:81</a></div></div>
72
72
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
73
- <div class="ttc" id="classSVF_1_1LocationSet_html_afc0f702b6cce26861b409130fe5e019f"><div class="ttname"><a href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">SVF::LocationSet::computeAllLocations</a></div><div class="ttdeci">NodeBS computeAllLocations() const</div><div class="ttdoc">Compute all possible locations according to offset and number-stride pairs. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00065">LocationSet.cpp:65</a></div></div>
73
+ <div class="ttc" id="classSVF_1_1LocationSet_html_afc0f702b6cce26861b409130fe5e019f"><div class="ttname"><a href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">SVF::LocationSet::computeAllLocations</a></div><div class="ttdeci">NodeBS computeAllLocations() const</div><div class="ttdoc">Compute all possible locations according to offset and number-stride pairs. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00068">LocationSet.cpp:68</a></div></div>
74
+ <div class="ttc" id="namespaceSVF_html_abe09d99af006554a5c00803e9a89f9a6"><div class="ttname"><a href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">SVF::s64_t</a></div><div class="ttdeci">signed s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
75
+ <div class="ttc" id="classSVF_1_1LocationSet_html_aa2682a73f1ab2c32326fb4e0d5b3586b"><div class="ttname"><a href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">SVF::LocationSet::addOffsetValue</a></div><div class="ttdeci">bool addOffsetValue(const Value *offsetValue, const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00042">LocationSet.cpp:42</a></div></div>
74
76
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a216afe1a2481c57b278549732d5e185e"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a216afe1a2481c57b278549732d5e185e">SVF::LocationSet::accumulateConstantOffset</a></div><div class="ttdeci">s64_t accumulateConstantOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00061">LocationSet.cpp:61</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a67387c3b42fcc1bb3ee8fe85bda02ba8"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a67387c3b42fcc1bb3ee8fe85bda02ba8">SVF::LocationSet::operator+</a></div><div class="ttdeci">LocationSet operator+(const LocationSet &amp;rhs) const</div><div class="ttdoc">Overload operators. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00075">LocationSet.cpp:75</a></div></div>
75
79
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
76
80
  <div class="ttc" id="classSVF_1_1LocationSet_html_a002a0c8ec2528835d809bf7eb3ebc83f"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">SVF::LocationSet::LSRelation</a></div><div class="ttdeci">LSRelation</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00076">LocationSet.h:76</a></div></div>
77
81
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
@@ -79,9 +83,12 @@ $(function() {
79
83
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
80
84
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
81
85
  <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>
86
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a1937e1b9513135cb46c7f3f02fbe7d03"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03">SVF::LocationSet::fldIdx</a></div><div class="ttdeci">s64_t fldIdx</div><div class="ttdoc">Accumulated Constant Offsets. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00158">LocationSet.h:158</a></div></div>
82
87
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
83
- <div class="ttc" id="classSVF_1_1LocationSet_html_a53f1b2e417682a56d45dfb1f7d5ccd1c"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a53f1b2e417682a56d45dfb1f7d5ccd1c">SVF::LocationSet::dump</a></div><div class="ttdeci">std::string dump() const</div><div class="ttdoc">Dump location set. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00094">LocationSet.cpp:94</a></div></div>
84
- <div class="ttc" id="classSVF_1_1LocationSet_html_a4e839125b32c7cb3ad07fbec6f203c10"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a4e839125b32c7cb3ad07fbec6f203c10">SVF::LocationSet::checkRelation</a></div><div class="ttdeci">LSRelation checkRelation(const LocationSet &amp;LHS, const LocationSet &amp;RHS)</div><div class="ttdoc">Check relations of two location sets. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00072">LocationSet.cpp:72</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a53f1b2e417682a56d45dfb1f7d5ccd1c"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a53f1b2e417682a56d45dfb1f7d5ccd1c">SVF::LocationSet::dump</a></div><div class="ttdeci">std::string dump() const</div><div class="ttdoc">Dump location set. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00134">LocationSet.cpp:134</a></div></div>
89
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a4e839125b32c7cb3ad07fbec6f203c10"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a4e839125b32c7cb3ad07fbec6f203c10">SVF::LocationSet::checkRelation</a></div><div class="ttdeci">LSRelation checkRelation(const LocationSet &amp;LHS, const LocationSet &amp;RHS)</div><div class="ttdoc">Check relations of two location sets. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00112">LocationSet.cpp:112</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a5a5ca0b81da0b34ab426bc6a28ed346c"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">SVF::LocationSet::getOffsetValueVec</a></div><div class="ttdeci">const OffsetValueVec &amp; getOffsetValueVec() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00128">LocationSet.h:128</a></div></div>
91
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a511e8324d88624013eed04e8c2a6cbc4"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a511e8324d88624013eed04e8c2a6cbc4">SVF::LocationSet::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const LocationSet &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00088">LocationSet.cpp:88</a></div></div>
85
92
  <div class="ttc" id="LocationSet_8h_html"><div class="ttname"><a href="LocationSet_8h.html">LocationSet.h</a></div></div>
86
93
  </div><!-- fragment --></div><!-- contents -->
87
94
  <!-- start footer part -->
@@ -66,29 +66,27 @@ $(function() {
66
66
  <div class="title">LocationSet.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="LocationSet_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">//===- LocationSet.h -- Location set of abstract object-----------------------//</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"> * @file: LocationSet.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * @date: 26 Sep 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * LICENSE</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifndef LOCATIONSET_H_</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#define LOCATIONSET_H_</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</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="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html#a14d271fe9ce4a7d989871088d9daf83a"> 48</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a14d271fe9ce4a7d989871088d9daf83a">flattenedFldIdx</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html#a186f54bc7c43d9ca8c6d1ab152fb36fe"> 49</a></span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a186f54bc7c43d9ca8c6d1ab152fb36fe">flattenedElemTy</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html#a90af575af4fa8ed5646b790daaf421cd"> 51</a></span>&#160; <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a90af575af4fa8ed5646b790daaf421cd">FlattenedFieldInfo</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ty) :</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; flattenedFldIdx(idx), flattenedElemTy(ty)</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="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html#a34759f793f0445d2941c9a7d1413b7b2"> 55</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a34759f793f0445d2941c9a7d1413b7b2">getFlattenFldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a14d271fe9ce4a7d989871088d9daf83a">flattenedFldIdx</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html#a92c1b65c36feeabf09541c9af4650f14"> 59</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_1FlattenedFieldInfo.html#a92c1b65c36feeabf09541c9af4650f14">getFlattenElemTy</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a186f54bc7c43d9ca8c6d1ab152fb36fe">flattenedElemTy</a>;</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"> 63</span>&#160;};</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * Location set represents a set of locations in a memory block with following offsets:</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * { offset + \sum_{i=0}^N (stride_i * j_i) | 0 \leq j_i &lt; M_i }</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * where N is the size of number-stride pair vector, M_i (stride_i) is i-th number (stride)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * in the number-stride pair vector.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html"> 72</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a32ddec529ccbf4ea6336e5fd765164d8"> 74</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f"> 76</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">LSRelation</a></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83fa2241035beb87cdd725d979371537d500"> 78</a></span>&#160; NonOverlap, Overlap, Subset, <a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83fa2241035beb87cdd725d979371537d500">Superset</a>, Same</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a9cfbfba21f40feb2cc7e0003d4aaaae5"> 81</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const Value* &gt; <a class="code" href="classSVF_1_1LocationSet.html#a9cfbfba21f40feb2cc7e0003d4aaaae5">OffsetValueVec</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ac07e93a10d3f981c2ef6fcc507118182"> 84</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#ac07e93a10d3f981c2ef6fcc507118182">LocationSet</a>(<a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> o = 0) : fldIdx(o)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a290c7fe38704552fd66ad06e5deeaca9"> 88</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#a290c7fe38704552fd66ad06e5deeaca9">LocationSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; : fldIdx(ls.fldIdx)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#aa19807a258fc673e6885eafb924ecc91"> 94</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#aa19807a258fc673e6885eafb924ecc91">LocationSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a>&amp; fi)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; : fldIdx(fi.<a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a34759f793f0445d2941c9a7d1413b7b2">getFlattenFldIdx</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; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a00ae12aee8018f1eb88f011e52762be9"> 99</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#a00ae12aee8018f1eb88f011e52762be9">~LocationSet</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;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a19700ba5a9eebf50a0f3064f44e4bd97"> 104</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> operator+ (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls(rhs);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a> += accumulateConstantFieldIdx();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; OffsetValueVec::const_iterator it = getOffsetValueVec().begin();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; OffsetValueVec::const_iterator eit = getOffsetValueVec().end();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#ac544fa84eff20dfe043b7d0c771dec2b">addOffsetValue</a>(*it);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> ls;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a15975ec54c93c39fb1ed59599e5ec107"> 115</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; operator= (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; fldIdx = rhs.<a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; offsetValues = rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a7325b652e80625329406d8155ae8d403"> 121</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt; (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (fldIdx != rhs.<a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a>)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> (fldIdx &lt; rhs.<a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">const</span> OffsetValueVec&amp; pairVec = getOffsetValueVec();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">const</span> OffsetValueVec&amp; rhsPairVec = rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; OffsetValueVec::const_iterator it = pairVec.begin();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; OffsetValueVec::const_iterator rhsIt = rhsPairVec.begin();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (; it != pairVec.end() &amp;&amp; rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> (*it) &lt; (*rhsIt);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</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;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a1b141afb9a38d12423f66b2dfe6bf232"> 145</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a1b141afb9a38d12423f66b2dfe6bf232">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> this-&gt;fldIdx == rhs.<a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; &amp;&amp; this-&gt;offsetValues == rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</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"><a class="line" href="classSVF_1_1LocationSet.html#a43de212ce81a29391cee13d8dbaa93eb"> 154</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1LocationSet.html#a43de212ce81a29391cee13d8dbaa93eb">accumulateConstantFieldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> fldIdx;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#acc8d400f4715e05d8d4174d7bf722346"> 158</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LocationSet.html#acc8d400f4715e05d8d4174d7bf722346">setFldIdx</a>(<a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> idx)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; fldIdx = idx;</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"><a class="line" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c"> 162</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> OffsetValueVec&amp; <a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> offsetValues;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordtype">bool</span> addOffsetValue(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* offsetValue);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordtype">bool</span> isConstantOffset() <span class="keyword">const</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a0e1cddc4228e310c95f68c661c7b94c8"> 174</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a0e1cddc4228e310c95f68c661c7b94c8">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; RHS)<span class="keyword"> const</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> computeAllLocations().intersects(RHS.<a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">computeAllLocations</a>());</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; std::string dump() <span class="keyword">const</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">LSRelation</a> checkRelation(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; LHS, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; RHS);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> computeAllLocations() <span class="keyword">const</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4f7a3b135ffa9bc9a5c721d1e23a61a4"> 191</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1LocationSet.html#a4f7a3b135ffa9bc9a5c721d1e23a61a4">gcd</a> (<span class="keywordtype">unsigned</span> n1, <span class="keywordtype">unsigned</span> n2)<span class="keyword"> const</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> (n2 == 0) ? n1 : gcd (n2, n1 % n2);</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"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b"> 196</a></span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a>; </div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30"> 197</a></span>&#160; OffsetValueVec <a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>; </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;};</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;} <span class="comment">// End namespace SVF</span></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="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html"> 202</a></span>&#160;<span class="keyword">template</span> &lt;&gt; <span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::LocationSet&gt; {</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html#a701401db0e876205424e9cc797fb5984"> 203</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html#a701401db0e876205424e9cc797fb5984">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">SVF::LocationSet</a> &amp;ls)<span class="keyword"> const </span>{</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;SVF::NodeID, SVF::NodeID&gt;</a>&gt; h;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; std::hash&lt;SVF::LocationSet::OffsetValueVec&gt; v;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(ls.<a class="code" href="classSVF_1_1LocationSet.html#a43de212ce81a29391cee13d8dbaa93eb">accumulateConstantFieldIdx</a>(), v(ls.<a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</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;};</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"> 210</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LOCATIONSET_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LocationSet_html_a0e1cddc4228e310c95f68c661c7b94c8"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a0e1cddc4228e310c95f68c661c7b94c8">SVF::LocationSet::intersects</a></div><div class="ttdeci">bool intersects(const LocationSet &amp;RHS) const</div><div class="ttdoc">Return TRUE if we share any location in common with RHS. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00174">LocationSet.h:174</a></div></div>
70
- <div class="ttc" id="classSVF_1_1LocationSet_html_a9cfbfba21f40feb2cc7e0003d4aaaae5"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a9cfbfba21f40feb2cc7e0003d4aaaae5">SVF::LocationSet::OffsetValueVec</a></div><div class="ttdeci">std::vector&lt; const Value *&gt; OffsetValueVec</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00081">LocationSet.h:81</a></div></div>
71
- <div class="ttc" id="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4_html_a701401db0e876205424e9cc797fb5984"><div class="ttname"><a href="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html#a701401db0e876205424e9cc797fb5984">std::hash&lt; SVF::LocationSet &gt;::operator()</a></div><div class="ttdeci">size_t operator()(const SVF::LocationSet &amp;ls) const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00203">LocationSet.h:203</a></div></div>
69
+ <a href="LocationSet_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">//===- LocationSet.h -- Location set of abstract object-----------------------//</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"> * @file: LocationSet.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * @date: 26 Sep 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * LICENSE</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifndef LOCATIONSET_H_</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#define LOCATIONSET_H_</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</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="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html#a14d271fe9ce4a7d989871088d9daf83a"> 48</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a14d271fe9ce4a7d989871088d9daf83a">flattenedFldIdx</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html#a186f54bc7c43d9ca8c6d1ab152fb36fe"> 49</a></span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a186f54bc7c43d9ca8c6d1ab152fb36fe">flattenedElemTy</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html#a90af575af4fa8ed5646b790daaf421cd"> 51</a></span>&#160; <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a90af575af4fa8ed5646b790daaf421cd">FlattenedFieldInfo</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ty) :</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; flattenedFldIdx(idx), flattenedElemTy(ty)</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="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html#a34759f793f0445d2941c9a7d1413b7b2"> 55</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a34759f793f0445d2941c9a7d1413b7b2">getFlattenFldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a14d271fe9ce4a7d989871088d9daf83a">flattenedFldIdx</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1FlattenedFieldInfo.html#a92c1b65c36feeabf09541c9af4650f14"> 59</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_1FlattenedFieldInfo.html#a92c1b65c36feeabf09541c9af4650f14">getFlattenElemTy</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a186f54bc7c43d9ca8c6d1ab152fb36fe">flattenedElemTy</a>;</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"> 63</span>&#160;};</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * Location set represents a set of locations in a memory block with following offsets:</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * { offset + \sum_{i=0}^N (stride_i * j_i) | 0 \leq j_i &lt; M_i }</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * where N is the size of number-stride pair vector, M_i (stride_i) is i-th number (stride)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * in the number-stride pair vector.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html"> 72</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a32ddec529ccbf4ea6336e5fd765164d8"> 74</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f"> 76</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">LSRelation</a></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83fa2241035beb87cdd725d979371537d500"> 78</a></span>&#160; NonOverlap, Overlap, Subset, <a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83fa2241035beb87cdd725d979371537d500">Superset</a>, Same</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89"> 81</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;std::pair&lt;const Value*, const Type*&gt; &gt; <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">OffsetValueVec</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a7fb1dbff5cf3ec18977cc92ae9800d47"> 84</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#a7fb1dbff5cf3ec18977cc92ae9800d47">LocationSet</a>(<a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> o = 0) : fldIdx(o)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a290c7fe38704552fd66ad06e5deeaca9"> 88</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#a290c7fe38704552fd66ad06e5deeaca9">LocationSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; : fldIdx(ls.fldIdx)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#aa19807a258fc673e6885eafb924ecc91"> 94</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#aa19807a258fc673e6885eafb924ecc91">LocationSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a>&amp; fi)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; : fldIdx(fi.<a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a34759f793f0445d2941c9a7d1413b7b2">getFlattenFldIdx</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; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a00ae12aee8018f1eb88f011e52762be9"> 99</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#a00ae12aee8018f1eb88f011e52762be9">~LocationSet</a>() {}</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> operator+ (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">bool</span> operator&lt; (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a15975ec54c93c39fb1ed59599e5ec107"> 105</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; operator= (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; fldIdx = rhs.<a class="code" href="classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03">fldIdx</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; offsetValues = rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</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_1LocationSet.html#a1b141afb9a38d12423f66b2dfe6bf232"> 111</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a1b141afb9a38d12423f66b2dfe6bf232">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)<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> this-&gt;fldIdx == rhs.<a class="code" href="classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03">fldIdx</a></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; &amp;&amp; this-&gt;offsetValues == rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146"> 120</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">accumulateConstantFieldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> fldIdx;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a15f6175372a785205c5f959b370c83b5"> 124</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LocationSet.html#a15f6175372a785205c5f959b370c83b5">setFldIdx</a>(<a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> idx)</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; fldIdx = idx;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c"> 128</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> OffsetValueVec&amp; <a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> offsetValues;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> accumulateConstantOffset() <span class="keyword">const</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">bool</span> addOffsetValue(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* offsetValue, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">bool</span> isConstantOffset() <span class="keyword">const</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a0e1cddc4228e310c95f68c661c7b94c8"> 142</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a0e1cddc4228e310c95f68c661c7b94c8">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; RHS)<span class="keyword"> const</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> computeAllLocations().intersects(RHS.<a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">computeAllLocations</a>());</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; std::string dump() <span class="keyword">const</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">LSRelation</a> checkRelation(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; LHS, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; RHS);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> computeAllLocations() <span class="keyword">const</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03"> 158</a></span>&#160; <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03">fldIdx</a>; </div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30"> 159</a></span>&#160; OffsetValueVec <a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>; </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;};</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="comment">// End namespace SVF</span></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"><a class="line" href="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html"> 164</a></span>&#160;<span class="keyword">template</span> &lt;&gt; <span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::LocationSet&gt; {</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html#a701401db0e876205424e9cc797fb5984"> 165</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html#a701401db0e876205424e9cc797fb5984">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">SVF::LocationSet</a> &amp;ls)<span class="keyword"> const </span>{</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;SVF::NodeID, SVF::NodeID&gt;</a>&gt; h;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; std::hash&lt;SVF::LocationSet::OffsetValueVec&gt; v;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(ls.<a class="code" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">accumulateConstantFieldIdx</a>(), v(ls.<a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>())));</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;};</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LOCATIONSET_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LocationSet_html_ab987c41ffdae931d941f89d03ed09146"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">s64_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00120">LocationSet.h:120</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a0e1cddc4228e310c95f68c661c7b94c8"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a0e1cddc4228e310c95f68c661c7b94c8">SVF::LocationSet::intersects</a></div><div class="ttdeci">bool intersects(const LocationSet &amp;RHS) const</div><div class="ttdoc">Return TRUE if we share any location in common with RHS. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00142">LocationSet.h:142</a></div></div>
71
+ <div class="ttc" id="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4_html_a701401db0e876205424e9cc797fb5984"><div class="ttname"><a href="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html#a701401db0e876205424e9cc797fb5984">std::hash&lt; SVF::LocationSet &gt;::operator()</a></div><div class="ttdeci">size_t operator()(const SVF::LocationSet &amp;ls) const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00165">LocationSet.h:165</a></div></div>
72
72
  <div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html_a92c1b65c36feeabf09541c9af4650f14"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html#a92c1b65c36feeabf09541c9af4650f14">SVF::FlattenedFieldInfo::getFlattenElemTy</a></div><div class="ttdeci">const Type * getFlattenElemTy() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00059">LocationSet.h:59</a></div></div>
74
- <div class="ttc" id="classSVF_1_1LocationSet_html_ac544fa84eff20dfe043b7d0c771dec2b"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ac544fa84eff20dfe043b7d0c771dec2b">SVF::LocationSet::addOffsetValue</a></div><div class="ttdeci">bool addOffsetValue(const Value *offsetValue)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00042">LocationSet.cpp:42</a></div></div>
74
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a9bb7e08f7cfb2859d25b0e68e21fec89"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">SVF::LocationSet::OffsetValueVec</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; const Value *, const Type * &gt; &gt; OffsetValueVec</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00081">LocationSet.h:81</a></div></div>
75
75
  <div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00052">SVFBasicTypes.h:52</a></div></div>
76
- <div class="ttc" id="classSVF_1_1LocationSet_html_acc8d400f4715e05d8d4174d7bf722346"><div class="ttname"><a href="classSVF_1_1LocationSet.html#acc8d400f4715e05d8d4174d7bf722346">SVF::LocationSet::setFldIdx</a></div><div class="ttdeci">void setFldIdx(Size_t idx)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00158">LocationSet.h:158</a></div></div>
77
76
  <div class="ttc" id="classSVF_1_1LocationSet_html_aa19807a258fc673e6885eafb924ecc91"><div class="ttname"><a href="classSVF_1_1LocationSet.html#aa19807a258fc673e6885eafb924ecc91">SVF::LocationSet::LocationSet</a></div><div class="ttdeci">LocationSet(const FlattenedFieldInfo &amp;fi)</div><div class="ttdoc">Initialization from FlattenedFieldInfo. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00094">LocationSet.h:94</a></div></div>
78
77
  <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html_a14d271fe9ce4a7d989871088d9daf83a"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html#a14d271fe9ce4a7d989871088d9daf83a">SVF::FlattenedFieldInfo::flattenedFldIdx</a></div><div class="ttdeci">u32_t flattenedFldIdx</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
79
- <div class="ttc" id="classSVF_1_1LocationSet_html_afc0f702b6cce26861b409130fe5e019f"><div class="ttname"><a href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">SVF::LocationSet::computeAllLocations</a></div><div class="ttdeci">NodeBS computeAllLocations() const</div><div class="ttdoc">Compute all possible locations according to offset and number-stride pairs. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00065">LocationSet.cpp:65</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1LocationSet_html_afc0f702b6cce26861b409130fe5e019f"><div class="ttname"><a href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">SVF::LocationSet::computeAllLocations</a></div><div class="ttdeci">NodeBS computeAllLocations() const</div><div class="ttdoc">Compute all possible locations according to offset and number-stride pairs. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00068">LocationSet.cpp:68</a></div></div>
80
79
  <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>
80
+ <div class="ttc" id="namespaceSVF_html_abe09d99af006554a5c00803e9a89f9a6"><div class="ttname"><a href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">SVF::s64_t</a></div><div class="ttdeci">signed s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1LocationSet_html_a00ae12aee8018f1eb88f011e52762be9"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a00ae12aee8018f1eb88f011e52762be9">SVF::LocationSet::~LocationSet</a></div><div class="ttdeci">~LocationSet()</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00099">LocationSet.h:99</a></div></div>
82
- <div class="ttc" id="classSVF_1_1LocationSet_html_ac07e93a10d3f981c2ef6fcc507118182"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ac07e93a10d3f981c2ef6fcc507118182">SVF::LocationSet::LocationSet</a></div><div class="ttdeci">LocationSet(Size_t o=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00084">LocationSet.h:84</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a15f6175372a785205c5f959b370c83b5"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a15f6175372a785205c5f959b370c83b5">SVF::LocationSet::setFldIdx</a></div><div class="ttdeci">void setFldIdx(s64_t idx)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00124">LocationSet.h:124</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html">SVF::FlattenedFieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
84
- <div class="ttc" id="classSVF_1_1LocationSet_html_a4f7a3b135ffa9bc9a5c721d1e23a61a4"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a4f7a3b135ffa9bc9a5c721d1e23a61a4">SVF::LocationSet::gcd</a></div><div class="ttdeci">unsigned gcd(unsigned n1, unsigned n2) const</div><div class="ttdoc">Return greatest common divisor. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00191">LocationSet.h:191</a></div></div>
85
- <div class="ttc" id="namespaceSVF_html_a2db29836a72e8d86e9baa6d8d55d2978"><div class="ttname"><a href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a></div><div class="ttdeci">signed long Size_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
84
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a7fb1dbff5cf3ec18977cc92ae9800d47"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a7fb1dbff5cf3ec18977cc92ae9800d47">SVF::LocationSet::LocationSet</a></div><div class="ttdeci">LocationSet(s64_t o=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00084">LocationSet.h:84</a></div></div>
86
85
  <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html_a90af575af4fa8ed5646b790daaf421cd"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html#a90af575af4fa8ed5646b790daaf421cd">SVF::FlattenedFieldInfo::FlattenedFieldInfo</a></div><div class="ttdeci">FlattenedFieldInfo(u32_t idx, const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00051">LocationSet.h:51</a></div></div>
87
86
  <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html_a34759f793f0445d2941c9a7d1413b7b2"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html#a34759f793f0445d2941c9a7d1413b7b2">SVF::FlattenedFieldInfo::getFlattenFldIdx</a></div><div class="ttdeci">u32_t getFlattenFldIdx() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00055">LocationSet.h:55</a></div></div>
88
- <div class="ttc" id="classSVF_1_1LocationSet_html_a5a2792b8b914557a9ccf0e57d0ed8b30"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">SVF::LocationSet::offsetValues</a></div><div class="ttdeci">OffsetValueVec offsetValues</div><div class="ttdoc">a vector of actual offset in the form of Values </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00197">LocationSet.h:197</a></div></div>
89
- <div class="ttc" id="classSVF_1_1LocationSet_html_ac15467bbdc05b9b0fd0398583168811b"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">SVF::LocationSet::fldIdx</a></div><div class="ttdeci">Size_t fldIdx</div><div class="ttdoc">Accumulated Constant Offsets. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00196">LocationSet.h:196</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a5a2792b8b914557a9ccf0e57d0ed8b30"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">SVF::LocationSet::offsetValues</a></div><div class="ttdeci">OffsetValueVec offsetValues</div><div class="ttdoc">a vector of actual offset in the form of Values </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00159">LocationSet.h:159</a></div></div>
90
88
  <div class="ttc" id="classSVF_1_1LocationSet_html_a002a0c8ec2528835d809bf7eb3ebc83fa2241035beb87cdd725d979371537d500"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83fa2241035beb87cdd725d979371537d500">SVF::LocationSet::Superset</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00078">LocationSet.h:78</a></div></div>
91
- <div class="ttc" id="classSVF_1_1LocationSet_html_a1b141afb9a38d12423f66b2dfe6bf232"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a1b141afb9a38d12423f66b2dfe6bf232">SVF::LocationSet::operator==</a></div><div class="ttdeci">bool operator==(const LocationSet &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00145">LocationSet.h:145</a></div></div>
89
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a1b141afb9a38d12423f66b2dfe6bf232"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a1b141afb9a38d12423f66b2dfe6bf232">SVF::LocationSet::operator==</a></div><div class="ttdeci">bool operator==(const LocationSet &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00111">LocationSet.h:111</a></div></div>
92
90
  <div class="ttc" id="BasicTypes_8h_html"><div class="ttname"><a href="BasicTypes_8h.html">BasicTypes.h</a></div></div>
93
91
  <div class="ttc" id="classSVF_1_1LocationSet_html_a002a0c8ec2528835d809bf7eb3ebc83f"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">SVF::LocationSet::LSRelation</a></div><div class="ttdeci">LSRelation</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00076">LocationSet.h:76</a></div></div>
94
92
  <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>
@@ -96,9 +94,9 @@ $(function() {
96
94
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
97
95
  <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>
98
96
  <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html_a186f54bc7c43d9ca8c6d1ab152fb36fe"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html#a186f54bc7c43d9ca8c6d1ab152fb36fe">SVF::FlattenedFieldInfo::flattenedElemTy</a></div><div class="ttdeci">const Type * flattenedElemTy</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00049">LocationSet.h:49</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a1937e1b9513135cb46c7f3f02fbe7d03"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a1937e1b9513135cb46c7f3f02fbe7d03">SVF::LocationSet::fldIdx</a></div><div class="ttdeci">s64_t fldIdx</div><div class="ttdoc">Accumulated Constant Offsets. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00158">LocationSet.h:158</a></div></div>
99
98
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
100
- <div class="ttc" id="classSVF_1_1LocationSet_html_a43de212ce81a29391cee13d8dbaa93eb"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a43de212ce81a29391cee13d8dbaa93eb">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">Size_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00154">LocationSet.h:154</a></div></div>
101
- <div class="ttc" id="classSVF_1_1LocationSet_html_a5a5ca0b81da0b34ab426bc6a28ed346c"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">SVF::LocationSet::getOffsetValueVec</a></div><div class="ttdeci">const OffsetValueVec &amp; getOffsetValueVec() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00162">LocationSet.h:162</a></div></div>
99
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a5a5ca0b81da0b34ab426bc6a28ed346c"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">SVF::LocationSet::getOffsetValueVec</a></div><div class="ttdeci">const OffsetValueVec &amp; getOffsetValueVec() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00128">LocationSet.h:128</a></div></div>
102
100
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html">SVF::SymbolTableInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00047">SymbolTableInfo.h:47</a></div></div>
103
101
  </div><!-- fragment --></div><!-- contents -->
104
102
  <!-- start footer part -->