svf-tools 1.0.427 → 1.0.428

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 (30) hide show
  1. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +26 -20
  2. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +29 -25
  3. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +5 -4
  4. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
  5. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +8 -6
  6. package/SVF-doxygen/html/html/SaberAnnotator_8h.html +1 -1
  7. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +6 -7
  8. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +26 -25
  9. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +144 -105
  10. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +11 -8
  11. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator-members.html +3 -3
  12. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +27 -23
  13. package/SVF-doxygen/html/html/functions_a.html +3 -3
  14. package/SVF-doxygen/html/html/functions_e.html +2 -2
  15. package/SVF-doxygen/html/html/functions_func.html +3 -3
  16. package/SVF-doxygen/html/html/functions_func_e.html +2 -2
  17. package/SVF-doxygen/html/html/functions_func_g.html +8 -7
  18. package/SVF-doxygen/html/html/functions_g.html +15 -14
  19. package/SVF-doxygen/html/html/search/all_1.js +3 -3
  20. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  21. package/SVF-doxygen/html/html/search/all_7.js +1 -1
  22. package/SVF-doxygen/html/html/search/functions_0.js +3 -3
  23. package/SVF-doxygen/html/html/search/functions_4.js +2 -2
  24. package/SVF-doxygen/html/html/search/functions_6.js +1 -1
  25. package/include/SABER/PathCondAllocator.h +8 -2
  26. package/include/SABER/SaberAnnotator.h +4 -4
  27. package/lib/SABER/PathCondAllocator.cpp +31 -26
  28. package/lib/SABER/ProgSlice.cpp +7 -4
  29. package/lib/SABER/SaberAnnotator.cpp +8 -8
  30. package/package.json +1 -1
@@ -1157,7 +1157,8 @@ $(function() {
1157
1157
  , <a class="el" href="classSVF_1_1IRGraph.html#a5a34f23fee4f84e74908041efebd6867">SVF::IRGraph</a>
1158
1158
  </li>
1159
1159
  <li>getICFG()
1160
- : <a class="el" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">SVF::PointerAnalysis</a>
1160
+ : <a class="el" href="classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a">SVF::PathCondAllocator</a>
1161
+ , <a class="el" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">SVF::PointerAnalysis</a>
1161
1162
  , <a class="el" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR</a>
1162
1163
  </li>
1163
1164
  <li>getICFGEdge()
@@ -1385,7 +1386,7 @@ $(function() {
1385
1386
  : <a class="el" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">SVF::DDAVFSolver&lt; CVar, CPtSet, DPIm &gt;</a>
1386
1387
  </li>
1387
1388
  <li>getLoop()
1388
- : <a class="el" href="classSVF_1_1TCT.html#a71249dc399055790d86dcba6d9dd3021">SVF::TCT</a>
1389
+ : <a class="el" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">SVF::TCT</a>
1389
1390
  </li>
1390
1391
  <li>getLoopInfo()
1391
1392
  : <a class="el" href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f">SVF::PathCondAllocator</a>
@@ -1446,7 +1447,7 @@ $(function() {
1446
1447
  </li>
1447
1448
  <li>getModRefInfo()
1448
1449
  : <a class="el" href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">SVF::MRGenerator</a>
1449
- , <a class="el" href="classSVF_1_1WPAPass.html#a6d86f4ef6ad2f14c2dbf57b759e2950f">SVF::WPAPass</a>
1450
+ , <a class="el" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">SVF::WPAPass</a>
1450
1451
  </li>
1451
1452
  <li>getModSideEffectOfCallSite()
1452
1453
  : <a class="el" href="classSVF_1_1MRGenerator.html#a1535832f5b1ae3178fea950bf71fdd99">SVF::MRGenerator</a>
@@ -1520,7 +1521,7 @@ $(function() {
1520
1521
  : <a class="el" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">SVF::SVFG</a>
1521
1522
  </li>
1522
1523
  <li>getMUSet()
1523
- : <a class="el" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb">SVF::MemSSA</a>
1524
+ : <a class="el" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">SVF::MemSSA</a>
1524
1525
  </li>
1525
1526
  <li>getMutDFPTDataTy()
1526
1527
  : <a class="el" href="classSVF_1_1BVDataPTAImpl.html#acbb979edee9427efa2a7c0dbd881c483">SVF::BVDataPTAImpl</a>
@@ -1639,7 +1640,7 @@ $(function() {
1639
1640
  </li>
1640
1641
  <li>getObject()
1641
1642
  : <a class="el" href="classSVF_1_1DummyVersionPropSVFGNode.html#ac10a4b9c2ee536cfcb74120d86c0619f">SVF::DummyVersionPropSVFGNode</a>
1642
- , <a class="el" href="classSVF_1_1SVFIR.html#a25b86c16d11b4d50ccc28ead525687ae">SVF::SVFIR</a>
1643
+ , <a class="el" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">SVF::SVFIR</a>
1643
1644
  </li>
1644
1645
  <li>getObjectNode()
1645
1646
  : <a class="el" href="classSVF_1_1IRGraph.html#aba13ca47865614e45321c1ae53e640c1">SVF::IRGraph</a>
@@ -1915,11 +1916,11 @@ $(function() {
1915
1916
  , <a class="el" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b">SVF::MutableDFPTData&lt; Key, KeySet, Data, DataSet &gt;</a>
1916
1917
  , <a class="el" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9">SVF::MutableDiffPTData&lt; Key, KeySet, Data, DataSet &gt;</a>
1917
1918
  , <a class="el" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">SVF::MutablePTData&lt; Key, KeySet, Data, DataSet &gt;</a>
1918
- , <a class="el" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066">SVF::MutableVersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt;</a>
1919
+ , <a class="el" href="classSVF_1_1MutableVersionedPTData.html#afcc34f6cedca6a8f151b1a7251832818">SVF::MutableVersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt;</a>
1919
1920
  , <a class="el" href="classSVF_1_1PersistentDFPTData.html#a5f6a01d0bb40a718bc14f2cc1bb98a13">SVF::PersistentDFPTData&lt; Key, KeySet, Data, DataSet &gt;</a>
1920
1921
  , <a class="el" href="classSVF_1_1PersistentDiffPTData.html#a9982ecf42416756a0729a28e8713cfed">SVF::PersistentDiffPTData&lt; Key, KeySet, Data, DataSet &gt;</a>
1921
1922
  , <a class="el" href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99">SVF::PersistentPTData&lt; Key, KeySet, Data, DataSet &gt;</a>
1922
- , <a class="el" href="classSVF_1_1PersistentVersionedPTData.html#a9b81d20e54d08e36edbff43549b1e820">SVF::PersistentVersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt;</a>
1923
+ , <a class="el" href="classSVF_1_1PersistentVersionedPTData.html#afe80884fa8227e50f28631e20aa6fdf6">SVF::PersistentVersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt;</a>
1923
1924
  , <a class="el" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">SVF::PointerAnalysis</a>
1924
1925
  , <a class="el" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">SVF::PTData&lt; Key, KeySet, Data, DataSet &gt;</a>
1925
1926
  , <a class="el" href="classSVF_1_1Steensgaard.html#adbcb9af660ab9bb0202bd32342280486">SVF::Steensgaard</a>
@@ -1932,7 +1933,7 @@ $(function() {
1932
1933
  , <a class="el" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b">SVF::MutablePTData&lt; Key, KeySet, Data, DataSet &gt;</a>
1933
1934
  </li>
1934
1935
  <li>getPtsSubSetMap()
1935
- : <a class="el" href="classSVF_1_1IntraDisjointMRG.html#ad0640ef6e02d9a90964ca495c0fd8f53">SVF::IntraDisjointMRG</a>
1936
+ : <a class="el" href="classSVF_1_1IntraDisjointMRG.html#ae3c857c056f4e6e863843bafba7fdea1">SVF::IntraDisjointMRG</a>
1936
1937
  </li>
1937
1938
  <li>getRawCTirMetadata()
1938
1939
  : <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a2c47ba37bd250be455a21d1f0049d556">SVF::FlowSensitiveTBHC</a>
@@ -1993,7 +1994,7 @@ $(function() {
1993
1994
  , <a class="el" href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">SVF::ICFGBuilder</a>
1994
1995
  </li>
1995
1996
  <li>getRetParmAtJoinedSite()
1996
- : <a class="el" href="classSVF_1_1ThreadAPI.html#a5439ef32c909b02c83cbd30eb0a0fe12">SVF::ThreadAPI</a>
1997
+ : <a class="el" href="classSVF_1_1ThreadAPI.html#ad1c595f7b15a2d3079b9e9200c84f7d7">SVF::ThreadAPI</a>
1997
1998
  </li>
1998
1999
  <li>getRetPE()
1999
2000
  : <a class="el" href="classSVF_1_1RetCFGEdge.html#af84bf360ca641711a3c625de86feb603">SVF::RetCFGEdge</a>
@@ -2020,7 +2021,7 @@ $(function() {
2020
2021
  </li>
2021
2022
  <li>getRevPts()
2022
2023
  : <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a58113943e4e7144d94d26991dcc8bcc7">SVF::BVDataPTAImpl</a>
2023
- , <a class="el" href="classSVF_1_1CondPTAImpl.html#a0da0602c5b260afaba4bef1abcbcf7b3">SVF::CondPTAImpl&lt; Cond &gt;</a>
2024
+ , <a class="el" href="classSVF_1_1CondPTAImpl.html#aa266eef30817c557882de19aefe135a9">SVF::CondPTAImpl&lt; Cond &gt;</a>
2024
2025
  , <a class="el" href="classSVF_1_1MutableDFPTData.html#a2f98940bd8266ad37a975c6d30d948b4">SVF::MutableDFPTData&lt; Key, KeySet, Data, DataSet &gt;</a>
2025
2026
  , <a class="el" href="classSVF_1_1MutableDiffPTData.html#ad9bd6762fc6525afaed4a6c6da63688d">SVF::MutableDiffPTData&lt; Key, KeySet, Data, DataSet &gt;</a>
2026
2027
  , <a class="el" href="classSVF_1_1MutablePTData.html#a36aa05b8f5c308035315d6df7036c096">SVF::MutablePTData&lt; Key, KeySet, Data, DataSet &gt;</a>
@@ -2223,10 +2224,10 @@ $(function() {
2223
2224
  : <a class="el" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">SVF::SVFIR</a>
2224
2225
  </li>
2225
2226
  <li>getTaskDataAtHareParForSite()
2226
- : <a class="el" href="classSVF_1_1ThreadAPI.html#aee8fac6281a95d8a519add100e8887d1">SVF::ThreadAPI</a>
2227
+ : <a class="el" href="classSVF_1_1ThreadAPI.html#a58cf56e35be873a5a26c5eb0d9b5c9b3">SVF::ThreadAPI</a>
2227
2228
  </li>
2228
2229
  <li>getTaskFuncAtHareParForSite()
2229
- : <a class="el" href="classSVF_1_1ThreadAPI.html#a282d6aeab91135af4cab8195d67badf6">SVF::ThreadAPI</a>
2230
+ : <a class="el" href="classSVF_1_1ThreadAPI.html#afeedd6e518af76fa9e7142af8899b2f5">SVF::ThreadAPI</a>
2230
2231
  </li>
2231
2232
  <li>getTCG()
2232
2233
  : <a class="el" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis</a>
@@ -2240,7 +2241,7 @@ $(function() {
2240
2241
  : <a class="el" href="classSVF_1_1TCT.html#a6ac3c91742a6e9088c4e9cf1b7d2f42e">SVF::TCT</a>
2241
2242
  </li>
2242
2243
  <li>getTCTNode()
2243
- : <a class="el" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">SVF::TCT</a>
2244
+ : <a class="el" href="classSVF_1_1TCT.html#aac9d98a33fbaa6defa3f847d0bbe76d6">SVF::TCT</a>
2244
2245
  </li>
2245
2246
  <li>getTCTNodeNum()
2246
2247
  : <a class="el" href="classSVF_1_1TCT.html#af03bfeae7e09a9f62d96ba59632e588f">SVF::TCT</a>
@@ -2434,7 +2435,7 @@ $(function() {
2434
2435
  : <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#a01a199e9fdb5759c7f78ee344dbc413c">SVF::VersionedFlowSensitive</a>
2435
2436
  </li>
2436
2437
  <li>global_begin()
2437
- : <a class="el" href="classSVF_1_1SVFModule.html#af81c6deed3978562f83f120119c6aad2">SVF::SVFModule</a>
2438
+ : <a class="el" href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">SVF::SVFModule</a>
2438
2439
  </li>
2439
2440
  <li>global_end()
2440
2441
  : <a class="el" href="classSVF_1_1SVFModule.html#afa9068e662918f6649d5ca25340a3ae2">SVF::SVFModule</a>
@@ -395,13 +395,13 @@ var searchData=
395
395
  ['anno_5fmhp',['ANNO_MHP',['../classSVF_1_1MTAAnnotator.html#a4e10dbbb742125ebcbdc079ad647b87b',1,'SVF::MTAAnnotator']]],
396
396
  ['annoflag',['AnnoFlag',['../classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd',1,'SVF::Options']]],
397
397
  ['annotatedrcheck',['annotateDRCheck',['../classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f',1,'SVF::MTAAnnotator']]],
398
- ['annotatefeasiblebranch',['annotateFeasibleBranch',['../classSVF_1_1SaberAnnotator.html#ad7f1d6220243793e0eb86689ff8fb35f',1,'SVF::SaberAnnotator']]],
399
- ['annotateinfeasiblebranch',['annotateInfeasibleBranch',['../classSVF_1_1SaberAnnotator.html#acc480b98ffa75b5c30829611bc451cc8',1,'SVF::SaberAnnotator']]],
398
+ ['annotatefeasiblebranch',['annotateFeasibleBranch',['../classSVF_1_1SaberAnnotator.html#a60b66e1cb775c175c88f514e202c7611',1,'SVF::SaberAnnotator']]],
399
+ ['annotateinfeasiblebranch',['annotateInfeasibleBranch',['../classSVF_1_1SaberAnnotator.html#a7982caf8a058f805ae6e777ce2366246',1,'SVF::SaberAnnotator']]],
400
400
  ['annotatepaths',['annotatePaths',['../classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab',1,'SVF::ProgSlice']]],
401
401
  ['annotatesinks',['annotateSinks',['../classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf',1,'SVF::SaberAnnotator']]],
402
402
  ['annotateslice',['annotateSlice',['../classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd',1,'SVF::SrcSnkDDA']]],
403
403
  ['annotatesource',['annotateSource',['../classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13',1,'SVF::SaberAnnotator']]],
404
- ['annotateswitch',['annotateSwitch',['../classSVF_1_1SaberAnnotator.html#acaabbe6e6a8ad6e8068fcef6d8caef60',1,'SVF::SaberAnnotator']]],
404
+ ['annotateswitch',['annotateSwitch',['../classSVF_1_1SaberAnnotator.html#aebed471b55aa459a007d6a2cf668d886',1,'SVF::SaberAnnotator']]],
405
405
  ['annotationtime',['AnnotationTime',['../classSVF_1_1MTAStat.html#a51e1ba35f81d89e210a937942f516839',1,'SVF::MTAStat']]],
406
406
  ['annotator',['Annotator',['../classSVF_1_1Annotator.html',1,'SVF::Annotator'],['../classSVF_1_1Annotator.html#aa72e6952df50b5b36f0e0fed4024055f',1,'SVF::Annotator::Annotator()']]],
407
407
  ['annotator_2eh',['Annotator.h',['../Annotator_8h.html',1,'']]],
@@ -118,8 +118,8 @@ var searchData=
118
118
  ['evaluate',['evaluate',['../classSVF_1_1NodeIDAllocator_1_1Clusterer.html#acbbc5c04c79846fe1cc46a3bd5a65aba',1,'SVF::NodeIDAllocator::Clusterer']]],
119
119
  ['evaluatebranchcond',['evaluateBranchCond',['../classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe',1,'SVF::PathCondAllocator']]],
120
120
  ['evaluateloopexitbranch',['evaluateLoopExitBranch',['../classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d',1,'SVF::PathCondAllocator']]],
121
- ['evaluateprogexit',['evaluateProgExit',['../classSVF_1_1PathCondAllocator.html#a9dbca0e012336e20064693f508bc54b8',1,'SVF::PathCondAllocator']]],
122
- ['evaluatetestnulllikeexpr',['evaluateTestNullLikeExpr',['../classSVF_1_1PathCondAllocator.html#ab31b523d760d634811ca4d1de7fc4eb2',1,'SVF::PathCondAllocator']]],
121
+ ['evaluateprogexit',['evaluateProgExit',['../classSVF_1_1PathCondAllocator.html#a79d6bbd55a134c856f3e80a898af23ee',1,'SVF::PathCondAllocator']]],
122
+ ['evaluatetestnulllikeexpr',['evaluateTestNullLikeExpr',['../classSVF_1_1PathCondAllocator.html#af595a4b93bd350f489bfe8635d86cfcc',1,'SVF::PathCondAllocator']]],
123
123
  ['exactcondelem',['exactCondElem',['../classSVF_1_1PathCondAllocator.html#a61095843f86d1c5c14750a635fb3aacb',1,'SVF::PathCondAllocator']]],
124
124
  ['exc_5fprob',['EXC_PROB',['../cuddInt_8c.html#a2c0be8d31945920a5ffb6dae9115cbb8',1,'cuddInt.c']]],
125
125
  ['executedbythesamethread',['executedByTheSameThread',['../classSVF_1_1MHP.html#aab80f1bc5c359a7d3b03f249bafa1d40',1,'SVF::MHP']]],
@@ -350,7 +350,7 @@ var searchData=
350
350
  ['getgraphedge',['getGraphEdge',['../classSVF_1_1PTACallGraph.html#a2634a24621ab93fae7ec1cf94a8cba0b',1,'SVF::PTACallGraph::getGraphEdge()'],['../classSVF_1_1TCT.html#a7b40580939dc63f501a32571806c07bc',1,'SVF::TCT::getGraphEdge()']]],
351
351
  ['getgraphname',['getGraphName',['../classSVF_1_1IRGraph.html#a5a34f23fee4f84e74908041efebd6867',1,'SVF::IRGraph::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html#a942e068d1debc7f7dd7a6232adc2130f',1,'llvm::DOTGraphTraits&lt; CHGraph * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9ed4562e3c1223c20e76e1372ba8b30d',1,'llvm::DOTGraphTraits&lt; ConstraintGraph * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a46226ebac48103764df6427119a322ce',1,'llvm::DOTGraphTraits&lt; ICFG * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html#a6cbd0e71b5ea955de8a548bad9256160',1,'llvm::DOTGraphTraits&lt; IRGraph * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html#af55f35dde97c37966d9d3396662e00aa',1,'llvm::DOTGraphTraits&lt; OfflineConsG * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html#a698264fcfb5bdb99a28618d0701860d6',1,'llvm::DOTGraphTraits&lt; PTACallGraph * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html#a1275496006929be6375a0d71ed86c79b',1,'llvm::DOTGraphTraits&lt; SVFG * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#aaedec44d41a6e36c9e5db804e4a005dd',1,'llvm::DOTGraphTraits&lt; VFG * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html#ad06b27680684ff1a7f1d0608f67cf89a',1,'llvm::DOTGraphTraits&lt; TCT * &gt;::getGraphName()']]],
352
352
  ['getheapallocholdingargposition',['getHeapAllocHoldingArgPosition',['../namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const SVFFunction *fun)'],['../namespaceSVF_1_1SVFUtil.html#a298b6366145ed871faf3d01420ae5d20',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const CallSite cs)'],['../namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const Instruction *inst)']]],
353
- ['geticfg',['getICFG',['../classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e',1,'SVF::PointerAnalysis::getICFG()'],['../classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da',1,'SVF::SVFIR::getICFG()']]],
353
+ ['geticfg',['getICFG',['../classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e',1,'SVF::PointerAnalysis::getICFG()'],['../classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da',1,'SVF::SVFIR::getICFG()'],['../classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a',1,'SVF::PathCondAllocator::getICFG()']]],
354
354
  ['geticfgedge',['getICFGEdge',['../classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475',1,'SVF::ICFG']]],
355
355
  ['geticfgkind',['getICFGKind',['../classSVF_1_1ICFGPrinter.html#a2c022308f9c7ae3bf33d9482fcb51e03',1,'SVF::ICFGPrinter']]],
356
356
  ['geticfgnode',['getICFGNode',['../classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b',1,'SVF::ICFG::getICFGNode(NodeID id) const'],['../classSVF_1_1ICFG.html#a489d4265c87304402bb3a20654ab4b99',1,'SVF::ICFG::getICFGNode(const Instruction *inst)'],['../classSVF_1_1VFGNode.html#a0675465e11d1d42ee7e2b7ab3c5de829',1,'SVF::VFGNode::getICFGNode()'],['../classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b',1,'SVF::SVFStmt::getICFGNode()']]],
@@ -300,13 +300,13 @@ var searchData=
300
300
  ['andersenstat',['AndersenStat',['../classSVF_1_1AndersenStat.html#a257d814ef3983c4f513d37161d376719',1,'SVF::AndersenStat']]],
301
301
  ['andersenwavediff',['AndersenWaveDiff',['../classSVF_1_1AndersenWaveDiff.html#a7478d23055a5db981d7a9515cffc99da',1,'SVF::AndersenWaveDiff']]],
302
302
  ['annotatedrcheck',['annotateDRCheck',['../classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f',1,'SVF::MTAAnnotator']]],
303
- ['annotatefeasiblebranch',['annotateFeasibleBranch',['../classSVF_1_1SaberAnnotator.html#ad7f1d6220243793e0eb86689ff8fb35f',1,'SVF::SaberAnnotator']]],
304
- ['annotateinfeasiblebranch',['annotateInfeasibleBranch',['../classSVF_1_1SaberAnnotator.html#acc480b98ffa75b5c30829611bc451cc8',1,'SVF::SaberAnnotator']]],
303
+ ['annotatefeasiblebranch',['annotateFeasibleBranch',['../classSVF_1_1SaberAnnotator.html#a60b66e1cb775c175c88f514e202c7611',1,'SVF::SaberAnnotator']]],
304
+ ['annotateinfeasiblebranch',['annotateInfeasibleBranch',['../classSVF_1_1SaberAnnotator.html#a7982caf8a058f805ae6e777ce2366246',1,'SVF::SaberAnnotator']]],
305
305
  ['annotatepaths',['annotatePaths',['../classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab',1,'SVF::ProgSlice']]],
306
306
  ['annotatesinks',['annotateSinks',['../classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf',1,'SVF::SaberAnnotator']]],
307
307
  ['annotateslice',['annotateSlice',['../classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd',1,'SVF::SrcSnkDDA']]],
308
308
  ['annotatesource',['annotateSource',['../classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13',1,'SVF::SaberAnnotator']]],
309
- ['annotateswitch',['annotateSwitch',['../classSVF_1_1SaberAnnotator.html#acaabbe6e6a8ad6e8068fcef6d8caef60',1,'SVF::SaberAnnotator']]],
309
+ ['annotateswitch',['annotateSwitch',['../classSVF_1_1SaberAnnotator.html#aebed471b55aa459a007d6a2cf668d886',1,'SVF::SaberAnnotator']]],
310
310
  ['annotator',['Annotator',['../classSVF_1_1Annotator.html#aa72e6952df50b5b36f0e0fed4024055f',1,'SVF::Annotator']]],
311
311
  ['answerqueries',['answerQueries',['../classSVF_1_1DDAClient.html#a3b202f9a70b6e23c06a15556d23d245e',1,'SVF::DDAClient']]],
312
312
  ['arg_5fbegin',['arg_begin',['../classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6',1,'SVF::CallSite']]],
@@ -42,8 +42,8 @@ var searchData=
42
42
  ['evaluate',['evaluate',['../classSVF_1_1NodeIDAllocator_1_1Clusterer.html#acbbc5c04c79846fe1cc46a3bd5a65aba',1,'SVF::NodeIDAllocator::Clusterer']]],
43
43
  ['evaluatebranchcond',['evaluateBranchCond',['../classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe',1,'SVF::PathCondAllocator']]],
44
44
  ['evaluateloopexitbranch',['evaluateLoopExitBranch',['../classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d',1,'SVF::PathCondAllocator']]],
45
- ['evaluateprogexit',['evaluateProgExit',['../classSVF_1_1PathCondAllocator.html#a9dbca0e012336e20064693f508bc54b8',1,'SVF::PathCondAllocator']]],
46
- ['evaluatetestnulllikeexpr',['evaluateTestNullLikeExpr',['../classSVF_1_1PathCondAllocator.html#ab31b523d760d634811ca4d1de7fc4eb2',1,'SVF::PathCondAllocator']]],
45
+ ['evaluateprogexit',['evaluateProgExit',['../classSVF_1_1PathCondAllocator.html#a79d6bbd55a134c856f3e80a898af23ee',1,'SVF::PathCondAllocator']]],
46
+ ['evaluatetestnulllikeexpr',['evaluateTestNullLikeExpr',['../classSVF_1_1PathCondAllocator.html#af595a4b93bd350f489bfe8635d86cfcc',1,'SVF::PathCondAllocator']]],
47
47
  ['exactcondelem',['exactCondElem',['../classSVF_1_1PathCondAllocator.html#a61095843f86d1c5c14750a635fb3aacb',1,'SVF::PathCondAllocator']]],
48
48
  ['executedbythesamethread',['executedByTheSameThread',['../classSVF_1_1MHP.html#aab80f1bc5c359a7d3b03f249bafa1d40',1,'SVF::MHP']]],
49
49
  ['exit',['exit',['../util_8h.html#a43b6ea6be735bb828bc062c70cadeff8',1,'util.h']]],
@@ -294,7 +294,7 @@ var searchData=
294
294
  ['getgraphedge',['getGraphEdge',['../classSVF_1_1PTACallGraph.html#a2634a24621ab93fae7ec1cf94a8cba0b',1,'SVF::PTACallGraph::getGraphEdge()'],['../classSVF_1_1TCT.html#a7b40580939dc63f501a32571806c07bc',1,'SVF::TCT::getGraphEdge()']]],
295
295
  ['getgraphname',['getGraphName',['../classSVF_1_1IRGraph.html#a5a34f23fee4f84e74908041efebd6867',1,'SVF::IRGraph::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html#a942e068d1debc7f7dd7a6232adc2130f',1,'llvm::DOTGraphTraits&lt; CHGraph * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9ed4562e3c1223c20e76e1372ba8b30d',1,'llvm::DOTGraphTraits&lt; ConstraintGraph * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a46226ebac48103764df6427119a322ce',1,'llvm::DOTGraphTraits&lt; ICFG * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html#a6cbd0e71b5ea955de8a548bad9256160',1,'llvm::DOTGraphTraits&lt; IRGraph * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html#af55f35dde97c37966d9d3396662e00aa',1,'llvm::DOTGraphTraits&lt; OfflineConsG * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html#a698264fcfb5bdb99a28618d0701860d6',1,'llvm::DOTGraphTraits&lt; PTACallGraph * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html#a1275496006929be6375a0d71ed86c79b',1,'llvm::DOTGraphTraits&lt; SVFG * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#aaedec44d41a6e36c9e5db804e4a005dd',1,'llvm::DOTGraphTraits&lt; VFG * &gt;::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html#ad06b27680684ff1a7f1d0608f67cf89a',1,'llvm::DOTGraphTraits&lt; TCT * &gt;::getGraphName()']]],
296
296
  ['getheapallocholdingargposition',['getHeapAllocHoldingArgPosition',['../namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const SVFFunction *fun)'],['../namespaceSVF_1_1SVFUtil.html#a298b6366145ed871faf3d01420ae5d20',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const CallSite cs)'],['../namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const Instruction *inst)']]],
297
- ['geticfg',['getICFG',['../classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e',1,'SVF::PointerAnalysis::getICFG()'],['../classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da',1,'SVF::SVFIR::getICFG()']]],
297
+ ['geticfg',['getICFG',['../classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e',1,'SVF::PointerAnalysis::getICFG()'],['../classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da',1,'SVF::SVFIR::getICFG()'],['../classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a',1,'SVF::PathCondAllocator::getICFG()']]],
298
298
  ['geticfgedge',['getICFGEdge',['../classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475',1,'SVF::ICFG']]],
299
299
  ['geticfgkind',['getICFGKind',['../classSVF_1_1ICFGPrinter.html#a2c022308f9c7ae3bf33d9482fcb51e03',1,'SVF::ICFGPrinter']]],
300
300
  ['geticfgnode',['getICFGNode',['../classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b',1,'SVF::ICFG::getICFGNode(NodeID id) const'],['../classSVF_1_1ICFG.html#a489d4265c87304402bb3a20654ab4b99',1,'SVF::ICFG::getICFGNode(const Instruction *inst)'],['../classSVF_1_1VFGNode.html#a0675465e11d1d42ee7e2b7ab3c5de829',1,'SVF::VFGNode::getICFGNode()'],['../classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b',1,'SVF::SVFStmt::getICFGNode()']]],
@@ -202,6 +202,10 @@ public:
202
202
  return condMgr->isEquivalentBranchCond(lhs, rhs);
203
203
  }
204
204
 
205
+ inline ICFG* getICFG() const {
206
+ return PAG::getPAG()->getICFG();
207
+ }
208
+
205
209
  private:
206
210
 
207
211
  /// Allocate path condition for every basic block
@@ -223,9 +227,9 @@ private:
223
227
  /// Evaluate loop exit branch
224
228
  Condition* evaluateLoopExitBranch(const BasicBlock * bb, const BasicBlock *succ);
225
229
  /// Return branch condition after evaluating test null like expression
226
- Condition* evaluateTestNullLikeExpr(const BranchInst* brInst, const BasicBlock *succ);
230
+ Condition* evaluateTestNullLikeExpr(const BranchStmt* branchStmt, const BasicBlock *succ);
227
231
  /// Return condition when there is a branch calls program exit
228
- Condition* evaluateProgExit(const BranchInst* brInst, const BasicBlock *succ);
232
+ Condition* evaluateProgExit(const BranchStmt* branchStmt, const BasicBlock *succ);
229
233
  /// Collect basic block contains program exit function call
230
234
  void collectBBCallingProgExit(const BasicBlock& bb);
231
235
  bool isBBCallsProgExit(const BasicBlock* bb);
@@ -269,6 +273,8 @@ private:
269
273
  }
270
274
  //@}
271
275
 
276
+
277
+
272
278
  /// Release memory
273
279
  void destroy(){
274
280
 
@@ -30,7 +30,7 @@
30
30
  #ifndef SABERANNOTATOR_H_
31
31
  #define SABERANNOTATOR_H_
32
32
 
33
- #include "Util/BasicTypes.h"
33
+ #include <MemoryModel/SVFStatements.h>
34
34
  #include "Util/Annotator.h"
35
35
 
36
36
  namespace SVF
@@ -60,10 +60,10 @@ public:
60
60
  //@{
61
61
  void annotateSource();
62
62
  void annotateSinks();
63
- void annotateFeasibleBranch(const BranchInst *brInst, u32_t succPos);
64
- void annotateInfeasibleBranch(const BranchInst *brInst, u32_t succPos);
63
+ void annotateFeasibleBranch(const BranchStmt *branchStmt, u32_t succPos);
64
+ void annotateInfeasibleBranch(const BranchStmt *branchStmt, u32_t succPos);
65
65
 
66
- void annotateSwitch(SwitchInst *brInst, u32_t succPos);
66
+ void annotateSwitch(const BranchStmt *swithStmt, u32_t succPos);
67
67
  //@}
68
68
  };
69
69
 
@@ -177,12 +177,12 @@ void PathCondAllocator::setBranchCond(const BasicBlock *bb, const BasicBlock *su
177
177
  /*!
178
178
  * Evaluate null like expression for source-sink related bug detection in SABER
179
179
  */
180
- PathCondAllocator::Condition* PathCondAllocator::evaluateTestNullLikeExpr(const BranchInst* brInst, const BasicBlock *succ)
180
+ PathCondAllocator::Condition* PathCondAllocator::evaluateTestNullLikeExpr(const BranchStmt* branchStmt, const BasicBlock *succ)
181
181
  {
182
182
 
183
- const BasicBlock* succ1 = brInst->getSuccessor(0);
183
+ const BasicBlock* succ1 = branchStmt->getSuccessor(0)->getBB();
184
184
 
185
- if(isTestNullExpr(brInst->getCondition()))
185
+ if(isTestNullExpr(branchStmt->getCondition()->getValue()))
186
186
  {
187
187
  // succ is then branch
188
188
  if(succ1 == succ)
@@ -191,7 +191,7 @@ PathCondAllocator::Condition* PathCondAllocator::evaluateTestNullLikeExpr(const
191
191
  else
192
192
  return getTrueCond();
193
193
  }
194
- if(isTestNotNullExpr(brInst->getCondition()))
194
+ if(isTestNotNullExpr(branchStmt->getCondition()->getValue()))
195
195
  {
196
196
  // succ is then branch
197
197
  if(succ1 == succ)
@@ -207,10 +207,10 @@ PathCondAllocator::Condition* PathCondAllocator::evaluateTestNullLikeExpr(const
207
207
  /*!
208
208
  * Evaluate condition for program exit (e.g., exit(0))
209
209
  */
210
- PathCondAllocator::Condition* PathCondAllocator::evaluateProgExit(const BranchInst* brInst, const BasicBlock *succ)
210
+ PathCondAllocator::Condition* PathCondAllocator::evaluateProgExit(const BranchStmt* branchStmt, const BasicBlock *succ)
211
211
  {
212
- const BasicBlock* succ1 = brInst->getSuccessor(0);
213
- const BasicBlock* succ2 = brInst->getSuccessor(1);
212
+ const BasicBlock *succ1 = branchStmt->getSuccessor(0)->getBB();
213
+ const BasicBlock* succ2 = branchStmt->getSuccessor(1)->getBB();
214
214
 
215
215
  bool branch1 = isBBCallsProgExit(succ1);
216
216
  bool branch2 = isBBCallsProgExit(succ2);
@@ -299,26 +299,31 @@ PathCondAllocator::Condition* PathCondAllocator::evaluateBranchCond(const BasicB
299
299
  return getTrueCond();
300
300
  }
301
301
 
302
- if(const BranchInst* brInst = SVFUtil::dyn_cast<BranchInst>(bb->getTerminator()))
303
- {
304
- assert(brInst->getNumSuccessors() == 2 && "not a two successors branch??");
305
- const BasicBlock* succ1 = brInst->getSuccessor(0);
306
- const BasicBlock* succ2 = brInst->getSuccessor(1);
307
- assert((succ1 == succ || succ2 == succ) && "not a successor??");
308
-
309
- Condition* evalLoopExit = evaluateLoopExitBranch(bb,succ);
310
- if(evalLoopExit)
311
- return evalLoopExit;
312
-
313
- Condition* evalProgExit = evaluateProgExit(brInst,succ);
314
- if(evalProgExit)
315
- return evalProgExit;
316
-
317
- Condition* evalTestNullLike = evaluateTestNullLikeExpr(brInst,succ);
318
- if(evalTestNullLike)
319
- return evalTestNullLike;
320
-
302
+ if (ICFGNode *icfgNode = getICFG()->getICFGNode(bb->getTerminator())) {
303
+ for (const auto &svfStmt: icfgNode->getSVFStmts()) {
304
+ if (const BranchStmt *branchStmt = SVFUtil::dyn_cast<BranchStmt>(svfStmt)) {
305
+ if(branchStmt->getNumSuccessors() == 2) {
306
+ const BasicBlock* succ1 = branchStmt->getSuccessor(0)->getBB();
307
+ const BasicBlock* succ2 = branchStmt->getSuccessor(1)->getBB();
308
+ assert((succ1 == succ || succ2 == succ) && "not a successor??");
309
+
310
+ Condition* evalLoopExit = evaluateLoopExitBranch(bb,succ);
311
+ if(evalLoopExit)
312
+ return evalLoopExit;
313
+
314
+ Condition* evalProgExit = evaluateProgExit(branchStmt,succ);
315
+ if(evalProgExit)
316
+ return evalProgExit;
317
+
318
+ Condition* evalTestNullLike = evaluateTestNullLikeExpr(branchStmt,succ);
319
+ if(evalTestNullLike)
320
+ return evalTestNullLike;
321
+ break;
322
+ }
323
+ }
324
+ }
321
325
  }
326
+
322
327
  return getBranchCond(bb, succ);
323
328
  }
324
329
 
@@ -197,10 +197,13 @@ void ProgSlice::annotatePaths()
197
197
  {
198
198
  Condition* atom = pathAllocator->getCond(*it);
199
199
  const Instruction* tinst = pathAllocator->getCondInst(atom);
200
- if(const BranchInst* br = SVFUtil::dyn_cast<BranchInst>(tinst))
201
- {
202
- annotator.annotateFeasibleBranch(br,0);
203
- annotator.annotateFeasibleBranch(br,1);
200
+ if (ICFGNode *icfgNode = pathAllocator->getICFG()->getICFGNode(tinst)) {
201
+ for (const auto &svfStmt: icfgNode->getSVFStmts()) {
202
+ if (const BranchStmt *branchStmt = SVFUtil::dyn_cast<BranchStmt>(svfStmt)) {
203
+ annotator.annotateFeasibleBranch(branchStmt,0);
204
+ annotator.annotateFeasibleBranch(branchStmt,1);
205
+ }
206
+ }
204
207
  }
205
208
  }
206
209
  }
@@ -75,7 +75,7 @@ void SaberAnnotator::annotateSinks()
75
75
  /*!
76
76
  * Annotate branch instruction and its corresponding feasible path
77
77
  */
78
- void SaberAnnotator::annotateFeasibleBranch(const BranchInst *brInst, u32_t succPos)
78
+ void SaberAnnotator::annotateFeasibleBranch(const BranchStmt *branchStmt, u32_t succPos)
79
79
  {
80
80
 
81
81
  assert((succPos == 0 || succPos == 1) && "branch instruction should only have two successors");
@@ -83,14 +83,14 @@ void SaberAnnotator::annotateFeasibleBranch(const BranchInst *brInst, u32_t succ
83
83
  std::string str;
84
84
  raw_string_ostream rawstr(str);
85
85
  rawstr << SB_FESIBLE << _curSlice->getSource()->getId();
86
- BranchInst* br = const_cast<BranchInst*>(brInst);
87
- addMDTag(br,br->getCondition(),rawstr.str());
86
+ addMDTag(const_cast<Instruction *>(branchStmt->getInst()),
87
+ const_cast<Value *>(branchStmt->getCondition()->getValue()), rawstr.str());
88
88
  }
89
89
 
90
90
  /*!
91
91
  * Annotate branch instruction and its corresponding infeasible path
92
92
  */
93
- void SaberAnnotator::annotateInfeasibleBranch(const BranchInst *brInst, u32_t succPos)
93
+ void SaberAnnotator::annotateInfeasibleBranch(const BranchStmt *branchStmt, u32_t succPos)
94
94
  {
95
95
 
96
96
  assert((succPos == 0 || succPos == 1) && "branch instruction should only have two successors");
@@ -98,17 +98,17 @@ void SaberAnnotator::annotateInfeasibleBranch(const BranchInst *brInst, u32_t su
98
98
  std::string str;
99
99
  raw_string_ostream rawstr(str);
100
100
  rawstr << SB_INFESIBLE << _curSlice->getSource()->getId();
101
- BranchInst* br = const_cast<BranchInst*>(brInst);
102
- addMDTag(br,br->getCondition(),rawstr.str());
101
+ addMDTag(const_cast<Instruction *>(branchStmt->getInst()),
102
+ const_cast<Value *>(branchStmt->getCondition()->getValue()), rawstr.str());
103
103
  }
104
104
 
105
105
 
106
106
  /*!
107
107
  * Annotate switch instruction and its corresponding feasible path
108
108
  */
109
- void SaberAnnotator::annotateSwitch(SwitchInst *switchInst, u32_t succPos)
109
+ void SaberAnnotator::annotateSwitch(const BranchStmt *swithStmt, u32_t succPos)
110
110
  {
111
- assert(succPos < switchInst->getNumSuccessors() && "successor position not correct!");
111
+ assert(succPos < swithStmt->getNumSuccessors() && "successor position not correct!");
112
112
  }
113
113
 
114
114
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.427",
3
+ "version": "1.0.428",
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": {