svf-lib 1.0.742 → 1.0.746
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.
- package/SVF-linux/Release-build/lib/libSvf.a +0 -0
- package/SVF-linux/include/DDA/ContextDDA.h +1 -1
- package/SVF-linux/include/DDA/FlowDDA.h +1 -1
- package/SVF-linux/include/Graphs/ConsG.h +8 -8
- package/SVF-linux/include/Graphs/ICFGNode.h +4 -4
- package/SVF-linux/include/Graphs/IRGraph.h +7 -7
- package/SVF-linux/include/Graphs/VFG.h +13 -13
- package/SVF-linux/include/Graphs/VFGNode.h +6 -6
- package/SVF-linux/include/MSSA/MSSAMuChi.h +6 -6
- package/SVF-linux/include/MSSA/MemRegion.h +11 -11
- package/SVF-linux/include/MSSA/MemSSA.h +11 -11
- package/SVF-linux/include/MemoryModel/PointerAnalysis.h +7 -7
- package/SVF-linux/include/MemoryModel/PointerAnalysisImpl.h +3 -3
- package/SVF-linux/include/MemoryModel/SVFIR.h +80 -81
- package/SVF-linux/include/MemoryModel/SVFStatements.h +72 -71
- package/SVF-linux/include/MemoryModel/SVFVariables.h +54 -54
- package/SVF-linux/include/SVF-FE/SVFIRBuilder.h +24 -24
- package/SVF-linux/include/Util/IRAnnotator.h +1 -1
- package/SVF-linux/include/Util/TypeBasedHeapCloning.h +2 -2
- package/SVF-osx/Release-build/lib/CUDD/libCudd.a +0 -0
- package/SVF-osx/Release-build/lib/libSvf.a +0 -0
- package/SVF-osx/include/DDA/ContextDDA.h +1 -1
- package/SVF-osx/include/DDA/FlowDDA.h +1 -1
- package/SVF-osx/include/Graphs/ConsG.h +8 -8
- package/SVF-osx/include/Graphs/ICFGNode.h +4 -4
- package/SVF-osx/include/Graphs/IRGraph.h +7 -7
- package/SVF-osx/include/Graphs/VFG.h +13 -13
- package/SVF-osx/include/Graphs/VFGNode.h +6 -6
- package/SVF-osx/include/MSSA/MSSAMuChi.h +6 -6
- package/SVF-osx/include/MSSA/MemRegion.h +11 -11
- package/SVF-osx/include/MSSA/MemSSA.h +11 -11
- package/SVF-osx/include/MemoryModel/PointerAnalysis.h +7 -7
- package/SVF-osx/include/MemoryModel/PointerAnalysisImpl.h +3 -3
- package/SVF-osx/include/MemoryModel/SVFIR.h +80 -81
- package/SVF-osx/include/MemoryModel/SVFStatements.h +72 -71
- package/SVF-osx/include/MemoryModel/SVFVariables.h +54 -54
- package/SVF-osx/include/SVF-FE/SVFIRBuilder.h +24 -24
- package/SVF-osx/include/Util/IRAnnotator.h +1 -1
- package/SVF-osx/include/Util/TypeBasedHeapCloning.h +2 -2
- package/package.json +1 -1
|
@@ -175,9 +175,10 @@ public:
|
|
|
175
175
|
}
|
|
176
176
|
//@}
|
|
177
177
|
|
|
178
|
-
typedef GenericNode<SVFVar,SVFStmt>::GEdgeSetTy
|
|
179
|
-
typedef Map<EdgeID,
|
|
180
|
-
typedef PAGEdgeToSetMapTy
|
|
178
|
+
typedef GenericNode<SVFVar,SVFStmt>::GEdgeSetTy SVFStmtSetTy;
|
|
179
|
+
typedef Map<EdgeID, SVFStmtSetTy> PAGEdgeToSetMapTy;
|
|
180
|
+
typedef PAGEdgeToSetMapTy KindToSVFStmtMapTy;
|
|
181
|
+
typedef SVFStmtSetTy PAGEdgeSetTy;
|
|
181
182
|
|
|
182
183
|
private:
|
|
183
184
|
typedef Map<const ICFGNode*, u32_t> Inst2LabelMap;
|
|
@@ -193,16 +194,16 @@ private:
|
|
|
193
194
|
/*!
|
|
194
195
|
* Copy edge
|
|
195
196
|
*/
|
|
196
|
-
class
|
|
197
|
+
class AddrStmt: public SVFStmt
|
|
197
198
|
{
|
|
198
199
|
private:
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
void operator=(const
|
|
200
|
+
AddrStmt(); ///< place holder
|
|
201
|
+
AddrStmt(const AddrStmt &); ///< place holder
|
|
202
|
+
void operator=(const AddrStmt &); ///< place holder
|
|
202
203
|
public:
|
|
203
204
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
204
205
|
//@{
|
|
205
|
-
static inline bool classof(const
|
|
206
|
+
static inline bool classof(const AddrStmt *)
|
|
206
207
|
{
|
|
207
208
|
return true;
|
|
208
209
|
}
|
|
@@ -217,7 +218,7 @@ public:
|
|
|
217
218
|
//@}
|
|
218
219
|
|
|
219
220
|
/// constructor
|
|
220
|
-
|
|
221
|
+
AddrStmt(SVFVar* s, SVFVar* d) : SVFStmt(s,d,SVFStmt::Addr)
|
|
221
222
|
{
|
|
222
223
|
}
|
|
223
224
|
|
|
@@ -228,16 +229,16 @@ public:
|
|
|
228
229
|
/*!
|
|
229
230
|
* Copy edge
|
|
230
231
|
*/
|
|
231
|
-
class
|
|
232
|
+
class CopyStmt: public SVFStmt
|
|
232
233
|
{
|
|
233
234
|
private:
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
void operator=(const
|
|
235
|
+
CopyStmt(); ///< place holder
|
|
236
|
+
CopyStmt(const CopyStmt &); ///< place holder
|
|
237
|
+
void operator=(const CopyStmt &); ///< place holder
|
|
237
238
|
public:
|
|
238
239
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
239
240
|
//@{
|
|
240
|
-
static inline bool classof(const
|
|
241
|
+
static inline bool classof(const CopyStmt *)
|
|
241
242
|
{
|
|
242
243
|
return true;
|
|
243
244
|
}
|
|
@@ -252,7 +253,7 @@ public:
|
|
|
252
253
|
//@}
|
|
253
254
|
|
|
254
255
|
/// constructor
|
|
255
|
-
|
|
256
|
+
CopyStmt(SVFVar* s, SVFVar* d) : SVFStmt(s,d,SVFStmt::Copy)
|
|
256
257
|
{
|
|
257
258
|
}
|
|
258
259
|
|
|
@@ -325,12 +326,12 @@ public:
|
|
|
325
326
|
/*!
|
|
326
327
|
* Phi instruction edge
|
|
327
328
|
*/
|
|
328
|
-
class
|
|
329
|
+
class PhiStmt: public MultiOpndStmt
|
|
329
330
|
{
|
|
330
331
|
private:
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
void operator=(const
|
|
332
|
+
PhiStmt(); ///< place holder
|
|
333
|
+
PhiStmt(const PhiStmt &); ///< place holder
|
|
334
|
+
void operator=(const PhiStmt &); ///< place holder
|
|
334
335
|
SVFVar* getSrcNode(); ///< place holder, not allowed since this SVFStmt has multiple operands but not a single source
|
|
335
336
|
SVFVar* getDstNode(); ///< place holder, use getRes() instead
|
|
336
337
|
SVFVar* getSrcID(); ///< place holder, use getOpVarID(pos) instead
|
|
@@ -339,7 +340,7 @@ private:
|
|
|
339
340
|
public:
|
|
340
341
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
341
342
|
//@{
|
|
342
|
-
static inline bool classof(const
|
|
343
|
+
static inline bool classof(const PhiStmt *)
|
|
343
344
|
{
|
|
344
345
|
return true;
|
|
345
346
|
}
|
|
@@ -358,7 +359,7 @@ public:
|
|
|
358
359
|
//@}
|
|
359
360
|
|
|
360
361
|
/// constructor
|
|
361
|
-
|
|
362
|
+
PhiStmt(SVFVar* s, const OPVars& opnds) : MultiOpndStmt(s,opnds,SVFStmt::Phi)
|
|
362
363
|
{
|
|
363
364
|
}
|
|
364
365
|
void addOpVar(SVFVar* op){
|
|
@@ -371,12 +372,12 @@ public:
|
|
|
371
372
|
/*!
|
|
372
373
|
* Compare instruction edge
|
|
373
374
|
*/
|
|
374
|
-
class
|
|
375
|
+
class CmpStmt: public MultiOpndStmt
|
|
375
376
|
{
|
|
376
377
|
private:
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
void operator=(const
|
|
378
|
+
CmpStmt(); ///< place holder
|
|
379
|
+
CmpStmt(const CmpStmt &); ///< place holder
|
|
380
|
+
void operator=(const CmpStmt &); ///< place holder
|
|
380
381
|
SVFVar* getSrcNode(); ///< place holder, not allowed since this SVFStmt has multiple operands but not a single source
|
|
381
382
|
SVFVar* getDstNode(); ///< place holder, use getRes() instead
|
|
382
383
|
SVFVar* getSrcID(); ///< place holder, use getOpVarID(pos) instead
|
|
@@ -386,7 +387,7 @@ private:
|
|
|
386
387
|
public:
|
|
387
388
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
388
389
|
//@{
|
|
389
|
-
static inline bool classof(const
|
|
390
|
+
static inline bool classof(const CmpStmt *)
|
|
390
391
|
{
|
|
391
392
|
return true;
|
|
392
393
|
}
|
|
@@ -405,7 +406,7 @@ public:
|
|
|
405
406
|
//@}
|
|
406
407
|
|
|
407
408
|
/// constructor
|
|
408
|
-
|
|
409
|
+
CmpStmt(SVFVar* s, const OPVars& opnds, u32_t oc) : MultiOpndStmt(s,opnds,SVFStmt::Cmp), opcode(oc)
|
|
409
410
|
{
|
|
410
411
|
}
|
|
411
412
|
|
|
@@ -421,12 +422,12 @@ public:
|
|
|
421
422
|
/*!
|
|
422
423
|
* Binary instruction edge
|
|
423
424
|
*/
|
|
424
|
-
class
|
|
425
|
+
class BinaryOPStmt: public MultiOpndStmt
|
|
425
426
|
{
|
|
426
427
|
private:
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
void operator=(const
|
|
428
|
+
BinaryOPStmt(); ///< place holder
|
|
429
|
+
BinaryOPStmt(const BinaryOPStmt &); ///< place holder
|
|
430
|
+
void operator=(const BinaryOPStmt &); ///< place holder
|
|
430
431
|
SVFVar* getSrcNode(); ///< place holder, not allowed since this SVFStmt has multiple operands but not a single source
|
|
431
432
|
SVFVar* getDstNode(); ///< place holder, use getRes() instead
|
|
432
433
|
SVFVar* getSrcID(); ///< place holder, use getOpVarID(pos) instead
|
|
@@ -437,7 +438,7 @@ private:
|
|
|
437
438
|
public:
|
|
438
439
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
439
440
|
//@{
|
|
440
|
-
static inline bool classof(const
|
|
441
|
+
static inline bool classof(const BinaryOPStmt *)
|
|
441
442
|
{
|
|
442
443
|
return true;
|
|
443
444
|
}
|
|
@@ -456,7 +457,7 @@ public:
|
|
|
456
457
|
//@}
|
|
457
458
|
|
|
458
459
|
/// constructor
|
|
459
|
-
|
|
460
|
+
BinaryOPStmt(SVFVar* s, const OPVars& opnds, u32_t oc) : MultiOpndStmt(s,opnds,SVFStmt::BinaryOp), opcode(oc)
|
|
460
461
|
{
|
|
461
462
|
}
|
|
462
463
|
|
|
@@ -471,12 +472,12 @@ public:
|
|
|
471
472
|
/*!
|
|
472
473
|
* Unary instruction edge
|
|
473
474
|
*/
|
|
474
|
-
class
|
|
475
|
+
class UnaryOPStmt: public SVFStmt
|
|
475
476
|
{
|
|
476
477
|
private:
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
void operator=(const
|
|
478
|
+
UnaryOPStmt(); ///< place holder
|
|
479
|
+
UnaryOPStmt(const UnaryOPStmt &); ///< place holder
|
|
480
|
+
void operator=(const UnaryOPStmt &); ///< place holder
|
|
480
481
|
SVFVar* getSrcNode(); ///< place holder, use getOpVar() instead
|
|
481
482
|
SVFVar* getDstNode(); ///< place holder, use getRes() instead
|
|
482
483
|
SVFVar* getSrcID(); ///< place holder, use getOpVarID() instead
|
|
@@ -486,7 +487,7 @@ private:
|
|
|
486
487
|
public:
|
|
487
488
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
488
489
|
//@{
|
|
489
|
-
static inline bool classof(const
|
|
490
|
+
static inline bool classof(const UnaryOPStmt *)
|
|
490
491
|
{
|
|
491
492
|
return true;
|
|
492
493
|
}
|
|
@@ -501,7 +502,7 @@ public:
|
|
|
501
502
|
//@}
|
|
502
503
|
|
|
503
504
|
/// constructor
|
|
504
|
-
|
|
505
|
+
UnaryOPStmt(SVFVar* s, SVFVar* d, u32_t oc) : SVFStmt(s,d,SVFStmt::UnaryOp), opcode(oc)
|
|
505
506
|
{
|
|
506
507
|
}
|
|
507
508
|
|
|
@@ -588,17 +589,17 @@ public:
|
|
|
588
589
|
/*!
|
|
589
590
|
* Store edge
|
|
590
591
|
*/
|
|
591
|
-
class
|
|
592
|
+
class StoreStmt: public SVFStmt
|
|
592
593
|
{
|
|
593
594
|
private:
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
void operator=(const
|
|
595
|
+
StoreStmt(); ///< place holder
|
|
596
|
+
StoreStmt(const StoreStmt &); ///< place holder
|
|
597
|
+
void operator=(const StoreStmt &); ///< place holder
|
|
597
598
|
|
|
598
599
|
public:
|
|
599
600
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
600
601
|
//@{
|
|
601
|
-
static inline bool classof(const
|
|
602
|
+
static inline bool classof(const StoreStmt *)
|
|
602
603
|
{
|
|
603
604
|
return true;
|
|
604
605
|
}
|
|
@@ -613,7 +614,7 @@ public:
|
|
|
613
614
|
//@}
|
|
614
615
|
|
|
615
616
|
/// constructor
|
|
616
|
-
|
|
617
|
+
StoreStmt(SVFVar* s, SVFVar* d, const IntraBlockNode* st) :
|
|
617
618
|
SVFStmt(s, d, makeEdgeFlagWithStoreInst(SVFStmt::Store, st))
|
|
618
619
|
{
|
|
619
620
|
}
|
|
@@ -625,17 +626,17 @@ public:
|
|
|
625
626
|
/*!
|
|
626
627
|
* Load edge
|
|
627
628
|
*/
|
|
628
|
-
class
|
|
629
|
+
class LoadStmt: public SVFStmt
|
|
629
630
|
{
|
|
630
631
|
private:
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
void operator=(const
|
|
632
|
+
LoadStmt(); ///< place holder
|
|
633
|
+
LoadStmt(const LoadStmt &); ///< place holder
|
|
634
|
+
void operator=(const LoadStmt &); ///< place holder
|
|
634
635
|
|
|
635
636
|
public:
|
|
636
637
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
637
638
|
//@{
|
|
638
|
-
static inline bool classof(const
|
|
639
|
+
static inline bool classof(const LoadStmt *)
|
|
639
640
|
{
|
|
640
641
|
return true;
|
|
641
642
|
}
|
|
@@ -650,7 +651,7 @@ public:
|
|
|
650
651
|
//@}
|
|
651
652
|
|
|
652
653
|
/// constructor
|
|
653
|
-
|
|
654
|
+
LoadStmt(SVFVar* s, SVFVar* d) : SVFStmt(s,d,SVFStmt::Load)
|
|
654
655
|
{
|
|
655
656
|
}
|
|
656
657
|
|
|
@@ -661,17 +662,17 @@ public:
|
|
|
661
662
|
/*!
|
|
662
663
|
* Gep edge
|
|
663
664
|
*/
|
|
664
|
-
class
|
|
665
|
+
class GepStmt: public SVFStmt
|
|
665
666
|
{
|
|
666
667
|
private:
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
void operator=(const
|
|
668
|
+
GepStmt(); ///< place holder
|
|
669
|
+
GepStmt(const GepStmt &); ///< place holder
|
|
670
|
+
void operator=(const GepStmt &); ///< place holder
|
|
670
671
|
|
|
671
672
|
public:
|
|
672
673
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
673
674
|
//@{
|
|
674
|
-
static inline bool classof(const
|
|
675
|
+
static inline bool classof(const GepStmt *)
|
|
675
676
|
{
|
|
676
677
|
return true;
|
|
677
678
|
}
|
|
@@ -689,7 +690,7 @@ public:
|
|
|
689
690
|
|
|
690
691
|
protected:
|
|
691
692
|
/// constructor
|
|
692
|
-
|
|
693
|
+
GepStmt(SVFVar* s, SVFVar* d, PEDGEK k) : SVFStmt(s,d,k)
|
|
693
694
|
{
|
|
694
695
|
|
|
695
696
|
}
|
|
@@ -701,23 +702,23 @@ protected:
|
|
|
701
702
|
/*!
|
|
702
703
|
* Gep edge with a fixed offset
|
|
703
704
|
*/
|
|
704
|
-
class
|
|
705
|
+
class NormalGepStmt : public GepStmt
|
|
705
706
|
{
|
|
706
707
|
private:
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
void operator=(const
|
|
708
|
+
NormalGepStmt(); ///< place holder
|
|
709
|
+
NormalGepStmt(const NormalGepStmt&); ///< place holder
|
|
710
|
+
void operator=(const NormalGepStmt&); ///< place holder
|
|
710
711
|
|
|
711
712
|
LocationSet ls; ///< location set of the gep edge
|
|
712
713
|
|
|
713
714
|
public:
|
|
714
715
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
715
716
|
//@{
|
|
716
|
-
static inline bool classof(const
|
|
717
|
+
static inline bool classof(const NormalGepStmt *)
|
|
717
718
|
{
|
|
718
719
|
return true;
|
|
719
720
|
}
|
|
720
|
-
static inline bool classof(const
|
|
721
|
+
static inline bool classof(const GepStmt *edge)
|
|
721
722
|
{
|
|
722
723
|
return edge->getEdgeKind() == SVFStmt::NormalGep;
|
|
723
724
|
}
|
|
@@ -732,7 +733,7 @@ public:
|
|
|
732
733
|
//@}
|
|
733
734
|
|
|
734
735
|
/// constructor
|
|
735
|
-
|
|
736
|
+
NormalGepStmt(SVFVar* s, SVFVar* d, const LocationSet& l) : GepStmt(s,d,SVFStmt::NormalGep), ls(l)
|
|
736
737
|
{}
|
|
737
738
|
|
|
738
739
|
/// offset of the gep edge
|
|
@@ -751,21 +752,21 @@ public:
|
|
|
751
752
|
/*!
|
|
752
753
|
* Gep edge with a variant offset
|
|
753
754
|
*/
|
|
754
|
-
class
|
|
755
|
+
class VariantGepStmt : public GepStmt
|
|
755
756
|
{
|
|
756
757
|
private:
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
void operator=(const
|
|
758
|
+
VariantGepStmt(); ///< place holder
|
|
759
|
+
VariantGepStmt(const VariantGepStmt&); ///< place holder
|
|
760
|
+
void operator=(const VariantGepStmt&); ///< place holder
|
|
760
761
|
|
|
761
762
|
public:
|
|
762
763
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
763
764
|
//@{
|
|
764
|
-
static inline bool classof(const
|
|
765
|
+
static inline bool classof(const VariantGepStmt *)
|
|
765
766
|
{
|
|
766
767
|
return true;
|
|
767
768
|
}
|
|
768
|
-
static inline bool classof(const
|
|
769
|
+
static inline bool classof(const GepStmt *edge)
|
|
769
770
|
{
|
|
770
771
|
return edge->getEdgeKind() == SVFStmt::VariantGep;
|
|
771
772
|
}
|
|
@@ -780,7 +781,7 @@ public:
|
|
|
780
781
|
//@}
|
|
781
782
|
|
|
782
783
|
/// constructor
|
|
783
|
-
|
|
784
|
+
VariantGepStmt(SVFVar* s, SVFVar* d) : GepStmt(s,d,SVFStmt::VariantGep) {}
|
|
784
785
|
|
|
785
786
|
virtual const std::string toString() const override;
|
|
786
787
|
|