Static Value-Flow Analysis
Loading...
Searching...
No Matches
Options.cpp
Go to the documentation of this file.
1//===- Options.cpp -- Command line options ------------------------//
2
3#include "Util/Options.h"
4#include "Util/CommandLine.h"
6#include "Util/ExtAPI.h"
7#include "MemoryModel/PTATY.h"
8#include "MSSA/MemSSA.h"
9#include "WPA/WPAPass.h"
11
12namespace SVF
13{
15 "clock-type",
16 "how time should be measured",
18{
19 {SVFStat::ClockType::Wall, "wall", "use wall time"},
20 {SVFStat::ClockType::CPU, "cpu", "use CPU time"},
21}
22);
23
25 "marked-clocks-only",
26 "Only measure times where explicitly marked",
27 true
28);
29
31 "node-alloc-strat",
32 "Method of allocating (LLVM) values and memory objects as node IDs",
34{
35 {NodeIDAllocator::Strategy::DENSE, "dense", "allocate objects together [0-n] and values together [m-MAX], separately"},
36 {NodeIDAllocator::Strategy::REVERSE_DENSE, "reverse-dense", "like dense but flipped, objects are [m-MAX], values are [0-n]"},
37 {NodeIDAllocator::Strategy::SEQ, "seq", "allocate values and objects sequentially, intermixed (default)"},
38 {NodeIDAllocator::Strategy::DBUG, "debug", "allocate value and objects sequentially, intermixed, except GEP objects as offsets"},
39}
40);
41
43 "field-limit",
44 "Maximum number of fields for field sensitive analysis",
45 512
46);
47
49 "ptd",
50 "Overarching points-to data structure",
52{
53 {PTBackingType::Mutable, "mutable", "points-to set per pointer"},
54 {PTBackingType::Persistent, "persistent", "points-to set ID per pointer, operations hash-consed"},
55}
56);
57
59 "fs-time-limit",
60 "time limit for main phase of flow-sensitive analyses",
61 0
62);
63
65 "versioning-threads",
66 "number of threads to use in the versioning phase of versioned flow-sensitive analysis",
67 1
68);
69
71 "ander-time-limit",
72 "time limit for Andersen's analyses (ignored when -fs-time-limit set)",
73 0
74);
75
76// ContextDDA.cpp
78 "cxt-bg",
79 "Maximum step budget of context-sensitive traversing",
80 10000
81);
82
83// DDAPass.cpp
85 "max-path",
86 "Maximum path limit for DDA",
87 100000
88);
89
91 "max-cxt",
92 "Maximum context limit for DDA",
93 3
94);
95
97 "max-step",
98 "Maximum steps when traversing on SVFG to identify a memory allocation wrapper",
99 10
100);
101
103 "query",
104 "Please specify queries by inputing their pointer ids",
105 "all"
106);
107
109 "in-recur",
110 "Mark context insensitive SVFG edges due to function recursions",
111 false
112);
113
115 "in-cycle",
116 "Mark context insensitive SVFG edges due to value-flow cycles",
117 false
118);
119
121 "cpts",
122 "Dump conditional points-to set ",
123 false
124);
125
127 "print-query-pts",
128 "Dump queries' conditional points-to set ",
129 false
130);
131
133 "wpa-num",
134 "collect WPA FS number only ",
135 false
136);
137
139//static RegisterAnalysisGroup<AliasAnalysis> AA_GROUP(DDAPA);
141 "Select pointer analysis",
142{
143 {PTATY::FlowS_DDA, "dfs", "Demand-driven flow sensitive analysis"},
144 {PTATY::Cxt_DDA, "cxt", "Demand-driven context- flow- sensitive analysis"},
145}
146);
147
148// FlowDDA.cpp
150 "flow-bg",
151 "Maximum step budget of flow-sensitive traversing",
152 10000
153);
154
155
156// Offline constraint graph (OfflineConsG.cpp)
158 "dump-ocg",
159 "Dump dot graph of Offline Constraint Graph",
160 false
161);
162
163
164// Program Assignment Graph for pointer analysis (SVFIR.cpp)
166 "blk",
167 "Handle blackhole edge",
168 false
169);
170
172 "ff-eq-base",
173 "Treat base objects as their first fields",
174 false
175);
176
177
178// SVFG optimizer (SVFGOPT.cpp)
180 "ci-svfg",
181 "Reduce SVFG into a context-insensitive one",
182 false
183);
184
186 "keep-aofi",
187 "Keep formal-in and actual-out parameters",
188 false
189);
190
192 "keep-self-cycle",
193 "How to handle self cycle edges: all, context, none",
194 ""
195);
196
197
198// Sparse value-flow graph (VFG.cpp)
200 "dump-vfg",
201 "Dump dot graph of VFG",
202 false
203);
204
205
206// Base class of pointer analyses (PointerAnalysis.cpp)
208 "print-type",
209 "Print type",
210 false
211);
212
214 "print-fp",
215 "Print targets of indirect call site",
216 false
217);
218
220 "print-pts",
221 "Print points-to set of top-level pointers",
222 false
223);
224
226 "print-field",
227 "Print field object with base object id as the prefix",
228 false
229);
230
232 "print-all-pts",
233 "Print all points-to set of both top-level and address-taken variables",
234 false
235);
236
238 "stat",
239 "Statistic for Pointer analysis",
240 true
241);
242
244 "stat-limit",
245 "Iteration budget for On-the-fly statistics",
246 20
247);
248
250 "dump-pag",
251 "Dump dot graph of SVFIR",
252 false
253);
254
256 "show-ir-value",
257 "Show values of SVFIR (e.g., when generating dot graph)",
258 true
259);
260
262 "dump-icfg",
263 "Dump dot graph of ICFG",
264 false
265);
266
268 "dump-json",
269 "Dump the SVFIR in JSON format",
270 ""
271);
272
274 "read-json",
275 "Read the SVFIR in JSON format",
276 false
277);
278
280 "dump-callgraph",
281 "Dump dot graph of Call Graph",
282 false
283);
284
286 "print-pag",
287 "Print SVFIR to command line",
288 false
289);
290
292 "ind-call-limit",
293 "Indirect solved call edge limit",
294 50000
295);
296
298 "pre-field-sensitive",
299 "Use pre-computed field-sensitivity for later analysis",
300 true
301);
302
304 "alias-check",
305 "Enable alias check functions",
306 true
307);
308
310 "type-check",
311 "Enable type check functions",
312 true
313);
314
316 "enable-tcg",
317 "Enable pointer analysis to use thread call graph",
318 true
319);
320
322 "v-call-cha",
323 "connect virtual calls using cha",
324 false
325);
326
327
328// PointerAnalysisImpl.cpp
330 "inc-data",
331 "Enable incremental DFPTData for flow-sensitive analysis",
332 true
333);
334
336 "cluster-ander",
337 "Stage Andersen's with Steensgard's and cluster based on that",
338 false
339);
340
342 "cluster-fs",
343 "Cluster for FS/VFS with auxiliary Andersen's",
344 false
345);
346
348 "plain-mapping-fs",
349 "Use an explicitly (not null) plain mapping for FS",
350 false
351);
352
354 "pt-type",
355 "points-to set data structure to use in all analyses",
356 PointsTo::Type::SBV,
357{
358 {PointsTo::Type::SBV, "sbv", "sparse bit-vector"},
359 {PointsTo::Type::CBV, "cbv", "core bit-vector (dynamic bit-vector without leading and trailing 0s)"},
360 {PointsTo::Type::BV, "bv", "bit-vector (dynamic bit-vector without trailing 0s)"},
361}
362);
363
365 "cluster-method",
366 "hierarchical clustering method for objects",
368{
369 {HCLUST_METHOD_SINGLE, "single", "single linkage; minimum spanning tree algorithm"},
370 {HCLUST_METHOD_COMPLETE, "complete", "complete linkage; nearest-neighbour-chain algorithm"},
371 {HCLUST_METHOD_AVERAGE, "average", "unweighted average linkage; nearest-neighbour-chain algorithm"},
372 {HCLUST_METHOD_SVF_BEST, "best", "try all linkage criteria; choose best"},
373}
374);
375
377 // Use cluster to "gather" the options closer together, even if it sounds a little worse.
378 "cluster-regioned",
379 "cluster regions separately",
380 true
381);
382
384 "cluster-region-aligned",
385 "align each region's identifiers to the native word size",
386 true
387);
388
390 "cluster-predict-occ",
391 "try to predict which points-to sets are more important in staged analysis",
392 false
393);
394
395// Memory region (MemRegion.cpp)
397 "mssa-ignore-dead-fun",
398 "Don't construct memory SSA for deadfunction",
399 false
400);
401
402
403// Base class of pointer analyses (MemSSA.cpp)
405 "dump-mssa",
406 "Dump memory SSA",
407 false
408);
409
411 "mssa-fun",
412 "Please specify which function needs to be dumped",
413 ""
414);
415
417 "mem-par",
418 "Memory region partition strategies (e.g., for SVFG construction)",
420{
421 {MemSSA::MemPartition::Distinct, "distinct", "memory region per each object"},
422 {MemSSA::MemPartition::IntraDisjoint, "intra-disjoint", "memory regions partitioned based on each function"},
423 {MemSSA::MemPartition::InterDisjoint, "inter-disjoint", "memory regions partitioned across functions"},
424}
425);
426
427
428// SVFG builder (SVFGBuilder.cpp)
430 "svfg-with-ind-call",
431 "Update Indirect Calls for SVFG using pre-analysis",
432 false
433);
434
436 "opt-svfg",
437 "Optimize SVFG to eliminate formal-in and actual-out",
438 false
439);
440
442 "write-svfg",
443 "Write SVFG's analysis results to a file",
444 ""
445);
446
448 "read-svfg",
449 "Read SVFG's analysis results from a file",
450 ""
451);
452
453
455 "intra-lock-td-edge",
456 "Use simple intra-procedural lock for adding SVFG edges",
457 true
458);
459
460
461// LockAnalysis.cpp
463 "print-lock",
464 "Print Thread Interleaving Results",
465 false
466);
467
468
469// MHP.cpp
471 "print-interlev",
472 "Print Thread Interleaving Results",
473 false
474);
475
477 "lock-analysis",
478 "Run Lock Analysis",
479 true
480);
481
482
483// MTAStat.cpp
485 "all-pair-mhp",
486 "All pair MHP computation",
487 false
488);
489
490
491// TCT.cpp
493 "dump-tct",
494 "Dump dot graph of Call Graph",
495 false
496);
497
498
499// LeakChecker.cpp
501 "valid-tests",
502 "Validate memory leak tests",
503 false
504);
505
506
507// Source-sink analyzer (SrcSnkDDA.cpp)
509 "dump-slice",
510 "Dump dot graph of Saber Slices",
511 false
512);
513
515 "cxt-limit",
516 "Source-Sink Analysis Contexts Limit",
517 3
518);
519
520
521// CHG.cpp
523 "dump-cha",
524 "dump the class hierarchy graph",
525 false
526);
527
528
529// LLVMModule.cpp
531 "graph-txt",
532 "graph txt file to build SVFIR",
533 ""
534);
535
537 "svf-main",
538 "add svf.main()",
539 false
540);
541
543 "model-consts",
544 "Modeling individual constant objects",
545 false
546);
547
549 "model-arrays",
550 "Modeling Gep offsets for array accesses",
551 false
552);
553
555 "cyclic-field-index",
556 "Enable cyclic field index when generating field objects using modulus offset",
557 false
558);
559
561 "print-symbol-table",
562 "Print Symbol Table to command line",
563 false
564);
565
566// Conditions.cpp
568 "max-z3-size",
569 "Maximum size limit for Z3 expression",
570 30
571);
572
573// BoundedZ3Expr.cpp
575 "max-bv-len",
576 "Maximum length limit for Z3 bitvector",
577 64
578);
579
580
581
582// SaberCondAllocator.cpp
584 "print-pc",
585 "Print out path condition",
586 false
587);
588
589
590// SaberSVFGBuilder.cpp
592 "saber-collect-extret-globals",
593 "Don't include pointers returned by external function during collecting globals",
594 true
595);
596
597
598// SVFUtil.cpp
600 "dwarn",
601 "Disable warning",
602 true
603);
604
605
606// Andersen.cpp
608 "dump-constraint-graph",
609 "Dump dot graph of Constraint Graph",
610 false
611);
612
614 "brief-constraint-graph",
615 "Dump dot graph of Constraint Graph",
616 true
617);
618
620 "print-constraint-graph",
621 "Print Constraint Graph to Terminal",
622 false
623);
624
626 "write-ander",
627 "Write Andersen's analysis results to a user-specified text file",
628 ""
629);
630
632 "read-ander",
633 "Read Andersen's analysis results from a text file",
634 ""
635);
636
638 "diff",
639 "Enable differential point-to set",
640 true
641);
642
644 "merge-pwc",
645 "Enable PWC detection",
646 true
647);
648
649//SVFIRBuilder.cpp
651 "vt-in-ir",
652 "Handle vtable in ConstantArray/ConstantStruct in SVFIRBuilder (already handled in CHA?)",
653 false
654);
655
656//WPAPass.cpp
658 "extapi",
659 "External API extapi.bc",
660 ""
661);
662
664 "svfg",
665 "Generate SVFG after Andersen's Analysis",
666 false
667);
668
670 "saber-full-svfg",
671 "When using SABER for bug detection pass, enable full svfg on top of the pointer-only one",
672 false
673);
674
676 "print-aliases",
677 "Print results for all pair aliases",
678 false
679);
680
682 "Select pointer analysis",
683{
684 {PTATY::Andersen_WPA, "nander", "Standard inclusion-based analysis"},
685 {PTATY::AndersenSCD_WPA, "sander", "Selective cycle detection inclusion-based analysis"},
686 {PTATY::AndersenSFR_WPA, "sfrander", "Stride-based field representation inclusion-based analysis"},
687 {PTATY::AndersenWaveDiff_WPA, "ander", "Diff wave propagation inclusion-based analysis"},
688 {PTATY::Steensgaard_WPA, "steens", "Steensgaard's pointer analysis"},
689 // Disabled till further work is done.
690 {PTATY::FSSPARSE_WPA, "fspta", "Sparse flow sensitive pointer analysis"},
691 {PTATY::VFS_WPA, "vfspta", "Versioned sparse flow-sensitive points-to analysis"},
692 {PTATY::TypeCPP_WPA, "type", "Type-based fast analysis for Callgraph, SVFIR and CHA"},
693}
694);
695
696
698 "Select alias check rule",
699{
700 {WPAPass::Conservative, "conservative", "return MayAlias if any pta says alias"},
701 {WPAPass::Veto, "veto", "return NoAlias if any pta says no alias"},
702}
703);
704
706 "show-hidden-nodes",
707 "Show hidden nodes on DOT Graphs (e.g., isolated node on a graph)",
708 false
709);
710
712 "grammar",
713 "<Grammar textfile>",
714 ""
715);
716
718 "cflgraph",
719 "<Dot file as the CFLGraph input>",
720 ""
721);
722
724 "print-cfl",
725 "Print ir, grammar and cflgraph for debug.",
726 false
727);
728
730 "flex-symmap",
731 "Extend exist sym map while read graph from dot if sym not in map.",
732 false
733);
734
736 "peg-transfer",
737 "When explicit to true, cfl graph builder will transfer PAG load and store edges to copy and addr.",
738 false
739);
740
742 "cflsvfg",
743 "When explicit to true, cfl graph builder will transfer SVFG to CFL Reachability.",
744 false
745);
746
748 "pocr-alias",
749 "When explicit to true, cfl data builder will transfer CFL graph to CFLData.",
750 false
751);
752
754 "pocr-hybrid",
755 "When explicit to true, POCRHybridSolver transfer CFL graph to internal hybrid graph representation.",
756 false
757);
758
760 "customized",
761 "When explicit to true, user can use any grammar file.",
762 false
763);
764
766 "loop-analysis",
767 "Analyze every func and get loop info and loop bounds.",
768 true
769);
770
772 "loop-bound",
773 "Maximum number of loop",
774 1
775);
776
778 "ae-sparsity",
779 "Abstract execution mode (Default: dense)",
781{
782 {
784 "Dense abstract execution: all variables propagated along ICFG edges."
785 },
786 {
788 "Semi-sparse abstract execution: ObjVars dense, ValVars sparse."
789 },
790 {
792 "Sparse abstract execution via SVFG."
793 }
794});
796 "ae-fun-entry",
797 "Abstract execution function entry mode (Default: main)",
799{
800 {
802 "Analyze from the program entry function only."
803 },
804 {
806 "Analyze from every no-external-caller SCC after Andersen resolves the call graph."
807 }
808});
810 "widen-delay", "Loop Widen Delay", 3);
812 "handle-recur",
813 "Recursion handling mode in abstract execution (Default -widen-narrow)",
815{
816 {
818 "The return value, and any stored object pointed by q at *q = p in recursive functions will be set to the top value."
819 },
820 {
822 "Only apply widening at the cycle head of recursive functions."
823 },
824 {
826 "Apply both widening and narrowing at the cycle head of recursive functions."
827 }
828}
829);
831 "timeout", "time out (seconds), set -1 (no timeout), default 14400s",14400);
833 "output","output db file","output.db");
835 "overflow","Buffer Overflow Detection",false);
837 "null-deref","Null Pointer Dereference Detection",false);
839 "leak", "Memory Leak Detection",false);
841 "fileck", "File Open/Close Detection",false);
843 "dfree", "Double Free Detection",false);
845 "race", "Data race Detection",false);
847 "gep-unknown-idx","Skip Gep Unknown Index",false);
849 "run-uncall-fun","Skip Gep Unknown Index",false);
851 "icfg-merge-adjnodes","ICFG Simplification - Merge Adjacent Nodes in the Same Basic Block.",false);
852
853
855 "precision",
856 "symbolic abstraction precision for float",
857 0
858);
859
861 "max-node-label-length",
862 "maxmimum length of dumped graph node labels",
863 250
864);
865
866} // namespace SVF.
@ InterDisjoint
Definition MemSSA.h:117
@ IntraDisjoint
Definition MemSSA.h:116
@ SEQ
Allocate objects objects and values sequentially, intermixed.
static const Option< bool > IgnoreDeadFun
Definition Options.h:135
static const Option< bool > PlainMappingFs
Use an explicitly plain mapping with flow-sensitive (not null).
Definition Options.h:43
static const Option< std::string > ReadSVFG
Definition Options.h:148
static const Option< bool > SVFGWithIndirectCall
Definition Options.h:144
static const Option< bool > KeepAOFI
Definition Options.h:103
static const Option< bool > CallGraphDotGraph
Definition Options.h:122
static const Option< bool > DumpMSSA
Definition Options.h:138
static const Option< bool > InsenCycle
Definition Options.h:85
static const Option< bool > FirstFieldEqBase
Definition Options.h:99
static Option< bool > ModelArrays
Definition Options.h:181
static const Option< bool > Customized
Definition Options.h:232
static const Option< bool > DisableWarn
Definition Options.h:198
static const Option< bool > INCDFPTData
Definition Options.h:132
static const Option< u32_t > LoopBound
Definition Options.h:236
static const Option< bool > PrintInterLev
Definition Options.h:155
static const Option< bool > EnableThreadCallGraph
Definition Options.h:128
static const Option< bool > PAGDotGraph
Definition Options.h:117
static OptionMultiple< u32_t > AliasRule
Definition Options.h:218
static const Option< bool > BriefConsCGDotGraph
Definition Options.h:202
static const Option< std::string > WriteSVFG
Definition Options.h:147
static const OptionMap< u32_t > HandleRecur
recursion handling mode, Default: TOP
Definition Options.h:243
static const Option< std::string > ExtAPIPath
Definition Options.h:213
static const Option< bool > RaceCheck
data race checker, Default: false
Definition Options.h:259
static const Option< bool > POCRAlias
Definition Options.h:230
static const Option< bool > EnableTypeCheck
Definition Options.h:127
static const Option< bool > PrintLockSpan
Definition Options.h:152
static const Option< u32_t > AnderTimeLimit
Time limit for the Andersen's analyses.
Definition Options.h:71
static const OptionMap< SVF::NodeIDAllocator::Strategy > NodeAllocStrat
Definition Options.h:31
static const Option< bool > POCRHybrid
Definition Options.h:231
static const Option< bool > CyclicFldIdx
Definition Options.h:182
static const Option< bool > DFreeCheck
double free checker, Default: false
Definition Options.h:257
static const Option< u32_t > CxtBudget
Definition Options.h:77
static const Option< std::string > DumpJson
Definition Options.h:120
static Option< bool > DetectPWC
Definition Options.h:209
static const Option< u32_t > CxtLimit
Definition Options.h:169
static const Option< bool > PrintFieldWithBasePrefix
Definition Options.h:114
static const Option< bool > ShowSVFIRValue
Definition Options.h:118
static const Option< bool > PTSPrint
Definition Options.h:112
static const Option< std::string > ReadAnder
Definition Options.h:207
static const Option< bool > ClusterAnder
Whether to stage Andersen's with Steensgaard and cluster based on that data.
Definition Options.h:37
static const Option< bool > PEGTransfer
Definition Options.h:228
static const Option< u32_t > Timeout
the max time consumptions (seconds). Default: 4 hours 14400s
Definition Options.h:245
static Option< bool > HandBlackHole
Definition Options.h:98
static const Option< bool > SymTabPrint
Definition Options.h:183
static const OptionMap< u32_t > MemPar
Definition Options.h:141
static const Option< std::string > Graphtxt
Definition Options.h:175
static const OptionMap< PointsTo::Type > PtType
Type of points-to set to use for all analyses.
Definition Options.h:46
static const Option< bool > RegionAlign
Align identifiers in each region to a word.
Definition Options.h:58
static Option< bool > ModelConsts
Definition Options.h:180
static const Option< std::string > UserInputQuery
Definition Options.h:83
static const Option< bool > EnableAliasCheck
Definition Options.h:126
static const Option< bool > PrintPathCond
Definition Options.h:192
static const Option< u32_t > MaxContextLen
Definition Options.h:81
static const Option< u32_t > MaxPathLen
Definition Options.h:80
static const OptionMap< u32_t > AESparsity
Definition Options.h:239
static const Option< bool > GepUnknownIdx
if the access index of gepstmt is unknown, skip it, Default: false
Definition Options.h:261
static const Option< bool > FileCheck
file open close checker, Default: false
Definition Options.h:255
static const Option< u32_t > FsTimeLimit
Time limit for the main phase (i.e., the actual solving) of FS analyses.
Definition Options.h:68
static const Option< u32_t > MaxBVLen
Definition Options.h:189
static const Option< bool > PTSAllPrint
Definition Options.h:113
static const Option< bool > ICFGMergeAdjacentNodes
Definition Options.h:264
static const Option< bool > WPANum
Definition Options.h:88
static const Option< bool > PAGPrint
Definition Options.h:123
static const Option< bool > CFLSVFG
Definition Options.h:229
static const Option< std::string > CFLGraph
Definition Options.h:225
static const Option< bool > TypePrint
Definition Options.h:110
static const Option< bool > ClusterFs
Whether to cluster FS or VFS with the auxiliary Andersen's.
Definition Options.h:40
static const Option< u32_t > MaxZ3Size
Definition Options.h:186
static const Option< bool > VtableInSVFIR
Definition Options.h:210
static const Option< u32_t > FlowBudget
Definition Options.h:92
static const Option< bool > RegionedClustering
Cluster partitions separately.
Definition Options.h:55
static const Option< bool > FlexSymMap
Definition Options.h:227
static const Option< u32_t > AEPrecision
Definition Options.h:267
static Option< bool > UsePreCompFieldSensitive
Definition Options.h:125
static const Option< bool > SABERFULLSVFG
Definition Options.h:215
static const Option< bool > CollectExtRetGlobals
Definition Options.h:195
static const Option< bool > PrintCGGraph
Definition Options.h:203
static const Option< std::string > SelfCycle
Definition Options.h:104
static const Option< bool > PrintCFL
Definition Options.h:226
static const Option< u32_t > IndirectCallLimit
Definition Options.h:124
static const OptionMap< PTBackingType > ptDataBacking
PTData type.
Definition Options.h:65
static const Option< std::string > MSSAFun
Definition Options.h:139
static OptionMultiple< PTATY > PASelected
Definition Options.h:217
static const Option< bool > AllPairMHP
Definition Options.h:159
static const Option< u32_t > MaxFieldLimit
Maximum number of field derivations for an object.
Definition Options.h:34
static const OptionMap< u32_t > ClusterMethod
Definition Options.h:52
static const Option< u32_t > MaxStepInWrapper
Definition Options.h:82
static const Option< std::string > WriteAnder
Definition Options.h:205
static const Option< u32_t > WidenDelay
Definition Options.h:241
static const OptionMap< u32_t > AEFunEntry
Definition Options.h:240
static const Option< bool > NullDerefCheck
nullptr dereference checker, Default: false
Definition Options.h:251
static Option< bool > OPTSVFG
Definition Options.h:145
static const Option< bool > DumpSlice
Definition Options.h:168
static const Option< bool > FuncPointerPrint
Definition Options.h:111
static const Option< bool > RunUncallFuncs
Definition Options.h:262
static const Option< bool > MarkedClocksOnly
Definition Options.h:27
static const Option< bool > PrintCPts
Definition Options.h:86
static const Option< bool > ConnectVCallOnCHA
Definition Options.h:129
static const Option< bool > LoopAnalysis
Definition Options.h:235
static const Option< u32_t > MaxNodeLabelLength
Definition Options.h:270
static const OptionMap< SVFStat::ClockType > ClockType
Definition Options.h:20
static const Option< bool > PrintAliases
Definition Options.h:216
static const Option< bool > PStat
Definition Options.h:115
static const Option< bool > ValidateTests
Definition Options.h:165
static const Option< std::string > GrammarFilename
Definition Options.h:224
static const Option< u32_t > StatBudget
Definition Options.h:116
static const Option< bool > OCGDotGraph
Definition Options.h:95
static const Option< bool > ConsCGDotGraph
Definition Options.h:201
static OptionMultiple< PTATY > DDASelected
register this into alias analysis group
Definition Options.h:89
static const Option< std::string > OutputName
bug info output file, Default: output.db
Definition Options.h:247
static const Option< bool > TCTDotGraph
Definition Options.h:162
static const Option< bool > ShowHiddenNode
Definition Options.h:221
static const Option< bool > ReadJson
Definition Options.h:121
static const Option< bool > DoLockAnalysis
Definition Options.h:156
static const Option< bool > DumpVFG
Definition Options.h:107
static const Option< bool > ContextInsensitive
Definition Options.h:102
static const Option< bool > MemoryLeakCheck
memory leak check, Default: false
Definition Options.h:253
static const Option< bool > DiffPts
Definition Options.h:208
static const Option< bool > DumpICFG
Definition Options.h:119
static const Option< bool > PrintQueryPts
Definition Options.h:87
static const Option< bool > AnderSVFG
Definition Options.h:214
static const Option< bool > InsenRecur
Definition Options.h:84
static const Option< bool > PredictPtOcc
Definition Options.h:62
static Option< bool > SVFMain
Definition Options.h:176
static const Option< bool > IntraLock
Definition Options.h:151
static const Option< bool > BufferOverflowCheck
buffer overflow checker, Default: false
Definition Options.h:249
static const Option< bool > DumpCHA
Definition Options.h:172
static const Option< u32_t > VersioningThreads
Number of threads for the versioning phase.
Definition Options.h:74
@ Conservative
return MayAlias if any pta says alias
Definition WPAPass.h:67
@ Veto
return NoAlias if any pta says no alias
Definition WPAPass.h:68
@ HCLUST_METHOD_AVERAGE
Definition fastcluster.h:72
@ HCLUST_METHOD_COMPLETE
Definition fastcluster.h:70
@ HCLUST_METHOD_SVF_BEST
Definition fastcluster.h:76
@ HCLUST_METHOD_SINGLE
Definition fastcluster.h:68
for isBitcode
Definition BasicTypes.h:70
@ Cxt_DDA
context sensitive DDA
Definition PTATY.h:32
@ VFS_WPA
Versioned sparse flow-sensitive WPA.
Definition PTATY.h:21
@ Andersen_WPA
Andersen PTA.
Definition PTATY.h:12
@ FSSPARSE_WPA
Sparse flow sensitive WPA.
Definition PTATY.h:20
@ AndersenSFR_WPA
Stride-based field representation.
Definition PTATY.h:14
@ FlowS_DDA
Flow sensitive DDA.
Definition PTATY.h:30
@ AndersenWaveDiff_WPA
Diff wave propagation andersen-style WPA.
Definition PTATY.h:15
@ TypeCPP_WPA
Type-based analysis for C++.
Definition PTATY.h:26
@ Steensgaard_WPA
Steensgaard PTA.
Definition PTATY.h:16
@ AndersenSCD_WPA
Selective cycle detection andersen-style WPA.
Definition PTATY.h:13
@ Mutable
Definition PTATY.h:49
@ Persistent
Definition PTATY.h:50