svf-tools 1.0.330 → 1.0.331

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 (212) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +4 -4
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +4 -4
  3. package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -3
  4. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
  5. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  6. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/ConsG_8h_source.html +4 -4
  8. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
  9. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +6 -6
  10. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  11. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +6 -7
  14. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/LocationSet_8cpp.html +1 -0
  17. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +12 -15
  18. package/SVF-doxygen/html/html/LocationSet_8h.html +1 -1
  19. package/SVF-doxygen/html/html/LocationSet_8h_source.html +26 -40
  20. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +5 -5
  21. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  23. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +14 -14
  24. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
  25. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +5 -5
  26. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
  27. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +6 -7
  28. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +32 -32
  29. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +12 -12
  30. package/SVF-doxygen/html/html/SVFIR_8h_source.html +12 -12
  31. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +3 -3
  32. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  33. package/SVF-doxygen/html/html/SVFVariables_8h.html +1 -1
  34. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +69 -69
  35. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  36. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +21 -21
  37. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +52 -53
  39. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +72 -75
  40. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  41. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
  42. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  43. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  44. package/SVF-doxygen/html/html/annotated.html +6 -6
  45. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +4 -4
  46. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +5 -5
  47. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +9 -9
  48. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -3
  49. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +11 -11
  50. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +11 -11
  51. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +56 -55
  52. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +44 -41
  53. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.png +0 -0
  54. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
  55. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  56. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  57. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -4
  58. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  59. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +11 -11
  60. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +11 -11
  61. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +13 -13
  62. package/SVF-doxygen/html/html/classSVF_1_1FlattenedFieldInfo-members.html +85 -0
  63. package/SVF-doxygen/html/html/classSVF_1_1FlattenedFieldInfo.html +254 -0
  64. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  65. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  67. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +6 -6
  68. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +22 -23
  69. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  70. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +173 -0
  71. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +813 -0
  72. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.png +0 -0
  73. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
  74. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator-members.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +8 -8
  76. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +17 -21
  77. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +150 -326
  78. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
  79. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +84 -84
  80. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +2 -2
  81. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +2 -2
  82. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +96 -96
  83. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +5 -5
  84. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
  85. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  86. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +14 -14
  87. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +8 -8
  88. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +11 -11
  89. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +26 -26
  90. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +114 -115
  91. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
  92. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
  93. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
  94. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +11 -14
  95. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +70 -168
  96. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +30 -30
  97. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +59 -60
  98. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +118 -146
  99. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  100. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +18 -18
  101. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +11 -11
  102. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  103. package/SVF-doxygen/html/html/classes.html +6 -6
  104. package/SVF-doxygen/html/html/functions_a.html +13 -10
  105. package/SVF-doxygen/html/html/functions_b.html +1 -5
  106. package/SVF-doxygen/html/html/functions_c.html +6 -8
  107. package/SVF-doxygen/html/html/functions_d.html +1 -1
  108. package/SVF-doxygen/html/html/functions_e.html +0 -16
  109. package/SVF-doxygen/html/html/functions_f.html +21 -19
  110. package/SVF-doxygen/html/html/functions_func.html +15 -12
  111. package/SVF-doxygen/html/html/functions_func_c.html +2 -2
  112. package/SVF-doxygen/html/html/functions_func_d.html +1 -1
  113. package/SVF-doxygen/html/html/functions_func_e.html +2 -8
  114. package/SVF-doxygen/html/html/functions_func_f.html +4 -4
  115. package/SVF-doxygen/html/html/functions_func_g.html +39 -60
  116. package/SVF-doxygen/html/html/functions_func_i.html +11 -14
  117. package/SVF-doxygen/html/html/functions_func_s.html +6 -9
  118. package/SVF-doxygen/html/html/functions_func_t.html +1 -1
  119. package/SVF-doxygen/html/html/functions_func_w.html +1 -1
  120. package/SVF-doxygen/html/html/functions_g.html +38 -59
  121. package/SVF-doxygen/html/html/functions_i.html +6 -9
  122. package/SVF-doxygen/html/html/functions_l.html +1 -1
  123. package/SVF-doxygen/html/html/functions_n.html +4 -7
  124. package/SVF-doxygen/html/html/functions_o.html +21 -16
  125. package/SVF-doxygen/html/html/functions_p.html +16 -14
  126. package/SVF-doxygen/html/html/functions_s.html +15 -18
  127. package/SVF-doxygen/html/html/functions_t.html +4 -4
  128. package/SVF-doxygen/html/html/functions_type_e.html +0 -4
  129. package/SVF-doxygen/html/html/functions_type_o.html +3 -0
  130. package/SVF-doxygen/html/html/functions_v.html +3 -3
  131. package/SVF-doxygen/html/html/functions_vars_b.html +1 -5
  132. package/SVF-doxygen/html/html/functions_vars_e.html +0 -6
  133. package/SVF-doxygen/html/html/functions_vars_f.html +9 -7
  134. package/SVF-doxygen/html/html/functions_vars_l.html +1 -1
  135. package/SVF-doxygen/html/html/functions_vars_n.html +0 -3
  136. package/SVF-doxygen/html/html/functions_vars_o.html +2 -2
  137. package/SVF-doxygen/html/html/functions_w.html +1 -1
  138. package/SVF-doxygen/html/html/hierarchy.html +64 -64
  139. package/SVF-doxygen/html/html/namespaceSVF.html +3 -3
  140. package/SVF-doxygen/html/html/search/all_1.js +3 -2
  141. package/SVF-doxygen/html/html/search/all_10.js +8 -8
  142. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  143. package/SVF-doxygen/html/html/search/all_13.js +9 -10
  144. package/SVF-doxygen/html/html/search/all_14.js +7 -7
  145. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  146. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  147. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  148. package/SVF-doxygen/html/html/search/all_2.js +2 -3
  149. package/SVF-doxygen/html/html/search/all_3.js +3 -3
  150. package/SVF-doxygen/html/html/search/all_4.js +1 -1
  151. package/SVF-doxygen/html/html/search/all_5.js +0 -5
  152. package/SVF-doxygen/html/html/search/all_6.js +6 -5
  153. package/SVF-doxygen/html/html/search/all_7.js +13 -21
  154. package/SVF-doxygen/html/html/search/all_9.js +1 -2
  155. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  156. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  157. package/SVF-doxygen/html/html/search/all_e.js +1 -2
  158. package/SVF-doxygen/html/html/search/all_f.js +4 -3
  159. package/SVF-doxygen/html/html/search/classes_5.js +1 -1
  160. package/SVF-doxygen/html/html/search/classes_6.js +1 -1
  161. package/SVF-doxygen/html/html/search/functions_0.js +3 -2
  162. package/SVF-doxygen/html/html/search/functions_10.js +2 -3
  163. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  164. package/SVF-doxygen/html/html/search/functions_14.js +1 -1
  165. package/SVF-doxygen/html/html/search/functions_2.js +2 -2
  166. package/SVF-doxygen/html/html/search/functions_3.js +1 -1
  167. package/SVF-doxygen/html/html/search/functions_4.js +0 -2
  168. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  169. package/SVF-doxygen/html/html/search/functions_6.js +13 -21
  170. package/SVF-doxygen/html/html/search/functions_8.js +1 -2
  171. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  172. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  173. package/SVF-doxygen/html/html/search/typedefs_4.js +0 -1
  174. package/SVF-doxygen/html/html/search/typedefs_e.js +1 -0
  175. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  176. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  177. package/SVF-doxygen/html/html/search/variables_2.js +2 -3
  178. package/SVF-doxygen/html/html/search/variables_5.js +0 -2
  179. package/SVF-doxygen/html/html/search/variables_6.js +5 -4
  180. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  181. package/SVF-doxygen/html/html/search/variables_e.js +0 -1
  182. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  183. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  184. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  185. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  186. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +5 -5
  187. package/include/Graphs/ConsG.h +1 -1
  188. package/include/Graphs/ConsGEdge.h +1 -1
  189. package/include/MemoryModel/LocationSet.h +39 -126
  190. package/include/MemoryModel/SVFIR.h +1 -1
  191. package/include/MemoryModel/SVFStatements.h +1 -1
  192. package/include/MemoryModel/SVFVariables.h +17 -11
  193. package/include/MemoryModel/SymbolTableInfo.h +27 -25
  194. package/include/Util/IRAnnotator.h +3 -3
  195. package/lib/DDA/ContextDDA.cpp +1 -1
  196. package/lib/Graphs/ConsG.cpp +1 -1
  197. package/lib/Graphs/IRGraph.cpp +1 -1
  198. package/lib/Graphs/OfflineConsG.cpp +1 -1
  199. package/lib/MemoryModel/LocationSet.cpp +53 -95
  200. package/lib/MemoryModel/PointerAnalysisImpl.cpp +4 -4
  201. package/lib/MemoryModel/SVFIR.cpp +4 -4
  202. package/lib/MemoryModel/SVFVariables.cpp +2 -2
  203. package/lib/MemoryModel/SymbolTableInfo.cpp +36 -63
  204. package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
  205. package/lib/SVF-FE/SVFIRBuilder.cpp +9 -10
  206. package/lib/SVF-FE/SymbolTableBuilder.cpp +4 -4
  207. package/lib/Util/TypeBasedHeapCloning.cpp +10 -10
  208. package/lib/WPA/Andersen.cpp +1 -1
  209. package/lib/WPA/AndersenSFR.cpp +2 -2
  210. package/lib/WPA/CSC.cpp +1 -1
  211. package/lib/WPA/FlowSensitiveTBHC.cpp +6 -6
  212. package/package.json +1 -1
@@ -66,53 +66,39 @@ $(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_1FieldInfo.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</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">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197"> 48</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;NodePair &gt; <a class="code" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">ElemNumStridePairVec</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a"> 51</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71"> 52</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">byteOffset</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1FieldInfo.html#acb93501d8250ae4c7ff6046c9fb1183d"> 53</a></span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1FieldInfo.html#acb93501d8250ae4c7ff6046c9fb1183d">elemTy</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1FieldInfo.html#a270bc2b3a3b7aaf1e1bfbbadd1130d86"> 54</a></span>&#160; ElemNumStridePairVec <a class="code" href="classSVF_1_1FieldInfo.html#a270bc2b3a3b7aaf1e1bfbbadd1130d86">elemNumStridePair</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1FieldInfo.html#a167925e2aadbcdbc3017c6dc98cb83b4"> 56</a></span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html#a167925e2aadbcdbc3017c6dc98cb83b4">FieldInfo</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteOff, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ty, ElemNumStridePairVec pa) :</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; fldIdx(idx), byteOffset(byteOff), elemTy(ty), elemNumStridePair(pa)</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; }</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1FieldInfo.html#a4e9985c2915f086c034487ca4b3d71fc"> 60</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FieldInfo.html#a4e9985c2915f086c034487ca4b3d71fc">getFlattenFldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a>;</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"><a class="line" href="classSVF_1_1FieldInfo.html#a727d1ea8110a3239834f0aab134231d6"> 64</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1FieldInfo.html#a727d1ea8110a3239834f0aab134231d6">getFlattenByteOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">byteOffset</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1FieldInfo.html#a779ef81046fd403804f74a8562afad63"> 68</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_1FieldInfo.html#a779ef81046fd403804f74a8562afad63">getFlattenElemTy</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FieldInfo.html#acb93501d8250ae4c7ff6046c9fb1183d">elemTy</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1FieldInfo.html#adb7b7aca7740ae0dcec583d3fbbbf020"> 72</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> ElemNumStridePairVec&amp; <a class="code" href="classSVF_1_1FieldInfo.html#adb7b7aca7740ae0dcec583d3fbbbf020">getElemNumStridePairVect</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FieldInfo.html#a270bc2b3a3b7aaf1e1bfbbadd1130d86">elemNumStridePair</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1FieldInfo.html#aee954809b1338d8a49670b6ac6cf25f3"> 76</a></span>&#160; <span class="keyword">inline</span> ElemNumStridePairVec::const_iterator <a class="code" href="classSVF_1_1FieldInfo.html#aee954809b1338d8a49670b6ac6cf25f3">elemStridePairBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> elemNumStridePair.begin();</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"><a class="line" href="classSVF_1_1FieldInfo.html#aafa9f1bdaf361ca00dfdf6b34fb5dfd4"> 80</a></span>&#160; <span class="keyword">inline</span> ElemNumStridePairVec::const_iterator <a class="code" href="classSVF_1_1FieldInfo.html#aafa9f1bdaf361ca00dfdf6b34fb5dfd4">elemStridePairEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> elemNumStridePair.end();</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;};</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;<span class="comment">/*</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</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="l00090"></a><span class="lineno"> 90</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="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * in the number-stride pair vector.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html"> 93</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a32ddec529ccbf4ea6336e5fd765164d8"> 95</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="l00096"></a><span class="lineno"> 96</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f"> 97</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="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#a002a0c8ec2528835d809bf7eb3ebc83fa2241035beb87cdd725d979371537d500"> 99</a></span>&#160; NonOverlap, Overlap, Subset, <a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83fa2241035beb87cdd725d979371537d500">Superset</a>, Same</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="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a8eb854480cc3efc1df4e6ebe916990d2"> 102</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">FieldInfo::ElemNumStridePairVec</a> <a class="code" href="classSVF_1_1LocationSet.html#a8eb854480cc3efc1df4e6ebe916990d2">ElemNumStridePairVec</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ac07e93a10d3f981c2ef6fcc507118182"> 105</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) : <a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a>(o), <a class="code" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">byteOffset</a>(o)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {}</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a290c7fe38704552fd66ad06e5deeaca9"> 109</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="l00110"></a><span class="lineno"> 110</span>&#160; : <a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a>(ls.<a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a>), <a class="code" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">byteOffset</a>(ls.<a class="code" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">byteOffset</a>)</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"> 112</span>&#160; <span class="keyword">const</span> ElemNumStridePairVec&amp; vec = ls.<a class="code" href="classSVF_1_1LocationSet.html#a3720af92ca2a65f02492e752b07ba241">getNumStridePair</a>();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; ElemNumStridePairVec::const_iterator it = vec.begin();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; ElemNumStridePairVec::const_iterator eit = vec.end();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; addElemNumStridePair(*it);</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;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#afd3b135453644cd42e869d378c270d23"> 120</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#afd3b135453644cd42e869d378c270d23">LocationSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a>&amp; fi)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; : <a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a>(fi.<a class="code" href="classSVF_1_1FieldInfo.html#a4e9985c2915f086c034487ca4b3d71fc">getFlattenFldIdx</a>()), <a class="code" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">byteOffset</a>(fi.<a class="code" href="classSVF_1_1FieldInfo.html#a727d1ea8110a3239834f0aab134231d6">getFlattenByteOffset</a>())</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> ElemNumStridePairVec&amp; vec = fi.<a class="code" href="classSVF_1_1FieldInfo.html#adb7b7aca7740ae0dcec583d3fbbbf020">getElemNumStridePairVect</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; ElemNumStridePairVec::const_iterator it = vec.begin();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; ElemNumStridePairVec::const_iterator eit = vec.end();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; addElemNumStridePair(*it);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a00ae12aee8018f1eb88f011e52762be9"> 130</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html#a00ae12aee8018f1eb88f011e52762be9">~LocationSet</a>() {}</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"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a19700ba5a9eebf50a0f3064f44e4bd97"> 135</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="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls(rhs);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a> += getOffset();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#a9fafaf5f69baa5c125d6c3fd89381301">byteOffset</a> += getByteOffset();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; ElemNumStridePairVec::const_iterator it = getNumStridePair().begin();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; ElemNumStridePairVec::const_iterator eit = getNumStridePair().end();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#a38077e721631f3c6b09238880c97732b">addElemNumStridePair</a>(*it);</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"> 145</span>&#160; <span class="keywordflow">return</span> ls;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a15975ec54c93c39fb1ed59599e5ec107"> 147</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="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a> = rhs.<a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">byteOffset</a> = rhs.<a class="code" href="classSVF_1_1LocationSet.html#a9fafaf5f69baa5c125d6c3fd89381301">byteOffset</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; numStridePair = rhs.<a class="code" href="classSVF_1_1LocationSet.html#a3720af92ca2a65f02492e752b07ba241">getNumStridePair</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a7325b652e80625329406d8155ae8d403"> 154</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="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">if</span> (<a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a> != rhs.<a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a>)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a> &lt; rhs.<a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment">// else if (byteOffset != rhs.byteOffset)</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment">// return (byteOffset &lt; rhs.byteOffset);</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">const</span> ElemNumStridePairVec&amp; pairVec = getNumStridePair();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> ElemNumStridePairVec&amp; rhsPairVec = rhs.<a class="code" href="classSVF_1_1LocationSet.html#a3720af92ca2a65f02492e752b07ba241">getNumStridePair</a>();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">else</span></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; ElemNumStridePairVec::const_iterator it = pairVec.begin();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; ElemNumStridePairVec::const_iterator rhsIt = rhsPairVec.begin();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span> (; it != pairVec.end() &amp;&amp; rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</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="keywordflow">if</span> ((*it).first != (*rhsIt).first)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> ((*it).first &lt; (*rhsIt).first);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((*it).second != (*rhsIt).second)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> ((*it).second &lt; (*rhsIt).second);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</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;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a1b141afb9a38d12423f66b2dfe6bf232"> 183</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="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a> == rhs.<a class="code" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b">fldIdx</a></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; &amp;&amp; this-&gt;<a class="code" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">byteOffset</a> == rhs.<a class="code" href="classSVF_1_1LocationSet.html#a9fafaf5f69baa5c125d6c3fd89381301">byteOffset</a></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; &amp;&amp; this-&gt;numStridePair == rhs.<a class="code" href="classSVF_1_1LocationSet.html#abb755e95c8b292b3a6f3eff0256d1790">numStridePair</a>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e"> 193</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#ab85c3707152e03722bd631b2525f223e">getOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a5322dcda48d6980c3f7aafa169fcd77d"> 197</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#a5322dcda48d6980c3f7aafa169fcd77d">getByteOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">byteOffset</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#acc8d400f4715e05d8d4174d7bf722346"> 201</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="l00202"></a><span class="lineno"> 202</span>&#160; {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">fldIdx</a> = idx;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a6c5b8c1a9f765de8bcbefb681ca6a92c"> 205</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LocationSet.html#a6c5b8c1a9f765de8bcbefb681ca6a92c">setByteOffset</a>(<a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> os)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">byteOffset</a> = os;</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"><a class="line" href="classSVF_1_1LocationSet.html#a3720af92ca2a65f02492e752b07ba241"> 209</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> ElemNumStridePairVec&amp; <a class="code" href="classSVF_1_1LocationSet.html#a3720af92ca2a65f02492e752b07ba241">getNumStridePair</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> numStridePair;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordtype">void</span> addElemNumStridePair(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af15e78ec0ab5bf5328d0f8e90c74fe4b">NodePair</a>&amp; pair);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a464c14d79a64dc403c2757b3b8520cbd"> 218</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a464c14d79a64dc403c2757b3b8520cbd">isConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> (numStridePair.size() == 0);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a0e1cddc4228e310c95f68c661c7b94c8"> 224</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="l00225"></a><span class="lineno"> 225</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</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="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a6962903a24f540c6bc58b8ae6a0cc757"> 230</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">LSRelation</a> <a class="code" href="classSVF_1_1LocationSet.html#a6962903a24f540c6bc58b8ae6a0cc757">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="l00231"></a><span class="lineno"> 231</span>&#160; {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</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="l00233"></a><span class="lineno"> 233</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="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (lhsLocations.intersects(rhsLocations))</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> Same;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhsLocations.contains(rhsLocations))</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> Superset;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhsLocations.contains(lhsLocations))</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> Subset;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> Overlap;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> NonOverlap;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4e5f29661da66367cea70a0d3fa108b4"> 252</a></span>&#160; std::string <a class="code" href="classSVF_1_1LocationSet.html#a4e5f29661da66367cea70a0d3fa108b4">dump</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; std::string str;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;LocationSet\tField_Index: &quot;</span> &lt;&lt; getOffset();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\tOffset: &quot;</span> &lt;&lt; getByteOffset()</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; &lt;&lt; <span class="stringliteral">&quot;,\tNum-Stride: {&quot;</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">const</span> ElemNumStridePairVec&amp; vec = getNumStridePair();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; ElemNumStridePairVec::const_iterator it = vec.begin();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; ElemNumStridePairVec::const_iterator eit = vec.end();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; it-&gt;first &lt;&lt; <span class="stringliteral">&quot;,&quot;</span> &lt;&lt; it-&gt;second &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordtype">bool</span> increaseIfNotReachUpperBound(std::vector&lt;NodeID&gt;&amp; indices, <span class="keyword">const</span> ElemNumStridePairVec&amp; pairVec) <span class="keyword">const</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> computeAllLocations() <span class="keyword">const</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4f7a3b135ffa9bc9a5c721d1e23a61a4"> 278</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="l00279"></a><span class="lineno"> 279</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span> (n2 == 0) ? n1 : gcd (n2, n1 % n2);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ac15467bbdc05b9b0fd0398583168811b"> 283</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="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a9fafaf5f69baa5c125d6c3fd89381301"> 284</a></span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1LocationSet.html#a9fafaf5f69baa5c125d6c3fd89381301">byteOffset</a>; </div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#abb755e95c8b292b3a6f3eff0256d1790"> 285</a></span>&#160; ElemNumStridePairVec <a class="code" href="classSVF_1_1LocationSet.html#abb755e95c8b292b3a6f3eff0256d1790">numStridePair</a>; </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;};</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html"> 290</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="l00291"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html#a701401db0e876205424e9cc797fb5984"> 291</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="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;SVF::Size_t, SVF::Size_t&gt;</a>&gt; h;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(ls.<a class="code" href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e">getOffset</a>(), ls.<a class="code" href="classSVF_1_1LocationSet.html#a5322dcda48d6980c3f7aafa169fcd77d">getByteOffset</a>()));</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;};</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LOCATIONSET_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1FieldInfo_html_a779ef81046fd403804f74a8562afad63"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#a779ef81046fd403804f74a8562afad63">SVF::FieldInfo::getFlattenElemTy</a></div><div class="ttdeci">const Type * getFlattenElemTy() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00068">LocationSet.h:68</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#l00224">LocationSet.h:224</a></div></div>
71
- <div class="ttc" id="classSVF_1_1LocationSet_html_a6c5b8c1a9f765de8bcbefb681ca6a92c"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a6c5b8c1a9f765de8bcbefb681ca6a92c">SVF::LocationSet::setByteOffset</a></div><div class="ttdeci">void setByteOffset(Size_t os)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00205">LocationSet.h:205</a></div></div>
72
- <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#l00291">LocationSet.h:291</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#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> += accumulateConstantOffset();</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#ac098bc95299002b9016684fa7f2799ca"> 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#ac098bc95299002b9016684fa7f2799ca">accumulateConstantOffset</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#ac098bc95299002b9016684fa7f2799ca">accumulateConstantOffset</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>
73
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>
74
- <div class="ttc" id="classSVF_1_1FieldInfo_html_a727d1ea8110a3239834f0aab134231d6"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#a727d1ea8110a3239834f0aab134231d6">SVF::FieldInfo::getFlattenByteOffset</a></div><div class="ttdeci">u32_t getFlattenByteOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00064">LocationSet.h:64</a></div></div>
75
- <div class="ttc" id="classSVF_1_1LocationSet_html_a5322dcda48d6980c3f7aafa169fcd77d"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a5322dcda48d6980c3f7aafa169fcd77d">SVF::LocationSet::getByteOffset</a></div><div class="ttdeci">Size_t getByteOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00197">LocationSet.h:197</a></div></div>
76
- <div class="ttc" id="classSVF_1_1FieldInfo_html_aee954809b1338d8a49670b6ac6cf25f3"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#aee954809b1338d8a49670b6ac6cf25f3">SVF::FieldInfo::elemStridePairBegin</a></div><div class="ttdeci">ElemNumStridePairVec::const_iterator elemStridePairBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00076">LocationSet.h:76</a></div></div>
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>
77
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>
78
- <div class="ttc" id="classSVF_1_1LocationSet_html_a8eb854480cc3efc1df4e6ebe916990d2"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a8eb854480cc3efc1df4e6ebe916990d2">SVF::LocationSet::ElemNumStridePairVec</a></div><div class="ttdeci">FieldInfo::ElemNumStridePairVec ElemNumStridePairVec</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00102">LocationSet.h:102</a></div></div>
79
- <div class="ttc" id="classSVF_1_1FieldInfo_html_a9625e4618046dd38ebd78ee2d134bc71"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#a9625e4618046dd38ebd78ee2d134bc71">SVF::FieldInfo::byteOffset</a></div><div class="ttdeci">u32_t byteOffset</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00052">LocationSet.h:52</a></div></div>
80
- <div class="ttc" id="classSVF_1_1FieldInfo_html_a4e9985c2915f086c034487ca4b3d71fc"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#a4e9985c2915f086c034487ca4b3d71fc">SVF::FieldInfo::getFlattenFldIdx</a></div><div class="ttdeci">u32_t getFlattenFldIdx() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00060">LocationSet.h:60</a></div></div>
81
- <div class="ttc" id="classSVF_1_1FieldInfo_html"><div class="ttname"><a href="classSVF_1_1FieldInfo.html">SVF::FieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
82
- <div class="ttc" id="classSVF_1_1LocationSet_html_a4e5f29661da66367cea70a0d3fa108b4"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a4e5f29661da66367cea70a0d3fa108b4">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_8h_source.html#l00252">LocationSet.h:252</a></div></div>
83
- <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#l00201">LocationSet.h:201</a></div></div>
84
- <div class="ttc" id="classSVF_1_1LocationSet_html_a464c14d79a64dc403c2757b3b8520cbd"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a464c14d79a64dc403c2757b3b8520cbd">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_8h_source.html#l00218">LocationSet.h:218</a></div></div>
85
- <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#l00115">LocationSet.cpp:115</a></div></div>
86
- <div class="ttc" id="classSVF_1_1FieldInfo_html_acb93501d8250ae4c7ff6046c9fb1183d"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#acb93501d8250ae4c7ff6046c9fb1183d">SVF::FieldInfo::elemTy</a></div><div class="ttdeci">const Type * elemTy</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00053">LocationSet.h:53</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
+ <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
+ <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>
87
80
  <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>
88
- <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#l00130">LocationSet.h:130</a></div></div>
89
- <div class="ttc" id="classSVF_1_1LocationSet_html_a38077e721631f3c6b09238880c97732b"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a38077e721631f3c6b09238880c97732b">SVF::LocationSet::addElemNumStridePair</a></div><div class="ttdeci">void addElemNumStridePair(const NodePair &amp;pair)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00041">LocationSet.cpp:41</a></div></div>
90
- <div class="ttc" id="classSVF_1_1LocationSet_html_afd3b135453644cd42e869d378c270d23"><div class="ttname"><a href="classSVF_1_1LocationSet.html#afd3b135453644cd42e869d378c270d23">SVF::LocationSet::LocationSet</a></div><div class="ttdeci">LocationSet(const FieldInfo &amp;fi)</div><div class="ttdoc">Initialization from FieldInfo. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00120">LocationSet.h:120</a></div></div>
91
- <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#l00105">LocationSet.h:105</a></div></div>
92
- <div class="ttc" id="classSVF_1_1LocationSet_html_a9fafaf5f69baa5c125d6c3fd89381301"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a9fafaf5f69baa5c125d6c3fd89381301">SVF::LocationSet::byteOffset</a></div><div class="ttdeci">Size_t byteOffset</div><div class="ttdoc">offset relative to base </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00284">LocationSet.h:284</a></div></div>
93
- <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#l00278">LocationSet.h:278</a></div></div>
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>
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>
94
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>
95
- <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>
96
- <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">offset relative to base </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00283">LocationSet.h:283</a></div></div>
97
- <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#l00099">LocationSet.h:99</a></div></div>
98
- <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#l00183">LocationSet.h:183</a></div></div>
86
+ <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
+ <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>
90
+ <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>
99
92
  <div class="ttc" id="BasicTypes_8h_html"><div class="ttname"><a href="BasicTypes_8h.html">BasicTypes.h</a></div></div>
100
- <div class="ttc" id="classSVF_1_1FieldInfo_html_a167925e2aadbcdbc3017c6dc98cb83b4"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#a167925e2aadbcdbc3017c6dc98cb83b4">SVF::FieldInfo::FieldInfo</a></div><div class="ttdeci">FieldInfo(u32_t idx, u32_t byteOff, const Type *ty, ElemNumStridePairVec pa)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00056">LocationSet.h:56</a></div></div>
101
- <div class="ttc" id="classSVF_1_1LocationSet_html_a6962903a24f540c6bc58b8ae6a0cc757"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a6962903a24f540c6bc58b8ae6a0cc757">SVF::LocationSet::checkRelation</a></div><div class="ttdeci">static 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_8h_source.html#l00230">LocationSet.h:230</a></div></div>
102
- <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#l00097">LocationSet.h:97</a></div></div>
103
- <div class="ttc" id="classSVF_1_1FieldInfo_html_a270bc2b3a3b7aaf1e1bfbbadd1130d86"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#a270bc2b3a3b7aaf1e1bfbbadd1130d86">SVF::FieldInfo::elemNumStridePair</a></div><div class="ttdeci">ElemNumStridePairVec elemNumStridePair</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00054">LocationSet.h:54</a></div></div>
104
- <div class="ttc" id="classSVF_1_1LocationSet_html_ab85c3707152e03722bd631b2525f223e"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e">SVF::LocationSet::getOffset</a></div><div class="ttdeci">Size_t getOffset() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00193">LocationSet.h:193</a></div></div>
93
+ <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>
105
94
  <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>
106
- <div class="ttc" id="classSVF_1_1LocationSet_html_a290c7fe38704552fd66ad06e5deeaca9"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a290c7fe38704552fd66ad06e5deeaca9">SVF::LocationSet::LocationSet</a></div><div class="ttdeci">LocationSet(const LocationSet &amp;ls)</div><div class="ttdoc">Copy Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00109">LocationSet.h:109</a></div></div>
107
- <div class="ttc" id="classSVF_1_1FieldInfo_html_adb7b7aca7740ae0dcec583d3fbbbf020"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#adb7b7aca7740ae0dcec583d3fbbbf020">SVF::FieldInfo::getElemNumStridePairVect</a></div><div class="ttdeci">const ElemNumStridePairVec &amp; getElemNumStridePairVect() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
108
- <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#l00093">LocationSet.h:93</a></div></div>
95
+ <div class="ttc" id="classSVF_1_1LocationSet_html_a290c7fe38704552fd66ad06e5deeaca9"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a290c7fe38704552fd66ad06e5deeaca9">SVF::LocationSet::LocationSet</a></div><div class="ttdeci">LocationSet(const LocationSet &amp;ls)</div><div class="ttdoc">Copy Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00088">LocationSet.h:88</a></div></div>
96
+ <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>
109
97
  <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>
110
- <div class="ttc" id="classSVF_1_1FieldInfo_html_aba172e9c0989824c8ff79134d7952197"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">SVF::FieldInfo::ElemNumStridePairVec</a></div><div class="ttdeci">std::vector&lt; NodePair &gt; ElemNumStridePairVec</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
111
- <div class="ttc" id="classSVF_1_1LocationSet_html_a3720af92ca2a65f02492e752b07ba241"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a3720af92ca2a65f02492e752b07ba241">SVF::LocationSet::getNumStridePair</a></div><div class="ttdeci">const ElemNumStridePairVec &amp; getNumStridePair() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00209">LocationSet.h:209</a></div></div>
112
- <div class="ttc" id="namespaceSVF_html_af15e78ec0ab5bf5328d0f8e90c74fe4b"><div class="ttname"><a href="namespaceSVF.html#af15e78ec0ab5bf5328d0f8e90c74fe4b">SVF::NodePair</a></div><div class="ttdeci">std::pair&lt; NodeID, NodeID &gt; NodePair</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00112">SVFBasicTypes.h:112</a></div></div>
113
- <div class="ttc" id="classSVF_1_1FieldInfo_html_aafa9f1bdaf361ca00dfdf6b34fb5dfd4"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#aafa9f1bdaf361ca00dfdf6b34fb5dfd4">SVF::FieldInfo::elemStridePairEnd</a></div><div class="ttdeci">ElemNumStridePairVec::const_iterator elemStridePairEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00080">LocationSet.h:80</a></div></div>
114
- <div class="ttc" id="classSVF_1_1FieldInfo_html_a153c0796c619ff5b7c84c6c742851a7a"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#a153c0796c619ff5b7c84c6c742851a7a">SVF::FieldInfo::fldIdx</a></div><div class="ttdeci">u32_t fldIdx</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00051">LocationSet.h:51</a></div></div>
115
- <div class="ttc" id="classSVF_1_1LocationSet_html_abb755e95c8b292b3a6f3eff0256d1790"><div class="ttname"><a href="classSVF_1_1LocationSet.html#abb755e95c8b292b3a6f3eff0256d1790">SVF::LocationSet::numStridePair</a></div><div class="ttdeci">ElemNumStridePairVec numStridePair</div><div class="ttdoc">element number and stride pair </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00285">LocationSet.h:285</a></div></div>
98
+ <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>
99
+ <div class="ttc" id="classSVF_1_1LocationSet_html_ac098bc95299002b9016684fa7f2799ca"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ac098bc95299002b9016684fa7f2799ca">SVF::LocationSet::accumulateConstantOffset</a></div><div class="ttdeci">Size_t accumulateConstantOffset() 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>
100
+ <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>
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>
116
102
  <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>
117
103
  </div><!-- fragment --></div><!-- contents -->
118
104
  <!-- start footer part -->
@@ -74,7 +74,7 @@ $(function() {
74
74
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1SVFIR_html_a64939d7ecfd8e2cf862782954a56596b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVF::SVFIR::SVFVarList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; SVFVarList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
76
76
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a7d47fbc3dbe8fd19ca5e4210bdecf914"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a7d47fbc3dbe8fd19ca5e4210bdecf914">SVF::MRGenerator::getModSideEffectOfFunction</a></div><div class="ttdeci">const NodeBS &amp; getModSideEffectOfFunction(const SVFFunction *fun)</div><div class="ttdoc">Get indirect mods of a function. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00389">MemRegion.h:389</a></div></div>
77
- <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00415">SymbolTableInfo.h:415</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00418">SymbolTableInfo.h:418</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1MRGenerator_html_acbc431cc7fb72135e592d74709ea7a77"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acbc431cc7fb72135e592d74709ea7a77">SVF::MRGenerator::getRefInfoForCall</a></div><div class="ttdeci">NodeBS getRefInfoForCall(const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00694">MemRegion.cpp:694</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1SCCDetection_html_a6ab5eff6a576e6d8703c1ea29b7f425d"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a6ab5eff6a576e6d8703c1ea29b7f425d">SVF::SCCDetection::subNodes</a></div><div class="ttdeci">const NodeBS &amp; subNodes(NodeID n) const</div><div class="ttdoc">get all subnodes in one scc, if size is empty insert itself into the set </div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00173">SCC.h:173</a></div></div>
@@ -94,8 +94,8 @@ $(function() {
94
94
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2a4185af81e7e10f0db74c39ee220101"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101">SVF::SVFIR::hasCallSiteArgsMap</a></div><div class="ttdeci">bool hasCallSiteArgsMap(const CallBlockNode *cs) const</div><div class="ttdoc">Callsite has argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00232">SVFIR.h:232</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
96
96
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ae2cc7d7d6ab427acb0352b388c7a4acc"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ae2cc7d7d6ab427acb0352b388c7a4acc">SVF::MRGenerator::getRefSideEffectOfCallSite</a></div><div class="ttdeci">const NodeBS &amp; getRefSideEffectOfCallSite(const CallBlockNode *cs)</div><div class="ttdoc">Get indirect refs of a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00394">MemRegion.h:394</a></div></div>
97
- <div class="ttc" id="classSVF_1_1MemObj_html_a40462512a99eb258d8cd442c38d812b4"><div class="ttname"><a href="classSVF_1_1MemObj.html#a40462512a99eb258d8cd442c38d812b4">SVF::MemObj::isGlobalObj</a></div><div class="ttdeci">bool isGlobalObj() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00692">SymbolTableInfo.cpp:692</a></div></div>
98
- <div class="ttc" id="classSVF_1_1MemObj_html_af7316c697eafc71d5fc93108da4e2cee"><div class="ttname"><a href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">SVF::MemObj::isStack</a></div><div class="ttdeci">bool isStack() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00702">SymbolTableInfo.cpp:702</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1MemObj_html_a40462512a99eb258d8cd442c38d812b4"><div class="ttname"><a href="classSVF_1_1MemObj.html#a40462512a99eb258d8cd442c38d812b4">SVF::MemObj::isGlobalObj</a></div><div class="ttdeci">bool isGlobalObj() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00665">SymbolTableInfo.cpp:665</a></div></div>
98
+ <div class="ttc" id="classSVF_1_1MemObj_html_af7316c697eafc71d5fc93108da4e2cee"><div class="ttname"><a href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">SVF::MemObj::isStack</a></div><div class="ttdeci">bool isStack() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00675">SymbolTableInfo.cpp:675</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1SVFIR_html_abb91ed47d5c13d0ad7eec35164e37988"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abb91ed47d5c13d0ad7eec35164e37988">SVF::SVFIR::getPTASVFStmtList</a></div><div class="ttdeci">SVFStmtList &amp; getPTASVFStmtList(const ICFGNode *inst)</div><div class="ttdoc">Given an instruction, get all its PTA PAGEdges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00186">SVFIR.h:186</a></div></div>
100
100
  <div class="ttc" id="classSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00073">GenericGraph.h:73</a></div></div>
101
101
  <div class="ttc" id="classSVF_1_1MRGenerator_html_adc9d530e6f010596d91cd3711dc1358b"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#adc9d530e6f010596d91cd3711dc1358b">SVF::MRGenerator::modRefAnalysis</a></div><div class="ttdeci">virtual void modRefAnalysis(PTACallGraphNode *callGraphNode, WorkList &amp;worklist)</div><div class="ttdoc">Mod-Ref analysis for callsite invoking this callGraphNode. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00635">MemRegion.cpp:635</a></div></div>
@@ -180,7 +180,7 @@ $(function() {
180
180
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a0e46c7beb580ace3a652ac9e1c419b48"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a0e46c7beb580ace3a652ac9e1c419b48">SVF::MRGenerator::cachedPtsChainMap</a></div><div class="ttdeci">NodeToPTSSMap cachedPtsChainMap</div><div class="ttdoc">Map a pointer to its cached points-to chain;. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00236">MemRegion.h:236</a></div></div>
181
181
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a79a3032b50f7ef905213b770b12e0967"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a79a3032b50f7ef905213b770b12e0967">SVF::MRGenerator::addCPtsToLoad</a></div><div class="ttdeci">void addCPtsToLoad(NodeBS &amp;cpts, const LoadStmt *ld, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00343">MemRegion.h:343</a></div></div>
182
182
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a39604645ca9ba10607ada3872b14705a"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a39604645ca9ba10607ada3872b14705a">SVF::MRGenerator::addModSideEffectOfFunction</a></div><div class="ttdeci">void addModSideEffectOfFunction(const SVFFunction *fun, const NodeBS &amp;mods)</div><div class="ttdoc">Add indirect def an memory object in the function. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00419">MemRegion.cpp:419</a></div></div>
183
- <div class="ttc" id="classSVF_1_1MemObj_html_a898c5bb3956402578266a6fb142e02b1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">SVF::MemObj::isHeap</a></div><div class="ttdeci">bool isHeap() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00707">SymbolTableInfo.cpp:707</a></div></div>
183
+ <div class="ttc" id="classSVF_1_1MemObj_html_a898c5bb3956402578266a6fb142e02b1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">SVF::MemObj::isHeap</a></div><div class="ttdeci">bool isHeap() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00680">SymbolTableInfo.cpp:680</a></div></div>
184
184
  <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
185
185
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ad740188222439c089907fa6c6c951f02"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ad740188222439c089907fa6c6c951f02">SVF::MRGenerator::getAliasMemRegions</a></div><div class="ttdeci">virtual void getAliasMemRegions(MRSet &amp;aliasMRs, const NodeBS &amp;cpts, const SVFFunction *fun)</div><div class="ttdoc">Get all aliased mem regions from function fun according to cpts. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00305">MemRegion.h:305</a></div></div>
186
186
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ab3d3ca72d2cddf5336d00dc623f33401"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ab3d3ca72d2cddf5336d00dc623f33401">SVF::MRGenerator::getCallGraphSCCRevTopoOrder</a></div><div class="ttdeci">void getCallGraphSCCRevTopoOrder(WorkList &amp;worklist)</div><div class="ttdoc">Get reverse topo call graph scc. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00464">MemRegion.cpp:464</a></div></div>
@@ -206,7 +206,7 @@ $(function() {
206
206
  <div class="ttc" id="SVFModule_8h_html"><div class="ttname"><a href="SVFModule_8h.html">SVFModule.h</a></div></div>
207
207
  <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00596">SVFStatements.h:596</a></div></div>
208
208
  <div class="ttc" id="classSVF_1_1MRGenerator_html_abe8d6217250d227e743e4b581497aae8"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#abe8d6217250d227e743e4b581497aae8">SVF::MRGenerator::getMRsForLoad</a></div><div class="ttdeci">virtual void getMRsForLoad(MRSet &amp;aliasMRs, const NodeBS &amp;cpts, const SVFFunction *)</div><div class="ttdoc">Get memory regions for a load statement according to cpts. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00315">MemRegion.h:315</a></div></div>
209
- <div class="ttc" id="classSVF_1_1MemObj_html_a4da54ef60231d2e6c26669226b99d2f3"><div class="ttname"><a href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">SVF::MemObj::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get the reference value to this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00439">SymbolTableInfo.h:439</a></div></div>
209
+ <div class="ttc" id="classSVF_1_1MemObj_html_a4da54ef60231d2e6c26669226b99d2f3"><div class="ttname"><a href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">SVF::MemObj::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get the reference value to this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00442">SymbolTableInfo.h:442</a></div></div>
210
210
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a66d94d15fb94e90a771f6b3dd7c0ecdd"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a66d94d15fb94e90a771f6b3dd7c0ecdd">SVF::MRGenerator::sortPointsTo</a></div><div class="ttdeci">virtual void sortPointsTo(const NodeBS &amp;cpts)</div><div class="ttdoc">Given a condition pts, insert into cptsToRepCPtsMap for region generation. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00284">MemRegion.cpp:284</a></div></div>
211
211
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a207dfa4c9f044764665478142c6e6b22"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a207dfa4c9f044764665478142c6e6b22">SVF::MRGenerator::collectModRefForLoadStore</a></div><div class="ttdeci">virtual void collectModRefForLoadStore()</div><div class="ttdoc">Generate regions for loads/stores. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00172">MemRegion.cpp:172</a></div></div>
212
212
  <div class="ttc" id="classSVF_1_1SVFIR_html_a170bef1e9a07ce0449faf66706ae6e61"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61">SVF::SVFIR::callsiteHasRet</a></div><div class="ttdeci">bool callsiteHasRet(const RetBlockNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00260">SVFIR.h:260</a></div></div>