svf-lib 1.0.2511 → 1.0.2513

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 (33) hide show
  1. package/SVF-linux-x86_64/bin/ae +0 -0
  2. package/SVF-linux-x86_64/bin/dvf +0 -0
  3. package/SVF-linux-x86_64/bin/mta +0 -0
  4. package/SVF-linux-x86_64/bin/saber +0 -0
  5. package/SVF-linux-x86_64/bin/svf-ex +0 -0
  6. package/SVF-linux-x86_64/bin/wpa +0 -0
  7. package/SVF-linux-x86_64/include/AE/Core/AbstractState.h +1 -1
  8. package/SVF-linux-x86_64/include/DDA/DDAVFSolver.h +4 -4
  9. package/SVF-linux-x86_64/include/Graphs/SVFG.h +16 -16
  10. package/SVF-linux-x86_64/include/Graphs/SVFGOPT.h +6 -6
  11. package/SVF-linux-x86_64/include/Graphs/VFG.h +39 -36
  12. package/SVF-linux-x86_64/include/Graphs/VFGNode.h +117 -37
  13. package/SVF-linux-x86_64/include/MemoryModel/AccessPath.h +5 -4
  14. package/SVF-linux-x86_64/include/SABER/SaberSVFGBuilder.h +1 -1
  15. package/SVF-linux-x86_64/include/SVFIR/SVFIR.h +24 -14
  16. package/SVF-linux-x86_64/include/SVFIR/SVFStatements.h +65 -33
  17. package/SVF-linux-x86_64/lib/libSvfCore.so.3.3 +0 -0
  18. package/SVF-linux-x86_64/lib/libSvfLLVM.so.3.3 +0 -0
  19. package/SVF-osx/bin/ae +0 -0
  20. package/SVF-osx/bin/svf-ex +0 -0
  21. package/SVF-osx/include/AE/Core/AbstractState.h +1 -1
  22. package/SVF-osx/include/DDA/DDAVFSolver.h +4 -4
  23. package/SVF-osx/include/Graphs/SVFG.h +16 -16
  24. package/SVF-osx/include/Graphs/SVFGOPT.h +6 -6
  25. package/SVF-osx/include/Graphs/VFG.h +39 -36
  26. package/SVF-osx/include/Graphs/VFGNode.h +117 -37
  27. package/SVF-osx/include/MemoryModel/AccessPath.h +5 -4
  28. package/SVF-osx/include/SABER/SaberSVFGBuilder.h +1 -1
  29. package/SVF-osx/include/SVFIR/SVFIR.h +24 -14
  30. package/SVF-osx/include/SVFIR/SVFStatements.h +65 -33
  31. package/SVF-osx/lib/libSvfCore.3.3.dylib +0 -0
  32. package/SVF-osx/lib/libSvfLLVM.3.3.dylib +0 -0
  33. package/package.json +1 -1
@@ -209,6 +209,22 @@ public:
209
209
  LoadVFGNode(NodeID id, const LoadStmt* edge): StmtVFGNode(id, edge,Load)
210
210
  {
211
211
 
212
+ }
213
+ inline const ValVar* getSrcNode() const
214
+ {
215
+ return SVFUtil::cast<ValVar>(StmtVFGNode::getSrcNode());
216
+ }
217
+ inline const ValVar* getDstNode() const
218
+ {
219
+ return SVFUtil::cast<ValVar>(StmtVFGNode::getDstNode());
220
+ }
221
+ inline const ValVar* getRHSVar() const
222
+ {
223
+ return getSrcNode();
224
+ }
225
+ inline const ValVar* getLHSVar() const
226
+ {
227
+ return getDstNode();
212
228
  }
213
229
  /// Methods for support type inquiry through isa, cast, and dyn_cast:
214
230
  //@{
@@ -254,6 +270,22 @@ public:
254
270
  StoreVFGNode(NodeID id,const StoreStmt* edge): StmtVFGNode(id,edge,Store)
255
271
  {
256
272
 
273
+ }
274
+ inline const ValVar* getSrcNode() const
275
+ {
276
+ return SVFUtil::cast<ValVar>(StmtVFGNode::getSrcNode());
277
+ }
278
+ inline const ValVar* getDstNode() const
279
+ {
280
+ return SVFUtil::cast<ValVar>(StmtVFGNode::getDstNode());
281
+ }
282
+ inline const ValVar* getRHSVar() const
283
+ {
284
+ return getSrcNode();
285
+ }
286
+ inline const ValVar* getLHSVar() const
287
+ {
288
+ return getDstNode();
257
289
  }
258
290
  /// Methods for support type inquiry through isa, cast, and dyn_cast:
259
291
  //@{
@@ -299,6 +331,22 @@ public:
299
331
  CopyVFGNode(NodeID id,const CopyStmt* copy): StmtVFGNode(id,copy,Copy)
300
332
  {
301
333
 
334
+ }
335
+ inline const ValVar* getSrcNode() const
336
+ {
337
+ return SVFUtil::cast<ValVar>(StmtVFGNode::getSrcNode());
338
+ }
339
+ inline const ValVar* getDstNode() const
340
+ {
341
+ return SVFUtil::cast<ValVar>(StmtVFGNode::getDstNode());
342
+ }
343
+ inline const ValVar* getRHSVar() const
344
+ {
345
+ return getSrcNode();
346
+ }
347
+ inline const ValVar* getLHSVar() const
348
+ {
349
+ return getDstNode();
302
350
  }
303
351
  /// Methods for support type inquiry through isa, cast, and dyn_cast:
304
352
  //@{
@@ -337,9 +385,9 @@ public:
337
385
  class CmpVFGNode: public VFGNode
338
386
  {
339
387
  public:
340
- typedef Map<u32_t,const SVFVar*> OPVers;
388
+ typedef Map<u32_t,const ValVar*> OPVers;
341
389
  protected:
342
- const SVFVar* res;
390
+ const ValVar* res;
343
391
  OPVers opVers;
344
392
 
345
393
  private:
@@ -349,7 +397,7 @@ private:
349
397
 
350
398
  public:
351
399
  /// Constructor
352
- CmpVFGNode(NodeID id,const SVFVar* r): VFGNode(id,Cmp), res(r) { }
400
+ CmpVFGNode(NodeID id,const ValVar* r): VFGNode(id,Cmp), res(r) { }
353
401
  /// Methods for support type inquiry through isa, cast, and dyn_cast:
354
402
  //@{
355
403
  static inline bool classof(const CmpVFGNode *)
@@ -371,17 +419,17 @@ public:
371
419
  //@}
372
420
  /// Operands at a BinaryNode
373
421
  //@{
374
- inline const SVFVar* getOpVer(u32_t pos) const
422
+ inline const ValVar* getOpVer(u32_t pos) const
375
423
  {
376
424
  OPVers::const_iterator it = opVers.find(pos);
377
425
  assert(it!=opVers.end() && "version is nullptr, did not rename?");
378
426
  return it->second;
379
427
  }
380
- inline void setOpVer(u32_t pos, const SVFVar* node)
428
+ inline void setOpVer(u32_t pos, const ValVar* node)
381
429
  {
382
430
  opVers[pos] = node;
383
431
  }
384
- inline const SVFVar* getRes() const
432
+ inline const ValVar* getRes() const
385
433
  {
386
434
  return res;
387
435
  }
@@ -414,9 +462,9 @@ public:
414
462
  class BinaryOPVFGNode: public VFGNode
415
463
  {
416
464
  public:
417
- typedef Map<u32_t,const SVFVar*> OPVers;
465
+ typedef Map<u32_t,const ValVar*> OPVers;
418
466
  protected:
419
- const SVFVar* res;
467
+ const ValVar* res;
420
468
  OPVers opVers;
421
469
 
422
470
  private:
@@ -426,7 +474,7 @@ private:
426
474
 
427
475
  public:
428
476
  /// Constructor
429
- BinaryOPVFGNode(NodeID id,const SVFVar* r): VFGNode(id,BinaryOp), res(r) { }
477
+ BinaryOPVFGNode(NodeID id,const ValVar* r): VFGNode(id,BinaryOp), res(r) { }
430
478
  /// Methods for support type inquiry through isa, cast, and dyn_cast:
431
479
  //@{
432
480
  static inline bool classof(const BinaryOPVFGNode *)
@@ -448,17 +496,17 @@ public:
448
496
  //@}
449
497
  /// Operands at a BinaryNode
450
498
  //@{
451
- inline const SVFVar* getOpVer(u32_t pos) const
499
+ inline const ValVar* getOpVer(u32_t pos) const
452
500
  {
453
501
  OPVers::const_iterator it = opVers.find(pos);
454
502
  assert(it!=opVers.end() && "version is nullptr, did not rename?");
455
503
  return it->second;
456
504
  }
457
- inline void setOpVer(u32_t pos, const SVFVar* node)
505
+ inline void setOpVer(u32_t pos, const ValVar* node)
458
506
  {
459
507
  opVers[pos] = node;
460
508
  }
461
- inline const SVFVar* getRes() const
509
+ inline const ValVar* getRes() const
462
510
  {
463
511
  return res;
464
512
  }
@@ -488,9 +536,9 @@ public:
488
536
  class UnaryOPVFGNode: public VFGNode
489
537
  {
490
538
  public:
491
- typedef Map<u32_t,const SVFVar*> OPVers;
539
+ typedef Map<u32_t,const ValVar*> OPVers;
492
540
  protected:
493
- const SVFVar* res;
541
+ const ValVar* res;
494
542
  OPVers opVers;
495
543
 
496
544
  private:
@@ -500,7 +548,7 @@ private:
500
548
 
501
549
  public:
502
550
  /// Constructor
503
- UnaryOPVFGNode(NodeID id, const SVFVar *r) : VFGNode(id, UnaryOp), res(r) { }
551
+ UnaryOPVFGNode(NodeID id, const ValVar *r) : VFGNode(id, UnaryOp), res(r) { }
504
552
  /// Methods for support type inquiry through isa, cast, and dyn_cast:
505
553
  //@{
506
554
  static inline bool classof(const UnaryOPVFGNode *)
@@ -522,21 +570,21 @@ public:
522
570
  //@}
523
571
  /// Operands at a UnaryNode
524
572
  //@{
525
- inline const SVFVar* getOpVer(u32_t pos) const
573
+ inline const ValVar* getOpVer(u32_t pos) const
526
574
  {
527
575
  OPVers::const_iterator it = opVers.find(pos);
528
576
  assert(it!=opVers.end() && "version is nullptr, did not rename?");
529
577
  return it->second;
530
578
  }
531
- inline void setOpVer(u32_t pos, const SVFVar* node)
579
+ inline void setOpVer(u32_t pos, const ValVar* node)
532
580
  {
533
581
  opVers[pos] = node;
534
582
  }
535
- inline const SVFVar* getRes() const
583
+ inline const ValVar* getRes() const
536
584
  {
537
585
  return res;
538
586
  }
539
- inline const SVFVar* getOpVar() const
587
+ inline const ValVar* getOpVar() const
540
588
  {
541
589
  assert(getOpVerNum()==1 && "UnaryNode can only have one operand!");
542
590
  return getOpVer(0);
@@ -634,6 +682,22 @@ public:
634
682
  GepVFGNode(NodeID id,const GepStmt* edge): StmtVFGNode(id,edge,Gep)
635
683
  {
636
684
 
685
+ }
686
+ inline const ValVar* getSrcNode() const
687
+ {
688
+ return SVFUtil::cast<ValVar>(StmtVFGNode::getSrcNode());
689
+ }
690
+ inline const ValVar* getDstNode() const
691
+ {
692
+ return SVFUtil::cast<ValVar>(StmtVFGNode::getDstNode());
693
+ }
694
+ inline const ValVar* getRHSVar() const
695
+ {
696
+ return getSrcNode();
697
+ }
698
+ inline const ValVar* getLHSVar() const
699
+ {
700
+ return getDstNode();
637
701
  }
638
702
  /// Methods for support type inquiry through isa, cast, and dyn_cast:
639
703
  //@{
@@ -671,14 +735,14 @@ class PHIVFGNode : public VFGNode
671
735
  {
672
736
 
673
737
  public:
674
- typedef Map<u32_t,const SVFVar*> OPVers;
738
+ typedef Map<u32_t,const ValVar*> OPVers;
675
739
  protected:
676
- const SVFVar* res;
740
+ const ValVar* res;
677
741
  OPVers opVers;
678
742
 
679
743
  public:
680
744
  /// Constructor
681
- PHIVFGNode(NodeID id, const SVFVar* r,VFGNodeK k = TPhi);
745
+ PHIVFGNode(NodeID id, const ValVar* r,VFGNodeK k = TPhi);
682
746
 
683
747
  /// Whether this phi node is of pointer type (used for pointer analysis).
684
748
  inline bool isPTANode() const
@@ -688,17 +752,17 @@ public:
688
752
 
689
753
  /// Operands at a llvm PHINode
690
754
  //@{
691
- inline const SVFVar* getOpVer(u32_t pos) const
755
+ inline const ValVar* getOpVer(u32_t pos) const
692
756
  {
693
757
  OPVers::const_iterator it = opVers.find(pos);
694
758
  assert(it!=opVers.end() && "version is nullptr, did not rename?");
695
759
  return it->second;
696
760
  }
697
- inline void setOpVer(u32_t pos, const SVFVar* node)
761
+ inline void setOpVer(u32_t pos, const ValVar* node)
698
762
  {
699
763
  opVers[pos] = node;
700
764
  }
701
- inline const SVFVar* getRes() const
765
+ inline const ValVar* getRes() const
702
766
  {
703
767
  return res;
704
768
  }
@@ -756,7 +820,7 @@ private:
756
820
  OPIncomingBBs opIncomingBBs;
757
821
  public:
758
822
  /// Constructor
759
- IntraPHIVFGNode(NodeID id, const SVFVar* r): PHIVFGNode(id, r, TIntraPhi)
823
+ IntraPHIVFGNode(NodeID id, const ValVar* r): PHIVFGNode(id, r, TIntraPhi)
760
824
  {
761
825
  }
762
826
 
@@ -766,7 +830,7 @@ public:
766
830
  assert(it!=opIncomingBBs.end() && "version is nullptr, did not rename?");
767
831
  return it->second;
768
832
  }
769
- inline void setOpVerAndBB(u32_t pos, const SVFVar* node, const ICFGNode* bb)
833
+ inline void setOpVerAndBB(u32_t pos, const ValVar* node, const ICFGNode* bb)
770
834
  {
771
835
  opVers[pos] = node;
772
836
  opIncomingBBs[pos] = bb;
@@ -812,6 +876,22 @@ public:
812
876
  AddrVFGNode(NodeID id, const AddrStmt* edge): StmtVFGNode(id, edge,Addr)
813
877
  {
814
878
 
879
+ }
880
+ inline const ObjVar* getSrcNode() const
881
+ {
882
+ return SVFUtil::cast<ObjVar>(StmtVFGNode::getSrcNode());
883
+ }
884
+ inline const ValVar* getDstNode() const
885
+ {
886
+ return SVFUtil::cast<ValVar>(StmtVFGNode::getDstNode());
887
+ }
888
+ inline const ValVar* getLHSVar() const
889
+ {
890
+ return getDstNode();
891
+ }
892
+ inline const ObjVar* getRHSVar() const
893
+ {
894
+ return getSrcNode();
815
895
  }
816
896
  /// Methods for support type inquiry through isa, cast, and dyn_cast:
817
897
  //@{
@@ -847,11 +927,11 @@ class ArgumentVFGNode : public VFGNode
847
927
  {
848
928
 
849
929
  protected:
850
- const SVFVar* param;
930
+ const ValVar* param;
851
931
 
852
932
  public:
853
933
  /// Constructor
854
- ArgumentVFGNode(NodeID id, const SVFVar* p, VFGNodeK k): VFGNode(id,k), param(p)
934
+ ArgumentVFGNode(NodeID id, const ValVar* p, VFGNodeK k): VFGNode(id,k), param(p)
855
935
  {
856
936
  }
857
937
 
@@ -894,7 +974,7 @@ private:
894
974
  const CallICFGNode* cs;
895
975
  public:
896
976
  /// Constructor
897
- ActualParmVFGNode(NodeID id, const SVFVar* n, const CallICFGNode* c) :
977
+ ActualParmVFGNode(NodeID id, const ValVar* n, const CallICFGNode* c) :
898
978
  ArgumentVFGNode(id, n, AParm), cs(c)
899
979
  {
900
980
  }
@@ -906,7 +986,7 @@ public:
906
986
  }
907
987
 
908
988
  /// Return parameter
909
- inline const SVFVar* getParam() const
989
+ inline const ValVar* getParam() const
910
990
  {
911
991
  return param;
912
992
  }
@@ -952,13 +1032,13 @@ private:
952
1032
 
953
1033
  public:
954
1034
  /// Constructor
955
- FormalParmVFGNode(NodeID id, const SVFVar* n, const FunObjVar* f):
1035
+ FormalParmVFGNode(NodeID id, const ValVar* n, const FunObjVar* f):
956
1036
  ArgumentVFGNode(id, n, FParm), fun(f)
957
1037
  {
958
1038
  }
959
1039
 
960
1040
  /// Return parameter
961
- inline const SVFVar* getParam() const
1041
+ inline const ValVar* getParam() const
962
1042
  {
963
1043
  return param;
964
1044
  }
@@ -1028,7 +1108,7 @@ private:
1028
1108
 
1029
1109
  public:
1030
1110
  /// Constructor
1031
- ActualRetVFGNode(NodeID id, const SVFVar* n, const CallICFGNode* c) :
1111
+ ActualRetVFGNode(NodeID id, const ValVar* n, const CallICFGNode* c) :
1032
1112
  ArgumentVFGNode(id, n, ARet), cs(c)
1033
1113
  {
1034
1114
  }
@@ -1043,7 +1123,7 @@ public:
1043
1123
  return cs->getCaller();
1044
1124
  }
1045
1125
  /// Receive parameter at callsite
1046
- inline const SVFVar* getRev() const
1126
+ inline const ValVar* getRev() const
1047
1127
  {
1048
1128
  return param;
1049
1129
  }
@@ -1091,10 +1171,10 @@ private:
1091
1171
 
1092
1172
  public:
1093
1173
  /// Constructor
1094
- FormalRetVFGNode(NodeID id, const SVFVar* n, const FunObjVar* f);
1174
+ FormalRetVFGNode(NodeID id, const ValVar* n, const FunObjVar* f);
1095
1175
 
1096
1176
  /// Return value at callee
1097
- inline const SVFVar* getRet() const
1177
+ inline const ValVar* getRet() const
1098
1178
  {
1099
1179
  return param;
1100
1180
  }
@@ -41,6 +41,7 @@ namespace SVF
41
41
  {
42
42
 
43
43
  class SVFVar;
44
+ class ValVar;
44
45
 
45
46
 
46
47
  /*
@@ -58,7 +59,7 @@ public:
58
59
  NonOverlap, Overlap, Subset, Superset, Same
59
60
  };
60
61
 
61
- typedef std::pair<const SVFVar*, const SVFType*> IdxOperandPair;
62
+ typedef std::pair<const ValVar*, const SVFType*> IdxOperandPair;
62
63
  typedef std::vector<IdxOperandPair> IdxOperandPairs;
63
64
 
64
65
  /// Constructor
@@ -144,7 +145,7 @@ public:
144
145
  u32_t getElementNum(const SVFType* type) const;
145
146
 
146
147
 
147
- bool addOffsetVarAndGepTypePair(const SVFVar* var, const SVFType* gepIterType);
148
+ bool addOffsetVarAndGepTypePair(const ValVar* var, const SVFType* gepIterType);
148
149
 
149
150
  /// Return TRUE if this is a constant location set.
150
151
  bool isConstantOffset() const;
@@ -156,13 +157,13 @@ public:
156
157
  }
157
158
 
158
159
  /// Return byte offset from the beginning of the structure to the field where it is located for struct type
159
- u32_t getStructFieldOffset(const SVFVar* idxOperandVar, const SVFStructType* idxOperandType) const;
160
+ u32_t getStructFieldOffset(const ValVar* idxOperandVar, const SVFStructType* idxOperandType) const;
160
161
 
161
162
  /// Dump location set
162
163
  std::string dump() const;
163
164
 
164
165
  protected:
165
- inline void addIdxOperandPair(std::pair<const SVFVar*, const SVFType*> pair)
166
+ inline void addIdxOperandPair(std::pair<const ValVar*, const SVFType*> pair)
166
167
  {
167
168
  idxOperandPairs.push_back(pair);
168
169
  }
@@ -60,7 +60,7 @@ public:
60
60
  }
61
61
 
62
62
  /// Add ActualParmVFGNode
63
- inline void addActualParmVFGNode(const SVFVar* svfVar, const CallICFGNode* cs)
63
+ inline void addActualParmVFGNode(const ValVar* svfVar, const CallICFGNode* cs)
64
64
  {
65
65
  svfg->addActualParmVFGNode(svfVar, cs);
66
66
  }
@@ -55,12 +55,12 @@ public:
55
55
  typedef Map<NodeID,CallSiteSet> FunPtrToCallSitesMap;
56
56
  typedef Map<NodeID,NodeBS> MemObjToFieldsMap;
57
57
  typedef std::vector<const SVFStmt*> SVFStmtList;
58
- typedef std::vector<const SVFVar*> SVFVarList;
58
+ typedef std::vector<const ValVar*> ValVarList;
59
59
  typedef Map<const SVFVar*,PhiStmt*> PHINodeMap;
60
- typedef Map<const FunObjVar*,SVFVarList> FunToArgsListMap;
61
- typedef Map<const CallICFGNode*,SVFVarList> CSToArgsListMap;
62
- typedef Map<const RetICFGNode*,const SVFVar*> CSToRetMap;
63
- typedef Map<const FunObjVar*,const SVFVar*> FunToRetMap;
60
+ typedef Map<const FunObjVar*,ValVarList> FunToArgsListMap;
61
+ typedef Map<const CallICFGNode*,ValVarList> CSToArgsListMap;
62
+ typedef Map<const RetICFGNode*,const ValVar*> CSToRetMap;
63
+ typedef Map<const FunObjVar*,const ValVar*> FunToRetMap;
64
64
  typedef Map<const FunObjVar*,SVFStmtSet> FunToPAGEdgeSetMap;
65
65
  typedef Map<const ICFGNode*,SVFStmtList> ICFGNode2SVFStmtsMap;
66
66
  typedef Map<NodeID, NodeID> NodeToNodeMap;
@@ -132,6 +132,16 @@ public:
132
132
  {
133
133
  return getGNode(id);
134
134
  }
135
+ inline const ValVar* getValVar(NodeID id) const
136
+ {
137
+ if(const SVFVar* var = getSVFVar(id))
138
+ return SVFUtil::dyn_cast<ValVar>(var);
139
+ else
140
+ {
141
+ assert(false && "the Node is not a ValVar");
142
+ return nullptr;
143
+ }
144
+ }
135
145
  inline const ObjVar* getObjVar(NodeID id) const
136
146
  {
137
147
  if(const SVFVar* var = getSVFVar(id))
@@ -355,7 +365,7 @@ public:
355
365
  return funArgsListMap;
356
366
  }
357
367
  /// Get function arguments list
358
- inline const SVFVarList& getFunArgsList(const FunObjVar* func) const
368
+ inline const ValVarList& getFunArgsList(const FunObjVar* func) const
359
369
  {
360
370
  FunToArgsListMap::const_iterator it = funArgsListMap.find(func);
361
371
  assert(it != funArgsListMap.end() && "this function doesn't have arguments");
@@ -372,7 +382,7 @@ public:
372
382
  return callSiteArgsListMap;
373
383
  }
374
384
  /// Get callsite argument list
375
- inline const SVFVarList& getCallSiteArgsList(const CallICFGNode* cs) const
385
+ inline const ValVarList& getCallSiteArgsList(const CallICFGNode* cs) const
376
386
  {
377
387
  CSToArgsListMap::const_iterator it = callSiteArgsListMap.find(cs);
378
388
  assert(it != callSiteArgsListMap.end() && "this call site doesn't have arguments");
@@ -384,7 +394,7 @@ public:
384
394
  return callSiteRetMap;
385
395
  }
386
396
  /// Get callsite return
387
- inline const SVFVar* getCallSiteRet(const RetICFGNode* cs) const
397
+ inline const ValVar* getCallSiteRet(const RetICFGNode* cs) const
388
398
  {
389
399
  CSToRetMap::const_iterator it = callSiteRetMap.find(cs);
390
400
  assert(it != callSiteRetMap.end() && "this call site doesn't have return");
@@ -400,7 +410,7 @@ public:
400
410
  return funRetMap;
401
411
  }
402
412
  /// Get function return list
403
- inline const SVFVar* getFunRet(const FunObjVar* func) const
413
+ inline const ValVar* getFunRet(const FunObjVar* func) const
404
414
  {
405
415
  FunToRetMap::const_iterator it = funRetMap.find(func);
406
416
  assert(it != funRetMap.end() && "this function doesn't have return");
@@ -595,25 +605,25 @@ private:
595
605
  /// Get/set method for function/callsite arguments and returns
596
606
  //@{
597
607
  /// Add function arguments
598
- inline void addFunArgs(const FunObjVar* fun, const SVFVar* arg)
608
+ inline void addFunArgs(const FunObjVar* fun, const ValVar* arg)
599
609
  {
600
610
  FunEntryICFGNode* funEntryBlockNode = icfg->getFunEntryICFGNode(fun);
601
611
  addFunArgs(funEntryBlockNode, fun, arg);
602
612
  }
603
613
 
604
- inline void addFunArgs(FunEntryICFGNode* funEntryBlockNode, const FunObjVar* fun, const SVFVar* arg)
614
+ inline void addFunArgs(FunEntryICFGNode* funEntryBlockNode, const FunObjVar* fun, const ValVar* arg)
605
615
  {
606
616
  funEntryBlockNode->addFormalParms(arg);
607
617
  funArgsListMap[fun].push_back(arg);
608
618
  }
609
619
  /// Add function returns
610
- inline void addFunRet(const FunObjVar* fun, const SVFVar* ret)
620
+ inline void addFunRet(const FunObjVar* fun, const ValVar* ret)
611
621
  {
612
622
  FunExitICFGNode* funExitBlockNode = icfg->getFunExitICFGNode(fun);
613
623
  addFunRet(funExitBlockNode, fun, ret);
614
624
  }
615
625
 
616
- inline void addFunRet(FunExitICFGNode* funExitBlockNode, const FunObjVar* fun, const SVFVar* ret)
626
+ inline void addFunRet(FunExitICFGNode* funExitBlockNode, const FunObjVar* fun, const ValVar* ret)
617
627
  {
618
628
  funExitBlockNode->addFormalRet(ret);
619
629
  funRetMap[fun] = ret;
@@ -625,7 +635,7 @@ private:
625
635
  callSiteArgsListMap[callBlockNode].push_back(arg);
626
636
  }
627
637
  /// Add callsite returns
628
- inline void addCallSiteRets(RetICFGNode* retBlockNode,const SVFVar* arg)
638
+ inline void addCallSiteRets(RetICFGNode* retBlockNode,const ValVar* arg)
629
639
  {
630
640
  retBlockNode->addActualRet(arg);
631
641
  callSiteRetMap[retBlockNode]= arg;