svf-tools 1.0.896 → 1.0.897

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 (225) hide show
  1. package/SVF-doxygen/html/globals_a.html +1 -1
  2. package/SVF-doxygen/html/globals_d.html +3 -0
  3. package/SVF-doxygen/html/globals_func_a.html +1 -1
  4. package/SVF-doxygen/html/globals_func_d.html +3 -0
  5. package/SVF-doxygen/html/globals_func_p.html +1 -1
  6. package/SVF-doxygen/html/globals_func_t.html +1 -1
  7. package/SVF-doxygen/html/globals_p.html +1 -1
  8. package/SVF-doxygen/html/globals_t.html +1 -1
  9. package/SVF-doxygen/html/globals_vars.html +3 -3
  10. package/SVF-doxygen/html/globals_z.html +3 -3
  11. package/SVF-doxygen/html/search/all_1.js +1 -1
  12. package/SVF-doxygen/html/search/all_10.js +325 -325
  13. package/SVF-doxygen/html/search/all_11.js +226 -226
  14. package/SVF-doxygen/html/search/all_12.js +570 -570
  15. package/SVF-doxygen/html/search/all_13.js +207 -207
  16. package/SVF-doxygen/html/search/all_14.js +70 -70
  17. package/SVF-doxygen/html/search/all_15.js +176 -176
  18. package/SVF-doxygen/html/search/all_16.js +77 -77
  19. package/SVF-doxygen/html/search/all_17.js +1 -1
  20. package/SVF-doxygen/html/search/all_18.js +1 -1
  21. package/SVF-doxygen/html/search/all_19.js +26 -26
  22. package/SVF-doxygen/html/search/all_1a.js +179 -179
  23. package/SVF-doxygen/html/search/all_4.js +42 -41
  24. package/SVF-doxygen/html/search/all_5.js +126 -126
  25. package/SVF-doxygen/html/search/all_6.js +232 -232
  26. package/SVF-doxygen/html/search/all_7.js +1047 -1047
  27. package/SVF-doxygen/html/search/all_8.js +215 -215
  28. package/SVF-doxygen/html/search/all_9.js +629 -629
  29. package/SVF-doxygen/html/search/all_a.js +46 -46
  30. package/SVF-doxygen/html/search/all_b.js +26 -26
  31. package/SVF-doxygen/html/search/all_c.js +115 -115
  32. package/SVF-doxygen/html/search/all_d.js +204 -204
  33. package/SVF-doxygen/html/search/all_e.js +209 -209
  34. package/SVF-doxygen/html/search/all_f.js +122 -122
  35. package/SVF-doxygen/html/search/classes_0.js +28 -28
  36. package/SVF-doxygen/html/search/classes_1.js +11 -11
  37. package/SVF-doxygen/html/search/classes_10.js +74 -74
  38. package/SVF-doxygen/html/search/classes_11.js +14 -14
  39. package/SVF-doxygen/html/search/classes_12.js +2 -2
  40. package/SVF-doxygen/html/search/classes_13.js +10 -10
  41. package/SVF-doxygen/html/search/classes_14.js +19 -19
  42. package/SVF-doxygen/html/search/classes_15.js +1 -1
  43. package/SVF-doxygen/html/search/classes_2.js +73 -73
  44. package/SVF-doxygen/html/search/classes_3.js +35 -35
  45. package/SVF-doxygen/html/search/classes_4.js +8 -8
  46. package/SVF-doxygen/html/search/classes_5.js +28 -28
  47. package/SVF-doxygen/html/search/classes_6.js +98 -98
  48. package/SVF-doxygen/html/search/classes_7.js +38 -38
  49. package/SVF-doxygen/html/search/classes_8.js +59 -59
  50. package/SVF-doxygen/html/search/classes_9.js +1 -1
  51. package/SVF-doxygen/html/search/classes_a.js +12 -12
  52. package/SVF-doxygen/html/search/classes_b.js +29 -29
  53. package/SVF-doxygen/html/search/classes_c.js +6 -6
  54. package/SVF-doxygen/html/search/classes_d.js +19 -19
  55. package/SVF-doxygen/html/search/classes_e.js +36 -36
  56. package/SVF-doxygen/html/search/classes_f.js +25 -25
  57. package/SVF-doxygen/html/search/defines_0.js +3 -3
  58. package/SVF-doxygen/html/search/defines_1.js +3 -3
  59. package/SVF-doxygen/html/search/defines_10.js +2 -2
  60. package/SVF-doxygen/html/search/defines_2.js +30 -30
  61. package/SVF-doxygen/html/search/defines_3.js +20 -20
  62. package/SVF-doxygen/html/search/defines_4.js +3 -3
  63. package/SVF-doxygen/html/search/defines_5.js +4 -4
  64. package/SVF-doxygen/html/search/defines_6.js +2 -2
  65. package/SVF-doxygen/html/search/defines_7.js +5 -5
  66. package/SVF-doxygen/html/search/defines_8.js +11 -11
  67. package/SVF-doxygen/html/search/defines_9.js +9 -9
  68. package/SVF-doxygen/html/search/defines_a.js +2 -2
  69. package/SVF-doxygen/html/search/defines_b.js +1 -1
  70. package/SVF-doxygen/html/search/defines_c.js +4 -4
  71. package/SVF-doxygen/html/search/defines_d.js +2 -2
  72. package/SVF-doxygen/html/search/defines_e.js +8 -8
  73. package/SVF-doxygen/html/search/defines_f.js +4 -4
  74. package/SVF-doxygen/html/search/enums_0.js +4 -4
  75. package/SVF-doxygen/html/search/enums_1.js +2 -2
  76. package/SVF-doxygen/html/search/enums_10.js +1 -1
  77. package/SVF-doxygen/html/search/enums_11.js +1 -1
  78. package/SVF-doxygen/html/search/enums_2.js +8 -8
  79. package/SVF-doxygen/html/search/enums_3.js +1 -1
  80. package/SVF-doxygen/html/search/enums_4.js +4 -4
  81. package/SVF-doxygen/html/search/enums_5.js +1 -1
  82. package/SVF-doxygen/html/search/enums_6.js +2 -2
  83. package/SVF-doxygen/html/search/enums_7.js +2 -2
  84. package/SVF-doxygen/html/search/enums_8.js +4 -4
  85. package/SVF-doxygen/html/search/enums_9.js +1 -1
  86. package/SVF-doxygen/html/search/enums_a.js +1 -1
  87. package/SVF-doxygen/html/search/enums_b.js +7 -7
  88. package/SVF-doxygen/html/search/enums_c.js +1 -1
  89. package/SVF-doxygen/html/search/enums_d.js +4 -4
  90. package/SVF-doxygen/html/search/enums_e.js +2 -2
  91. package/SVF-doxygen/html/search/enums_f.js +4 -4
  92. package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
  93. package/SVF-doxygen/html/search/enumvalues_1.js +15 -15
  94. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  95. package/SVF-doxygen/html/search/enumvalues_11.js +4 -4
  96. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  97. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  98. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  99. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  100. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  101. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  102. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  103. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  104. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  105. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  106. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  107. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  108. package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
  109. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  110. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  111. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  112. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  113. package/SVF-doxygen/html/search/enumvalues_f.js +47 -47
  114. package/SVF-doxygen/html/search/files_0.js +16 -16
  115. package/SVF-doxygen/html/search/files_1.js +9 -9
  116. package/SVF-doxygen/html/search/files_10.js +8 -8
  117. package/SVF-doxygen/html/search/files_11.js +8 -8
  118. package/SVF-doxygen/html/search/files_12.js +2 -2
  119. package/SVF-doxygen/html/search/files_2.js +53 -53
  120. package/SVF-doxygen/html/search/files_3.js +14 -14
  121. package/SVF-doxygen/html/search/files_4.js +5 -5
  122. package/SVF-doxygen/html/search/files_5.js +13 -13
  123. package/SVF-doxygen/html/search/files_6.js +10 -10
  124. package/SVF-doxygen/html/search/files_7.js +17 -17
  125. package/SVF-doxygen/html/search/files_8.js +13 -13
  126. package/SVF-doxygen/html/search/files_9.js +18 -18
  127. package/SVF-doxygen/html/search/files_a.js +3 -3
  128. package/SVF-doxygen/html/search/files_b.js +4 -4
  129. package/SVF-doxygen/html/search/files_c.js +20 -20
  130. package/SVF-doxygen/html/search/files_d.js +4 -4
  131. package/SVF-doxygen/html/search/files_e.js +62 -62
  132. package/SVF-doxygen/html/search/files_f.js +8 -8
  133. package/SVF-doxygen/html/search/functions_0.js +13 -13
  134. package/SVF-doxygen/html/search/functions_1.js +368 -368
  135. package/SVF-doxygen/html/search/functions_10.js +140 -140
  136. package/SVF-doxygen/html/search/functions_11.js +140 -140
  137. package/SVF-doxygen/html/search/functions_12.js +299 -299
  138. package/SVF-doxygen/html/search/functions_13.js +73 -73
  139. package/SVF-doxygen/html/search/functions_14.js +41 -41
  140. package/SVF-doxygen/html/search/functions_15.js +72 -72
  141. package/SVF-doxygen/html/search/functions_16.js +38 -38
  142. package/SVF-doxygen/html/search/functions_17.js +3 -3
  143. package/SVF-doxygen/html/search/functions_18.js +179 -179
  144. package/SVF-doxygen/html/search/functions_2.js +94 -94
  145. package/SVF-doxygen/html/search/functions_3.js +261 -261
  146. package/SVF-doxygen/html/search/functions_4.js +85 -84
  147. package/SVF-doxygen/html/search/functions_5.js +57 -57
  148. package/SVF-doxygen/html/search/functions_6.js +65 -65
  149. package/SVF-doxygen/html/search/functions_7.js +863 -863
  150. package/SVF-doxygen/html/search/functions_8.js +162 -162
  151. package/SVF-doxygen/html/search/functions_9.js +438 -438
  152. package/SVF-doxygen/html/search/functions_a.js +30 -30
  153. package/SVF-doxygen/html/search/functions_b.js +2 -2
  154. package/SVF-doxygen/html/search/functions_c.js +25 -25
  155. package/SVF-doxygen/html/search/functions_d.js +82 -82
  156. package/SVF-doxygen/html/search/functions_e.js +36 -36
  157. package/SVF-doxygen/html/search/functions_f.js +58 -58
  158. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  159. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  160. package/SVF-doxygen/html/search/related_0.js +4 -4
  161. package/SVF-doxygen/html/search/related_1.js +2 -2
  162. package/SVF-doxygen/html/search/related_2.js +2 -2
  163. package/SVF-doxygen/html/search/related_3.js +2 -2
  164. package/SVF-doxygen/html/search/related_4.js +2 -2
  165. package/SVF-doxygen/html/search/related_5.js +1 -1
  166. package/SVF-doxygen/html/search/related_6.js +2 -2
  167. package/SVF-doxygen/html/search/related_7.js +5 -5
  168. package/SVF-doxygen/html/search/related_8.js +2 -2
  169. package/SVF-doxygen/html/search/related_9.js +4 -4
  170. package/SVF-doxygen/html/search/related_a.js +19 -19
  171. package/SVF-doxygen/html/search/related_b.js +4 -4
  172. package/SVF-doxygen/html/search/related_c.js +2 -2
  173. package/SVF-doxygen/html/search/related_d.js +12 -12
  174. package/SVF-doxygen/html/search/related_e.js +2 -2
  175. package/SVF-doxygen/html/search/related_f.js +2 -2
  176. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  177. package/SVF-doxygen/html/search/typedefs_1.js +27 -27
  178. package/SVF-doxygen/html/search/typedefs_10.js +63 -63
  179. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  180. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  181. package/SVF-doxygen/html/search/typedefs_13.js +40 -40
  182. package/SVF-doxygen/html/search/typedefs_14.js +11 -11
  183. package/SVF-doxygen/html/search/typedefs_2.js +125 -125
  184. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  185. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  186. package/SVF-doxygen/html/search/typedefs_5.js +42 -42
  187. package/SVF-doxygen/html/search/typedefs_6.js +54 -54
  188. package/SVF-doxygen/html/search/typedefs_7.js +47 -47
  189. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  190. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  191. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  192. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  193. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  194. package/SVF-doxygen/html/search/typedefs_d.js +15 -15
  195. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  196. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  197. package/SVF-doxygen/html/search/variables_0.js +177 -177
  198. package/SVF-doxygen/html/search/variables_1.js +76 -76
  199. package/SVF-doxygen/html/search/variables_10.js +98 -98
  200. package/SVF-doxygen/html/search/variables_11.js +46 -46
  201. package/SVF-doxygen/html/search/variables_12.js +93 -93
  202. package/SVF-doxygen/html/search/variables_13.js +76 -76
  203. package/SVF-doxygen/html/search/variables_14.js +14 -14
  204. package/SVF-doxygen/html/search/variables_15.js +49 -49
  205. package/SVF-doxygen/html/search/variables_16.js +11 -11
  206. package/SVF-doxygen/html/search/variables_17.js +1 -1
  207. package/SVF-doxygen/html/search/variables_18.js +17 -17
  208. package/SVF-doxygen/html/search/variables_2.js +40 -40
  209. package/SVF-doxygen/html/search/variables_3.js +142 -142
  210. package/SVF-doxygen/html/search/variables_4.js +51 -51
  211. package/SVF-doxygen/html/search/variables_5.js +39 -39
  212. package/SVF-doxygen/html/search/variables_6.js +66 -66
  213. package/SVF-doxygen/html/search/variables_7.js +34 -34
  214. package/SVF-doxygen/html/search/variables_8.js +8 -8
  215. package/SVF-doxygen/html/search/variables_9.js +79 -79
  216. package/SVF-doxygen/html/search/variables_a.js +4 -4
  217. package/SVF-doxygen/html/search/variables_b.js +10 -10
  218. package/SVF-doxygen/html/search/variables_c.js +45 -45
  219. package/SVF-doxygen/html/search/variables_d.js +57 -57
  220. package/SVF-doxygen/html/search/variables_e.js +123 -123
  221. package/SVF-doxygen/html/search/variables_f.js +31 -31
  222. package/SVF-doxygen/html/svf-ex_8cpp.html +259 -209
  223. package/SVF-doxygen/html/svf-ex_8cpp_source.html +229 -202
  224. package/package.json +1 -1
  225. package/svf-llvm/tools/Example/svf-ex.cpp +49 -30
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.896",
3
+ "version": "1.0.897",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -6,16 +6,16 @@
6
6
  //
7
7
 
8
8
  // This program is free software: you can redistribute it and/or modify
9
- // it under the terms of the GNU Affero General Public License as published by
9
+ // it under the terms of the GNU General Public License as published by
10
10
  // the Free Software Foundation, either version 3 of the License, or
11
11
  // (at your option) any later version.
12
12
 
13
13
  // This program is distributed in the hope that it will be useful,
14
14
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
15
15
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- // GNU Affero General Public License for more details.
16
+ // GNU General Public License for more details.
17
17
 
18
- // You should have received a copy of the GNU Affero General Public License
18
+ // You should have received a copy of the GNU General Public License
19
19
  // along with this program. If not, see <http://www.gnu.org/licenses/>.
20
20
  //
21
21
  //===-----------------------------------------------------------------------===//
@@ -34,27 +34,28 @@
34
34
  #include "Util/Options.h"
35
35
  #include "WPA/Andersen.h"
36
36
 
37
+ using namespace llvm;
37
38
  using namespace std;
38
39
  using namespace SVF;
39
40
 
40
41
  /*!
41
- * An example to query alias results of two LLVM values
42
+ * An example to query alias results of two SVF values
42
43
  */
43
- SVF::AliasResult aliasQuery(PointerAnalysis* pta, SVFValue* v1, SVFValue* v2)
44
+ SVF::AliasResult aliasQuery(PointerAnalysis* pta, const SVFValue* v1, const SVFValue* v2)
44
45
  {
45
- return pta->alias(v1,v2);
46
+ return pta->alias(v1, v2);
46
47
  }
47
48
 
48
49
  /*!
49
- * An example to print points-to set of an LLVM value
50
+ * An example to print points-to set of an SVF value
50
51
  */
51
- std::string printPts(PointerAnalysis* pta, SVFValue* val)
52
+ std::string printPts(PointerAnalysis* pta, const SVFValue* svfval)
52
53
  {
53
54
 
54
55
  std::string str;
55
- std::stringstream rawstr(str);
56
+ raw_string_ostream rawstr(str);
56
57
 
57
- NodeID pNodeId = pta->getPAG()->getValueNode(val);
58
+ NodeID pNodeId = pta->getPAG()->getValueNode(svfval);
58
59
  const PointsTo& pts = pta->getPts(pNodeId);
59
60
  for (PointsTo::iterator ii = pts.begin(), ie = pts.end();
60
61
  ii != ie; ii++)
@@ -162,14 +163,19 @@ void traverseOnICFG(ICFG* icfg, const ICFGNode* iNode)
162
163
  }
163
164
  }
164
165
 
166
+ void dummyVisit(const VFGNode* node)
167
+ {
168
+
169
+ }
165
170
  /*!
166
171
  * An example to query/collect all the uses of a definition of a value along value-flow graph (VFG)
167
172
  */
168
- void traverseOnVFG(const SVFG* vfg, SVFValue* val)
173
+ void traverseOnVFG(const SVFG* vfg, const SVFValue* svfval)
169
174
  {
170
175
  SVFIR* pag = SVFIR::getPAG();
171
-
172
- PAGNode* pNode = pag->getGNode(pag->getValueNode(val));
176
+ PAGNode* pNode = pag->getGNode(pag->getValueNode(svfval));
177
+ if (!vfg->hasDefSVFGNode(pNode))
178
+ return;
173
179
  const VFGNode* vNode = vfg->getDefSVFGNode(pNode);
174
180
  FIFOWorkList<const VFGNode*> worklist;
175
181
  Set<const VFGNode*> visited;
@@ -195,10 +201,11 @@ void traverseOnVFG(const SVFG* vfg, SVFValue* val)
195
201
  /// Collect all LLVM Values
196
202
  for(Set<const VFGNode*>::const_iterator it = visited.begin(), eit = visited.end(); it!=eit; ++it)
197
203
  {
198
- // const VFGNode* node = *it;
204
+ const VFGNode* node = *it;
205
+ dummyVisit(node);
199
206
  /// can only query VFGNode involving top-level pointers (starting with % or @ in LLVM IR)
200
207
  /// PAGNode* pNode = vfg->getLHSTopLevPtr(node);
201
- /// SVFValue* val = pNode->getValue();
208
+ /// Value* val = pNode->getValue();
202
209
  }
203
210
  }
204
211
 
@@ -221,40 +228,52 @@ int main(int argc, char ** argv)
221
228
  SVFIRBuilder builder(svfModule);
222
229
  SVFIR* pag = builder.build();
223
230
 
224
-
225
231
  /// Create Andersen's pointer analysis
226
232
  Andersen* ander = AndersenWaveDiff::createAndersenWaveDiff(pag);
227
233
 
228
- /// Query aliases
229
- /// aliasQuery(ander,value1,value2);
230
-
231
- /// Print points-to information
232
- /// printPts(ander, value1);
233
234
 
234
235
  /// Call Graph
235
236
  PTACallGraph* callgraph = ander->getPTACallGraph();
236
237
 
237
238
  /// ICFG
238
239
  ICFG* icfg = pag->getICFG();
239
- icfg->dump("icfg");
240
240
 
241
241
  /// Value-Flow Graph (VFG)
242
242
  VFG* vfg = new VFG(callgraph);
243
243
 
244
244
  /// Sparse value-flow graph (SVFG)
245
- SVFGBuilder svfBuilder(true);
246
- //SVFG* svfg =
247
- svfBuilder.buildFullSVFG(ander);
245
+ SVFGBuilder svfBuilder;
246
+ SVFG* svfg = svfBuilder.buildFullSVFG(ander);
248
247
 
249
248
  /// Collect uses of an LLVM Value
250
- /// traverseOnVFG(svfg, value);
251
-
249
+ if (Options::PTSPrint())
250
+ {
251
+ for (const auto& it : *svfg)
252
+ {
253
+ const SVFGNode* node = it.second;
254
+ if (node->getValue())
255
+ {
256
+ traverseOnVFG(svfg, node->getValue());
257
+ /// Print points-to information
258
+ printPts(ander, node->getValue());
259
+ for (const SVFGEdge* edge : node->getOutEdges())
260
+ {
261
+ const SVFGNode* node2 = edge->getDstNode();
262
+ if (node2->getValue())
263
+ aliasQuery(ander, node->getValue(), node2->getValue());
264
+ }
265
+ }
266
+ }
267
+ }
252
268
 
253
269
  /// Collect all successor nodes on ICFG
254
- for (const auto &it : *icfg)
270
+ if (Options::PTSPrint())
255
271
  {
256
- const ICFGNode* node = it.second;
257
- traverseOnICFG(icfg, node);
272
+ for (const auto& it : *icfg)
273
+ {
274
+ const ICFGNode* node = it.second;
275
+ traverseOnICFG(icfg, node);
276
+ }
258
277
  }
259
278
 
260
279
  // clean up memory