svf-tools 1.0.604 → 1.0.605

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 (136) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/Casting_8h.html +3 -0
  10. package/SVF-doxygen/html/html/Casting_8h_source.html +22 -22
  11. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +15 -15
  13. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +82 -74
  18. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +14 -14
  19. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +9 -9
  20. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -21
  22. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +18 -18
  23. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -2
  28. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/MHP_8cpp_source.html +33 -38
  31. package/SVF-doxygen/html/html/MHP_8h_source.html +22 -22
  32. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  34. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +12 -11
  38. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +11 -11
  39. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +8 -1
  43. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +11 -11
  44. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +8 -8
  45. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +2 -2
  50. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -1
  51. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  52. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
  53. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
  54. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +2 -2
  55. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +1 -1
  56. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  57. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -2
  58. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +19 -19
  59. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +11 -11
  60. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  61. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +228 -220
  62. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
  63. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +17 -17
  64. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +64 -58
  65. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +30 -38
  67. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +3 -3
  69. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -2
  70. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +67 -83
  73. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
  76. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +53 -53
  77. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  78. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +5 -5
  81. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +1 -1
  82. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +46 -33
  83. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +4 -4
  84. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +8 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +32 -32
  87. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  88. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
  92. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  93. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +2 -2
  94. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +7 -7
  95. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +50 -17
  96. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +2 -2
  97. package/SVF-doxygen/html/html/namespacemembers_func_i.html +7 -7
  98. package/SVF-doxygen/html/html/namespacemembers_i.html +8 -8
  99. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  100. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  101. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val.html +3 -3
  102. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
  103. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty.html +2 -2
  104. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl.html +2 -2
  105. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html +2 -2
  106. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html +2 -2
  107. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html +2 -2
  108. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html +2 -2
  109. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html +4 -4
  110. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap.html +2 -2
  111. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +2 -2
  112. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__simple__type.html +2 -2
  113. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  114. package/include/DDA/DDAVFSolver.h +4 -8
  115. package/include/Graphs/SVFGOPT.h +2 -2
  116. package/include/MTA/MTAResultValidator.h +1 -1
  117. package/include/Util/Casting.h +7 -0
  118. package/lib/CFL/CFLStat.cpp +1 -1
  119. package/lib/DDA/ContextDDA.cpp +1 -1
  120. package/lib/Graphs/ConsG.cpp +2 -2
  121. package/lib/Graphs/SVFGOPT.cpp +15 -17
  122. package/lib/MTA/FSMPTA.cpp +7 -6
  123. package/lib/MTA/LockAnalysis.cpp +1 -1
  124. package/lib/MTA/MHP.cpp +215 -227
  125. package/lib/MemoryModel/LocationSet.cpp +1 -1
  126. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  127. package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
  128. package/lib/SABER/SrcSnkDDA.cpp +3 -3
  129. package/lib/SVF-LLVM/LLVMModule.cpp +1 -1
  130. package/lib/SVF-LLVM/LLVMUtil.cpp +1 -1
  131. package/lib/SVF-LLVM/SVFIRBuilder.cpp +4 -4
  132. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +3 -2
  133. package/lib/SVFIR/SymbolTableInfo.cpp +1 -1
  134. package/lib/WPA/AndersenSFR.cpp +1 -1
  135. package/lib/WPA/FlowSensitive.cpp +23 -22
  136. package/package.json +1 -1
@@ -63,7 +63,7 @@ bool LocationSet::isConstantOffset() const
63
63
  u32_t LocationSet::getElementNum(const SVFType* type) const
64
64
  {
65
65
 
66
- if(SVFUtil::isa<SVFArrayType>(type) || SVFUtil::isa<SVFStructType>(type))
66
+ if (SVFUtil::isa<SVFArrayType, SVFStructType>(type))
67
67
  {
68
68
  return SymbolTableInfo::SymbolInfo()->getNumOfFlattenElements(type);
69
69
  }
@@ -238,7 +238,7 @@ void PointerAnalysis::dumpAllTypes()
238
238
  nIter != this->getAllValidPtrs().end(); ++nIter)
239
239
  {
240
240
  const PAGNode* node = getPAG()->getGNode(*nIter);
241
- if (SVFUtil::isa<DummyObjVar>(node) || SVFUtil::isa<DummyValVar>(node))
241
+ if (SVFUtil::isa<DummyObjVar, DummyValVar>(node))
242
242
  continue;
243
243
 
244
244
  outs() << "##<" << node->getValue()->getName() << "> ";
@@ -70,7 +70,7 @@ void SaberSVFGBuilder::collectGlobals(BVDataPTAImpl* pta)
70
70
  for(SVFIR::iterator it = pag->begin(), eit = pag->end(); it!=eit; it++)
71
71
  {
72
72
  PAGNode* pagNode = it->second;
73
- if(SVFUtil::isa<DummyValVar>(pagNode) || SVFUtil::isa<DummyObjVar>(pagNode))
73
+ if (SVFUtil::isa<DummyValVar, DummyObjVar>(pagNode))
74
74
  continue;
75
75
 
76
76
  if(GepObjVar* gepobj = SVFUtil::dyn_cast<GepObjVar>(pagNode))
@@ -160,9 +160,9 @@ bool SrcSnkDDA::isInAWrapper(const SVFGNode* src, CallSiteSet& csIdSet)
160
160
  const SVFGNode* succ = edge->getDstNode();
161
161
  if(SVFUtil::isa<IntraDirSVFGEdge>(edge))
162
162
  {
163
- if (SVFUtil::isa<CopySVFGNode>(succ) || SVFUtil::isa<GepSVFGNode>(succ)
164
- || SVFUtil::isa<PHISVFGNode>(succ) || SVFUtil::isa<FormalRetSVFGNode>(succ)
165
- || SVFUtil::isa<ActualRetSVFGNode>(succ) || SVFUtil::isa<StoreSVFGNode>(succ))
163
+ if (SVFUtil::isa<CopySVFGNode, GepSVFGNode, PHISVFGNode,
164
+ FormalRetSVFGNode, ActualRetSVFGNode,
165
+ StoreSVFGNode>(succ))
166
166
  {
167
167
  worklist.push(succ);
168
168
  }
@@ -1097,7 +1097,7 @@ StInfo* LLVMModuleSet::collectStructInfo(const StructType *sty)
1097
1097
  /// offset with int_32 (s32_t) is large enough and will not cause overflow
1098
1098
  stinfo->addFldWithType(nf, getSVFType(et), strideOffset);
1099
1099
 
1100
- if (SVFUtil::isa<StructType>(et) || SVFUtil::isa<ArrayType>(et))
1100
+ if (SVFUtil::isa<StructType, ArrayType>(et))
1101
1101
  {
1102
1102
  StInfo * subStinfo = collectTypeInfo(et);
1103
1103
  u32_t nfE = subStinfo->getNumOfFlattenFields();
@@ -50,7 +50,7 @@ bool LLVMUtil::isObject(const Value* ref)
50
50
  createobj = true;
51
51
  if (SVFUtil::isa<GlobalVariable>(ref))
52
52
  createobj = true;
53
- if (SVFUtil::isa<Function>(ref) || SVFUtil::isa<AllocaInst>(ref) )
53
+ if (SVFUtil::isa<Function, AllocaInst>(ref))
54
54
  createobj = true;
55
55
 
56
56
  return createobj;
@@ -482,7 +482,7 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
482
482
  setCurrentLocation(gvar, nullptr);
483
483
  NodeID field = getGlobalVarField(gvar, offset, LLVMModuleSet::getLLVMModuleSet()->getSVFType(C->getType()));
484
484
 
485
- if (SVFUtil::isa<GlobalVariable>(C) || SVFUtil::isa<Function>(C))
485
+ if (SVFUtil::isa<GlobalVariable, Function>(C))
486
486
  {
487
487
  setCurrentLocation(C, nullptr);
488
488
  addStoreEdge(src, field);
@@ -511,7 +511,7 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
511
511
  addCopyEdge(pag->getNullPtr(), src);
512
512
  }
513
513
  }
514
- else if (SVFUtil::isa<ConstantArray>(C) || SVFUtil::isa<ConstantStruct>(C))
514
+ else if (SVFUtil::isa<ConstantArray, ConstantStruct>(C))
515
515
  {
516
516
  if(cppUtil::isValVtbl(gvar) && !Options::VtableInSVFIR)
517
517
  return;
@@ -536,7 +536,7 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
536
536
  }
537
537
  else
538
538
  {
539
- assert((SVFUtil::isa<ConstantAggregateZero>(data) || SVFUtil::isa<UndefValue>(data)) && "Single value type data should have been handled!");
539
+ assert((SVFUtil::isa<ConstantAggregateZero, UndefValue>(data)) && "Single value type data should have been handled!");
540
540
  }
541
541
  }
542
542
  }
@@ -1588,7 +1588,7 @@ NodeID SVFIRBuilder::getGepValVar(const Value* val, const LocationSet& ls, const
1588
1588
  * 1. Instruction
1589
1589
  * 2. GlobalVariable
1590
1590
  */
1591
- assert((SVFUtil::isa<SVFInstruction>(curVal) || SVFUtil::isa<SVFGlobalValue>(curVal)) && "curVal not an instruction or a globalvariable?");
1591
+ assert((SVFUtil::isa<SVFInstruction, SVFGlobalValue>(curVal)) && "curVal not an instruction or a globalvariable?");
1592
1592
 
1593
1593
  // We assume every GepValNode and its GepEdge to the baseNode are unique across the whole program
1594
1594
  // We preserve the current BB information to restore it after creating the gepNode
@@ -526,7 +526,8 @@ void SymbolTableBuilder::handleGlobalInitializerCE(const Constant *C)
526
526
  }
527
527
  else
528
528
  {
529
- assert((SVFUtil::isa<ConstantAggregateZero>(data) || SVFUtil::isa<UndefValue>(data)) && "Single value type data should have been handled!");
529
+ assert((SVFUtil::isa<ConstantAggregateZero, UndefValue>(data)) &&
530
+ "Single value type data should have been handled!");
530
531
  }
531
532
  }
532
533
  }
@@ -737,7 +738,7 @@ u32_t SymbolTableBuilder::getObjSize(const Type* ety)
737
738
  {
738
739
  assert(ety && "type is null?");
739
740
  u32_t numOfFields = 1;
740
- if (SVFUtil::isa<StructType>(ety) || SVFUtil::isa<ArrayType>(ety))
741
+ if (SVFUtil::isa<StructType, ArrayType>(ety))
741
742
  {
742
743
  numOfFields = getNumOfFlattenElements(ety);
743
744
  }
@@ -373,7 +373,7 @@ bool ObjTypeInfo::isNonPtrFieldObj(const LocationSet& ls)
373
373
 
374
374
  const SVFType* ety = getType();
375
375
 
376
- if (SVFUtil::isa<SVFStructType>(ety) || SVFUtil::isa<SVFArrayType>(ety))
376
+ if (SVFUtil::isa<SVFStructType, SVFArrayType>(ety))
377
377
  {
378
378
  u32_t sz = 0;
379
379
  if(Options::ModelArrays)
@@ -136,7 +136,7 @@ void AndersenSFR::fieldExpand(NodeSet& initials, s32_t offset, NodeBS& strides,
136
136
  s32_t initOffset;
137
137
  if (GepObjVar *gepNode = SVFUtil::dyn_cast<GepObjVar>(initPN))
138
138
  initOffset = gepNode->getConstantFieldIdx();
139
- else if (SVFUtil::isa<FIObjVar>(initPN) || SVFUtil::isa<DummyObjVar>(initPN))
139
+ else if (SVFUtil::isa<FIObjVar, DummyObjVar>(initPN))
140
140
  initOffset = 0;
141
141
  else
142
142
  {
@@ -192,61 +192,63 @@ bool FlowSensitive::processSVFGNode(SVFGNode* node)
192
192
  {
193
193
  double start = stat->getClk();
194
194
  bool changed = false;
195
- if(AddrSVFGNode* addr = SVFUtil::dyn_cast<AddrSVFGNode>(node))
195
+ if (AddrSVFGNode* addr = SVFUtil::dyn_cast<AddrSVFGNode>(node))
196
196
  {
197
197
  numOfProcessedAddr++;
198
- if(processAddr(addr))
198
+ if (processAddr(addr))
199
199
  changed = true;
200
200
  }
201
- else if(CopySVFGNode* copy = SVFUtil::dyn_cast<CopySVFGNode>(node))
201
+ else if (CopySVFGNode* copy = SVFUtil::dyn_cast<CopySVFGNode>(node))
202
202
  {
203
203
  numOfProcessedCopy++;
204
- if(processCopy(copy))
204
+ if (processCopy(copy))
205
205
  changed = true;
206
206
  }
207
- else if(GepSVFGNode* gep = SVFUtil::dyn_cast<GepSVFGNode>(node))
207
+ else if (GepSVFGNode* gep = SVFUtil::dyn_cast<GepSVFGNode>(node))
208
208
  {
209
209
  numOfProcessedGep++;
210
210
  if(processGep(gep))
211
211
  changed = true;
212
212
  }
213
- else if(LoadSVFGNode* load = SVFUtil::dyn_cast<LoadSVFGNode>(node))
213
+ else if (LoadSVFGNode* load = SVFUtil::dyn_cast<LoadSVFGNode>(node))
214
214
  {
215
215
  numOfProcessedLoad++;
216
216
  if(processLoad(load))
217
217
  changed = true;
218
218
  }
219
- else if(StoreSVFGNode* store = SVFUtil::dyn_cast<StoreSVFGNode>(node))
219
+ else if (StoreSVFGNode* store = SVFUtil::dyn_cast<StoreSVFGNode>(node))
220
220
  {
221
221
  numOfProcessedStore++;
222
- if(processStore(store))
222
+ if (processStore(store))
223
223
  changed = true;
224
224
  }
225
- else if(PHISVFGNode* phi = SVFUtil::dyn_cast<PHISVFGNode>(node))
225
+ else if (PHISVFGNode* phi = SVFUtil::dyn_cast<PHISVFGNode>(node))
226
226
  {
227
227
  numOfProcessedPhi++;
228
228
  if (processPhi(phi))
229
229
  changed = true;
230
230
  }
231
- else if(SVFUtil::isa<MSSAPHISVFGNode>(node) || SVFUtil::isa<FormalINSVFGNode>(node)
232
- || SVFUtil::isa<FormalOUTSVFGNode>(node) || SVFUtil::isa<ActualINSVFGNode>(node)
233
- || SVFUtil::isa<ActualOUTSVFGNode>(node))
231
+ else if (SVFUtil::isa<MSSAPHISVFGNode, FormalINSVFGNode,
232
+ FormalOUTSVFGNode, ActualINSVFGNode,
233
+ ActualOUTSVFGNode>(node))
234
234
  {
235
235
  numOfProcessedMSSANode++;
236
236
  changed = true;
237
237
  }
238
- else if(SVFUtil::isa<ActualParmSVFGNode>(node) || SVFUtil::isa<FormalParmSVFGNode>(node)
239
- || SVFUtil::isa<ActualRetSVFGNode>(node) || SVFUtil::isa<FormalRetSVFGNode>(node)
240
- || SVFUtil::isa<NullPtrSVFGNode>(node))
238
+ else if (SVFUtil::isa<ActualParmSVFGNode, FormalParmSVFGNode,
239
+ ActualRetSVFGNode, FormalRetSVFGNode,
240
+ NullPtrSVFGNode>(node))
241
241
  {
242
242
  changed = true;
243
243
  }
244
- else if(SVFUtil::isa<CmpVFGNode>(node) || SVFUtil::isa<BinaryOPVFGNode>(node) || SVFUtil::dyn_cast<UnaryOPVFGNode>(node))
244
+ else if (SVFUtil::isa<CmpVFGNode, BinaryOPVFGNode>(node) ||
245
+ SVFUtil::dyn_cast<UnaryOPVFGNode>(node))
245
246
  {
246
-
247
247
  }
248
248
  else
249
+ {
249
250
  assert(false && "unexpected kind of SVFG nodes");
251
+ }
250
252
 
251
253
  double end = stat->getClk();
252
254
  processTime += (end - start) / TIMEINTERVAL;
@@ -710,10 +712,8 @@ void FlowSensitive::connectCallerAndCallee(const CallEdgeMap& newEdges, SVFGEdge
710
712
  */
711
713
  void FlowSensitive::updateConnectedNodes(const SVFGEdgeSetTy& edges)
712
714
  {
713
- for (SVFGEdgeSetTy::const_iterator it = edges.begin(), eit = edges.end();
714
- it != eit; ++it)
715
+ for (const SVFGEdge* edge : edges)
715
716
  {
716
- const SVFGEdge* edge = *it;
717
717
  SVFGNode* dstNode = edge->getDstNode();
718
718
  if (SVFUtil::isa<PHISVFGNode>(dstNode))
719
719
  {
@@ -721,7 +721,7 @@ void FlowSensitive::updateConnectedNodes(const SVFGEdgeSetTy& edges)
721
721
  /// node in next iteration
722
722
  pushIntoWorklist(dstNode->getId());
723
723
  }
724
- else if (SVFUtil::isa<FormalINSVFGNode>(dstNode) || SVFUtil::isa<ActualOUTSVFGNode>(dstNode))
724
+ else if (SVFUtil::isa<FormalINSVFGNode, ActualOUTSVFGNode>(dstNode))
725
725
  {
726
726
  /// If this is a formal-in or actual-out node, we need to propagate points-to
727
727
  /// information from its predecessor node.
@@ -778,7 +778,8 @@ bool FlowSensitive::propVarPtsAfterCGUpdated(NodeID var, const SVFGNode* src, co
778
778
  void FlowSensitive::cluster(void)
779
779
  {
780
780
  std::vector<std::pair<unsigned, unsigned>> keys;
781
- for (SVFIR::iterator pit = pag->begin(); pit != pag->end(); ++pit) keys.push_back(std::make_pair(pit->first, 1));
781
+ for (const auto& pair : *pag)
782
+ keys.emplace_back(pair.first, 1);
782
783
 
783
784
  PointsTo::MappingPtr nodeMapping =
784
785
  std::make_shared<std::vector<NodeID>>(NodeIDAllocator::Clusterer::cluster(ander, keys, candidateMappings, "aux-ander"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.604",
3
+ "version": "1.0.605",
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": {