svf-tools 1.0.862 → 1.0.863

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.
@@ -1858,7 +1858,7 @@ Friends</h2></td></tr>
1858
1858
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a4f916c64ca04c4db30bd19fb8505724d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d">SVF::SymbolTableInfo::setModule</a></div><div class="ttdeci">void setModule(SVFModule *m)</div><div class="ttdoc">Module.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00146">SymbolTableInfo.h:146</a></div></div>
1859
1859
  <div class="ttc" id="anamespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00152">BasicTypes.h:152</a></div></div>
1860
1860
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_a067bd6dbaf74a028d546fa56b095791b"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">SVF::SVFFunction::getAnnotations</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; getAnnotations() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00466">SVFValue.h:466</a></div></div>
1861
- <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a99eaaef89f214fc8587349361600b44d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a99eaaef89f214fc8587349361600b44d">SVF::ObjTypeInference::typeSizeDiffTest</a></div><div class="ttdeci">void typeSizeDiffTest(const PointerType *oPTy, const Type *iTy, const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00534">ObjTypeInference.cpp:534</a></div></div>
1861
+ <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a99eaaef89f214fc8587349361600b44d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a99eaaef89f214fc8587349361600b44d">SVF::ObjTypeInference::typeSizeDiffTest</a></div><div class="ttdeci">void typeSizeDiffTest(const PointerType *oPTy, const Type *iTy, const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00532">ObjTypeInference.cpp:532</a></div></div>
1862
1862
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext &amp; getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00332">LLVMModule.h:332</a></div></div>
1863
1863
  <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a4eebcc8dc7f23ead07c64bf523d0e68e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a4eebcc8dc7f23ead07c64bf523d0e68e">SVF::SymbolTableBuilder::getTypeInference</a></div><div class="ttdeci">ObjTypeInference * getTypeInference()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00574">SymbolTableBuilder.cpp:574</a></div></div>
1864
1864
  <div class="ttc" id="anamespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
@@ -1922,7 +1922,7 @@ Friends</h2></td></tr>
1922
1922
  <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a42c69bc9ee71cc0ff322c1701b7e07bd"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a42c69bc9ee71cc0ff322c1701b7e07bd">SVF::SymbolTableBuilder::collectSVFTypeInfo</a></div><div class="ttdeci">void collectSVFTypeInfo(const Value *val)</div><div class="ttdoc">collect the syms</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00240">SymbolTableBuilder.cpp:240</a></div></div>
1923
1923
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
1924
1924
  <div class="ttc" id="anamespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00140">BasicTypes.h:140</a></div></div>
1925
- <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_afe926ee3427bb329d189e0c40bb1cd60"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#afe926ee3427bb329d189e0c40bb1cd60">SVF::ObjTypeInference::validateTypeCheck</a></div><div class="ttdeci">void validateTypeCheck(const CallBase *cs)</div><div class="ttdoc">Validate type inference.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00509">ObjTypeInference.cpp:509</a></div></div>
1925
+ <div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_afe926ee3427bb329d189e0c40bb1cd60"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#afe926ee3427bb329d189e0c40bb1cd60">SVF::ObjTypeInference::validateTypeCheck</a></div><div class="ttdeci">void validateTypeCheck(const CallBase *cs)</div><div class="ttdoc">Validate type inference.</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00507">ObjTypeInference.cpp:507</a></div></div>
1926
1926
  <div class="ttc" id="anamespaceSVF_html_ad11fe2412b2182365a662ff0e4639b48"><div class="ttname"><a href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SVF::SymID</a></div><div class="ttdeci">unsigned SymID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00058">SVFType.h:58</a></div></div>
1927
1927
  <div class="ttc" id="aclassllvm_1_1generic__bridge__gep__type__iterator_html"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html">llvm::generic_bridge_gep_type_iterator</a></div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00017">GEPTypeBridgeIterator.h:17</a></div></div>
1928
1928
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_aaffd94b311238f183031a525376c55a2"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">SVF::ObjTypeInfo::getType</a></div><div class="ttdeci">const SVFType * getType() const</div><div class="ttdoc">Get LLVM type.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00527">SymbolTableInfo.h:527</a></div></div>
@@ -117,8 +117,8 @@ $(function() {
117
117
  <li>selectClient()
118
118
  : <a class="el" href="classSVF_1_1DDAPass.html#aa33694e0b5f30c451c229e92877e4842">SVF::DDAPass</a>
119
119
  </li>
120
- <li>selectLargestType()
121
- : <a class="el" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">SVF::ObjTypeInference</a>
120
+ <li>selectLargestSizedType()
121
+ : <a class="el" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">SVF::ObjTypeInference</a>
122
122
  </li>
123
123
  <li>SelectStmt()
124
124
  : <a class="el" href="classSVF_1_1SelectStmt.html#a995baa18cc36d0671be3e98761f9879a">SVF::SelectStmt</a>
@@ -182,8 +182,8 @@ $(function() {
182
182
  <li>selectedValidationScenarios
183
183
  : <a class="el" href="classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419">SVF::RaceResultValidator</a>
184
184
  </li>
185
- <li>selectLargestType()
186
- : <a class="el" href="classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1">SVF::ObjTypeInference</a>
185
+ <li>selectLargestSizedType()
186
+ : <a class="el" href="classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319">SVF::ObjTypeInference</a>
187
187
  </li>
188
188
  <li>SelectStmt()
189
189
  : <a class="el" href="classSVF_1_1SelectStmt.html#a995baa18cc36d0671be3e98761f9879a">SVF::SelectStmt</a>
@@ -53,7 +53,7 @@ var searchData=
53
53
  ['selectclient_5237',['selectClient',['../classSVF_1_1DDAPass.html#aa33694e0b5f30c451c229e92877e4842',1,'SVF::DDAPass']]],
54
54
  ['selectedvalidationscenarios_5238',['selectedValidationScenarios',['../classSVF_1_1RaceResultValidator.html#a1294cb90b073ba25a8ffc06180c09419',1,'SVF::RaceResultValidator']]],
55
55
  ['selectinst_5239',['SelectInst',['../namespaceSVF.html#ab7fac9d4a4839be445c89777e21bc307',1,'SVF']]],
56
- ['selectlargesttype_5240',['selectLargestType',['../classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1',1,'SVF::ObjTypeInference']]],
56
+ ['selectlargestsizedtype_5240',['selectLargestSizedType',['../classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319',1,'SVF::ObjTypeInference']]],
57
57
  ['selectstmt_5241',['SelectStmt',['../classSVF_1_1SelectStmt.html',1,'SVF::SelectStmt'],['../classSVF_1_1SelectStmt.html#a995baa18cc36d0671be3e98761f9879a',1,'SVF::SelectStmt::SelectStmt()'],['../classSVF_1_1SelectStmt.html#ad51a542e72f165abbba9d3242db1bea6',1,'SVF::SelectStmt::SelectStmt(const SelectStmt &amp;)'],['../classSVF_1_1SelectStmt.html#af3ffdfb0b260754b64250f980c065198',1,'SVF::SelectStmt::SelectStmt(SVFVar *s, const OPVars &amp;opnds, const SVFVar *cond)']]],
58
58
  ['selfcycle_5242',['SelfCycle',['../classSVF_1_1Options.html#a9ef14f68939b7678ddff83d544e024cc',1,'SVF::Options']]],
59
59
  ['seq_5243',['SEQ',['../classSVF_1_1NodeIDAllocator.html#a8cf553cd07768aad3f3b91bf3d7c6228a85142db6ed24203f054117f3a5110e2f',1,'SVF::NodeIDAllocator']]],
@@ -15,7 +15,7 @@ var searchData=
15
15
  ['sccrepnode_10260',['sccRepNode',['../classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f',1,'SVF::ConstraintGraph::sccRepNode()'],['../classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30',1,'SVF::Andersen::sccRepNode()'],['../classSVF_1_1WPAFSSolver.html#a0bbaffd1673cc3850217afad0ca56e42',1,'SVF::WPAFSSolver::sccRepNode()'],['../classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb',1,'SVF::WPASolver::sccRepNode()']]],
16
16
  ['sccsubnodes_10261',['sccSubNodes',['../classSVF_1_1ConstraintGraph.html#aed605b010e313f4b11e95b83fe50e3b3',1,'SVF::ConstraintGraph::sccSubNodes()'],['../classSVF_1_1Andersen.html#acd2feff818906db49a1bb2d94c33db5f',1,'SVF::Andersen::sccSubNodes()']]],
17
17
  ['selectclient_10262',['selectClient',['../classSVF_1_1DDAPass.html#aa33694e0b5f30c451c229e92877e4842',1,'SVF::DDAPass']]],
18
- ['selectlargesttype_10263',['selectLargestType',['../classSVF_1_1ObjTypeInference.html#aff3be73b7348c0e4dece6a9b5b1bd1f1',1,'SVF::ObjTypeInference']]],
18
+ ['selectlargestsizedtype_10263',['selectLargestSizedType',['../classSVF_1_1ObjTypeInference.html#a205fa59a7250270b216f47df78ef2319',1,'SVF::ObjTypeInference']]],
19
19
  ['selectstmt_10264',['SelectStmt',['../classSVF_1_1SelectStmt.html#a995baa18cc36d0671be3e98761f9879a',1,'SVF::SelectStmt::SelectStmt()'],['../classSVF_1_1SelectStmt.html#ad51a542e72f165abbba9d3242db1bea6',1,'SVF::SelectStmt::SelectStmt(const SelectStmt &amp;)'],['../classSVF_1_1SelectStmt.html#af3ffdfb0b260754b64250f980c065198',1,'SVF::SelectStmt::SelectStmt(SVFVar *s, const OPVars &amp;opnds, const SVFVar *cond)']]],
20
20
  ['set_10265',['set',['../classSVF_1_1CondStdSet.html#ae11deddad534be115d29daad08c90599',1,'SVF::CondStdSet::set()'],['../classSVF_1_1CondPointsToSet.html#aadf2576b55bbdb82d7affc8466c09861',1,'SVF::CondPointsToSet::set()'],['../classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa',1,'SVF::PointsTo::set()'],['../classSVF_1_1CoreBitVector.html#a553e3e51bffe1aab04adc047e0fd3f24',1,'SVF::CoreBitVector::set()'],['../structSVF_1_1SparseBitVectorElement.html#a094acafea02f3c117445267e75c9a629',1,'SVF::SparseBitVectorElement::set()'],['../classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832',1,'SVF::SparseBitVector::set()'],['../WPA_2CMakeLists_8txt.html#a5b660868031b6dee85d01fea51ef09a5',1,'set():&#160;CMakeLists.txt']]],
21
21
  ['set_5fminus_5finfinite_10266',['set_minus_infinite',['../classSVF_1_1BoundedZ3Expr.html#ae76bf19d580cbc12a40f7c1823165178',1,'SVF::BoundedZ3Expr']]],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.862",
3
+ "version": "1.0.863",
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": {
@@ -99,7 +99,7 @@ private:
99
99
 
100
100
  public:
101
101
  /// Select the largest (conservative) type from all types
102
- const Type *selectLargestType(Set<const Type *> &objTys);
102
+ const Type *selectLargestSizedType(Set<const Type *> &objTys);
103
103
 
104
104
  u32_t objTyToNumFields(const Type *objTy);
105
105
 
@@ -140,7 +140,7 @@ const Type *ObjTypeInference::inferObjType(const Value *startValue)
140
140
  {
141
141
  types.insert(fwInferObjType(source));
142
142
  }
143
- const Type *largestTy = selectLargestType(types);
143
+ const Type *largestTy = selectLargestSizedType(types);
144
144
  ABORT_IFNOT(largestTy, "return type cannot be null");
145
145
  return largestTy;
146
146
  }
@@ -181,7 +181,7 @@ const Type *ObjTypeInference::fwInferObjType(const Value *startValue)
181
181
  auto vIt = _valueToInferSites.find(pUser);
182
182
  if (canUpdate)
183
183
  {
184
- if (vIt != _valueToInferSites.end() && !vIt->second.empty())
184
+ if (vIt != _valueToInferSites.end())
185
185
  {
186
186
  infersites.insert(vIt->second.begin(), vIt->second.end());
187
187
  }
@@ -352,12 +352,10 @@ const Type *ObjTypeInference::fwInferObjType(const Value *startValue)
352
352
  if (canUpdate)
353
353
  {
354
354
  Set<const Type *> types;
355
- for (const auto &infersite: infersites)
356
- {
357
- types.insert(infersiteToType(infersite));
358
- }
359
- _valueToInferSites[curValue] = infersites;
360
- _valueToType[curValue] = selectLargestType(types);
355
+ std::transform(infersites.begin(), infersites.end(), std::inserter(types, types.begin()),
356
+ infersiteToType);
357
+ _valueToInferSites[curValue] = SVFUtil::move(infersites);
358
+ _valueToType[curValue] = selectLargestSizedType(types);
361
359
  }
362
360
  }
363
361
  const Type *type = _valueToType[startValue];
@@ -408,7 +406,7 @@ Set<const Value *> ObjTypeInference::bwfindAllocations(const Value *startValue)
408
406
  auto vIt = _valueToAllocs.find(pUser);
409
407
  if (canUpdate)
410
408
  {
411
- if (vIt != _valueToAllocs.end() && !vIt->second.empty())
409
+ if (vIt != _valueToAllocs.end())
412
410
  {
413
411
  sources.insert(vIt->second.begin(), vIt->second.end());
414
412
  }
@@ -484,7 +482,7 @@ Set<const Value *> ObjTypeInference::bwfindAllocations(const Value *startValue)
484
482
  }
485
483
  if (canUpdate)
486
484
  {
487
- _valueToAllocs[curValue] = sources;
485
+ _valueToAllocs[curValue] = SVFUtil::move(sources);
488
486
  }
489
487
  }
490
488
  Set<const Value *> srcs = _valueToAllocs[startValue];
@@ -554,17 +552,17 @@ u32_t ObjTypeInference::getArgPosInCall(const CallBase *callBase, const Value *a
554
552
  }
555
553
 
556
554
 
557
- const Type *ObjTypeInference::selectLargestType(Set<const Type *> &objTys)
555
+ const Type *ObjTypeInference::selectLargestSizedType(Set<const Type *> &objTys)
558
556
  {
559
557
  if (objTys.empty()) return nullptr;
560
558
  // map type size to types from with key in descending order
561
- OrderedMap<u32_t, Set<const Type *>, std::greater<int>> typeSzToTypes;
559
+ OrderedMap<u32_t, OrderedSet<const Type *>, std::greater<int>> typeSzToTypes;
562
560
  for (const Type *ty: objTys)
563
561
  {
564
562
  typeSzToTypes[objTyToNumFields(ty)].insert(ty);
565
563
  }
566
564
  assert(!typeSzToTypes.empty() && "typeSzToTypes cannot be empty");
567
- Set<const Type *> largestTypes;
565
+ OrderedSet<const Type *> largestTypes;
568
566
  std::tie(std::ignore, largestTypes) = *typeSzToTypes.begin();
569
567
  assert(!largestTypes.empty() && "largest element cannot be empty");
570
568
  return *largestTypes.begin();