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 (0 = no timer)",
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 (erroneous to set when -fs-time-limit is; 0 = no timer)",
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 "undef-as-null",
173 "Map pointer-typed undef and poison to the null node "
174 "(opt-in points-to approximation; unsuitable for abstract execution)",
175 false
176);
177
179 "ff-eq-base",
180 "Treat base objects as their first fields",
181 false
182);
183
184
185// SVFG optimizer (SVFGOPT.cpp)
187 "ci-svfg",
188 "Reduce SVFG into a context-insensitive one",
189 false
190);
191
193 "keep-aofi",
194 "Keep formal-in and actual-out parameters",
195 false
196);
197
199 "keep-self-cycle",
200 "How to handle self cycle edges: all, context, none",
201 ""
202);
203
204
205// Sparse value-flow graph (VFG.cpp)
207 "dump-vfg",
208 "Dump dot graph of VFG",
209 false
210);
211
212
213// Base class of pointer analyses (PointerAnalysis.cpp)
215 "print-type",
216 "Print type",
217 false
218);
219
221 "print-fp",
222 "Print targets of indirect call site",
223 false
224);
225
227 "print-pts",
228 "Print points-to set of top-level pointers",
229 false
230);
231
233 "print-field",
234 "Print field object with base object id as the prefix",
235 false
236);
237
239 "print-all-pts",
240 "Print all points-to set of both top-level and address-taken variables",
241 false
242);
243
245 "stat",
246 "Statistic for Pointer analysis",
247 true
248);
249
251 "stat-limit",
252 "Iteration budget for On-the-fly statistics",
253 20
254);
255
257 "dump-pag",
258 "Dump dot graph of SVFIR",
259 false
260);
261
263 "show-ir-value",
264 "Show values of SVFIR (e.g., when generating dot graph)",
265 true
266);
267
269 "dump-icfg",
270 "Dump dot graph of ICFG",
271 false
272);
273
275 "dump-json",
276 "Dump the SVFIR in JSON format",
277 ""
278);
279
281 "read-json",
282 "Read the SVFIR in JSON format",
283 false
284);
285
287 "dump-callgraph",
288 "Dump dot graph of Call Graph",
289 false
290);
291
293 "print-pag",
294 "Print SVFIR to command line",
295 false
296);
297
299 "ind-call-limit",
300 "Indirect solved call edge limit",
301 50000
302);
303
305 "pre-field-sensitive",
306 "Use pre-computed field-sensitivity for later analysis",
307 true
308);
309
311 "alias-check",
312 "Enable alias check functions",
313 true
314);
315
317 "type-check",
318 "Enable type check functions",
319 true
320);
321
323 "enable-tcg",
324 "Enable pointer analysis to use thread call graph",
325 true
326);
327
329 "v-call-cha",
330 "connect virtual calls using cha",
331 false
332);
333
334
335// PointerAnalysisImpl.cpp
337 "inc-data",
338 "Enable incremental DFPTData for flow-sensitive analysis",
339 true
340);
341
343 "cluster-ander",
344 "Stage Andersen's with Steensgard's and cluster based on that",
345 false
346);
347
349 "cluster-fs",
350 "Cluster for FS/VFS with auxiliary Andersen's",
351 false
352);
353
355 "plain-mapping-fs",
356 "Use an explicitly (not null) plain mapping for FS",
357 false
358);
359
361 "pt-type",
362 "points-to set data structure to use in all analyses",
363 PointsTo::Type::SBV,
364{
365 {PointsTo::Type::SBV, "sbv", "sparse bit-vector"},
366 {PointsTo::Type::CBV, "cbv", "core bit-vector (dynamic bit-vector without leading and trailing 0s)"},
367 {PointsTo::Type::BV, "bv", "bit-vector (dynamic bit-vector without trailing 0s)"},
368}
369);
370
372 "cluster-method",
373 "hierarchical clustering method for objects",
375{
376 {HCLUST_METHOD_SINGLE, "single", "single linkage; minimum spanning tree algorithm"},
377 {HCLUST_METHOD_COMPLETE, "complete", "complete linkage; nearest-neighbour-chain algorithm"},
378 {HCLUST_METHOD_AVERAGE, "average", "unweighted average linkage; nearest-neighbour-chain algorithm"},
379 {HCLUST_METHOD_SVF_BEST, "best", "try all linkage criteria; choose best"},
380}
381);
382
384 // Use cluster to "gather" the options closer together, even if it sounds a little worse.
385 "cluster-regioned",
386 "cluster regions separately",
387 true
388);
389
391 "cluster-region-aligned",
392 "align each region's identifiers to the native word size",
393 true
394);
395
397 "cluster-predict-occ",
398 "try to predict which points-to sets are more important in staged analysis",
399 false
400);
401
402// Memory region (MemRegion.cpp)
404 "mssa-ignore-dead-fun",
405 "Don't construct memory SSA for deadfunction",
406 false
407);
408
409
410// Base class of pointer analyses (MemSSA.cpp)
412 "dump-mssa",
413 "Dump memory SSA",
414 false
415);
416
418 "mssa-fun",
419 "Please specify which function needs to be dumped",
420 ""
421);
422
424 "mem-par",
425 "Memory region partition strategies (e.g., for SVFG construction)",
427{
428 {MemSSA::MemPartition::Distinct, "distinct", "memory region per each object"},
429 {MemSSA::MemPartition::IntraDisjoint, "intra-disjoint", "memory regions partitioned based on each function"},
430 {MemSSA::MemPartition::InterDisjoint, "inter-disjoint", "memory regions partitioned across functions"},
431}
432);
433
434
435// SVFG builder (SVFGBuilder.cpp)
437 "svfg-with-ind-call",
438 "Update Indirect Calls for SVFG using pre-analysis",
439 false
440);
441
443 "opt-svfg",
444 "Optimize SVFG to eliminate formal-in and actual-out",
445 false
446);
447
449 "write-svfg",
450 "Write SVFG's analysis results to a file",
451 ""
452);
453
455 "read-svfg",
456 "Read SVFG's analysis results from a file",
457 ""
458);
459
460
462 "mta-intra-lock-td-edge",
463 "Use simple intra-procedural lock for adding SVFG edges",
464 true
465);
466
467
468// LockAnalysis.cpp
470 "mta-print-lock",
471 "Print Thread Interleaving Results",
472 false
473);
474
475
476// MHP.cpp
478 "mta-print-interlev",
479 "Print Thread Interleaving Results",
480 false
481);
482
484 "mta-lock-analysis",
485 "Run Lock Analysis",
486 true
487);
488
489
490// TCT.cpp
492 "mta-dump-tct",
493 "Dump dot graph of Call Graph",
494 false
495);
496
497
498// LeakChecker.cpp
500 "valid-tests",
501 "Validate memory leak tests",
502 false
503);
504
505
506// Source-sink analyzer (SrcSnkDDA.cpp)
508 "dump-slice",
509 "Dump dot graph of Saber Slices",
510 false
511);
512
514 "cxt-limit",
515 "Source-Sink Analysis Contexts Limit",
516 3
517);
518
519
520// CHG.cpp
522 "dump-cha",
523 "dump the class hierarchy graph",
524 false
525);
526
527
528// LLVMModule.cpp
530 "graph-txt",
531 "graph txt file to build SVFIR",
532 ""
533);
534
536 "svf-main",
537 "add svf.main()",
538 false
539);
540
542 "model-consts",
543 "Modeling individual constant objects",
544 false
545);
546
548 "model-arrays",
549 "Modeling Gep offsets for array accesses",
550 false
551);
552
554 "cyclic-field-index",
555 "Enable cyclic field index when generating field objects using modulus offset",
556 false
557);
558
560 "print-symbol-table",
561 "Print Symbol Table to command line",
562 false
563);
564
565// Conditions.cpp
567 "max-z3-size",
568 "Maximum size limit for Z3 expression",
569 30
570);
571
572// BoundedZ3Expr.cpp
574 "max-bv-len",
575 "Maximum length limit for Z3 bitvector",
576 64
577);
578
579
580
581// SaberCondAllocator.cpp
583 "print-pc",
584 "Print out path condition",
585 false
586);
587
588
589// SaberSVFGBuilder.cpp
591 "saber-collect-extret-globals",
592 "Don't include pointers returned by external function during collecting globals",
593 true
594);
595
596
597// SVFUtil.cpp
599 "dwarn",
600 "Disable warning",
601 true
602);
603
604
605// Andersen.cpp
607 "dump-constraint-graph",
608 "Dump dot graph of Constraint Graph",
609 false
610);
611
613 "brief-constraint-graph",
614 "Dump dot graph of Constraint Graph",
615 true
616);
617
619 "print-constraint-graph",
620 "Print Constraint Graph to Terminal",
621 false
622);
623
625 "write-ander",
626 "Write Andersen's analysis results to a user-specified text file",
627 ""
628);
629
631 "read-ander",
632 "Read Andersen's analysis results from a text file",
633 ""
634);
635
637 "diff",
638 "Enable differential point-to set",
639 true
640);
641
643 "merge-pwc",
644 "Enable PWC detection",
645 true
646);
647
648//SVFIRBuilder.cpp
650 "vt-in-ir",
651 "Handle vtable in ConstantArray/ConstantStruct in SVFIRBuilder (already handled in CHA?)",
652 false
653);
654
655//WPAPass.cpp
657 "extapi",
658 "External API extapi.bc",
659 ""
660);
661
663 "svfg",
664 "Generate SVFG after Andersen's Analysis",
665 false
666);
667
669 "saber-full-svfg",
670 "When using SABER for bug detection pass, enable full svfg on top of the pointer-only one",
671 false
672);
673
675 "print-aliases",
676 "Print results for all pair aliases",
677 false
678);
679
681 "Select pointer analysis",
682{
683 {PTATY::Andersen_WPA, "nander", "Standard inclusion-based analysis"},
684 {PTATY::AndersenSCD_WPA, "sander", "Selective cycle detection inclusion-based analysis"},
685 {PTATY::AndersenSFR_WPA, "sfrander", "Stride-based field representation inclusion-based analysis"},
686 {PTATY::AndersenWaveDiff_WPA, "ander", "Diff wave propagation inclusion-based analysis"},
687 {PTATY::Steensgaard_WPA, "steens", "Steensgaard's pointer analysis"},
688 // Disabled till further work is done.
689 {PTATY::FSSPARSE_WPA, "fspta", "Sparse flow sensitive pointer analysis"},
690 {PTATY::VFS_WPA, "vfspta", "Versioned sparse flow-sensitive points-to analysis"},
691 {PTATY::TypeCPP_WPA, "type", "Type-based fast analysis for Callgraph, SVFIR and CHA"},
692}
693);
694
695
697 "Select alias check rule",
698{
699 {WPAPass::Conservative, "conservative", "return MayAlias if any pta says alias"},
700 {WPAPass::Veto, "veto", "return NoAlias if any pta says no alias"},
701}
702);
703
705 "show-hidden-nodes",
706 "Show hidden nodes on DOT Graphs (e.g., isolated node on a graph)",
707 false
708);
709
711 "grammar",
712 "<Grammar textfile>",
713 ""
714);
715
717 "cflgraph",
718 "<Dot file as the CFLGraph input>",
719 ""
720);
721
723 "print-cfl",
724 "Print ir, grammar and cflgraph for debug.",
725 false
726);
727
729 "flex-symmap",
730 "Extend exist sym map while read graph from dot if sym not in map.",
731 false
732);
733
735 "peg-transfer",
736 "When explicit to true, cfl graph builder will transfer PAG load and store edges to copy and addr.",
737 false
738);
739
741 "cflsvfg",
742 "When explicit to true, cfl graph builder will transfer SVFG to CFL Reachability.",
743 false
744);
745
747 "pocr-alias",
748 "When explicit to true, cfl data builder will transfer CFL graph to CFLData.",
749 false
750);
751
753 "pocr-hybrid",
754 "When explicit to true, POCRHybridSolver transfer CFL graph to internal hybrid graph representation.",
755 false
756);
757
759 "customized",
760 "When explicit to true, user can use any grammar file.",
761 false
762);
763
765 "loop-analysis",
766 "Analyze every func and get loop info and loop bounds.",
767 true
768);
769
771 "loop-bound",
772 "Maximum number of loop",
773 1
774);
775
777 "ae-sparsity",
778 "Abstract execution mode (Default: dense)",
780{
781 {
783 "Dense abstract execution: all variables propagated along ICFG edges."
784 },
785 {
787 "Semi-sparse abstract execution: ObjVars dense, ValVars sparse."
788 },
789 {
791 "Sparse abstract execution via SVFG."
792 }
793});
795 "ae-fun-entry",
796 "Abstract execution function entry mode (Default: main)",
798{
799 {
801 "Analyze from the program entry function only."
802 },
803 {
805 "Analyze from every no-external-caller SCC after Andersen resolves the call graph."
806 }
807});
809 "widen-delay", "Loop Widen Delay", 3);
811 "handle-recur",
812 "Recursion handling mode in abstract execution (Default -widen-narrow)",
814{
815 {
817 "The return value, and any stored object pointed by q at *q = p in recursive functions will be set to the top value."
818 },
819 {
821 "Only apply widening at the cycle head of recursive functions."
822 },
823 {
825 "Apply both widening and narrowing at the cycle head of recursive functions."
826 }
827}
828);
830 "timeout", "time out (seconds), set -1 (no timeout), default 14400s",14400);
832 "output","output db file","output.db");
834 "overflow","Buffer Overflow Detection",false);
836 "null-deref","Null Pointer Dereference Detection",false);
838 "leak", "Memory Leak Detection",false);
840 "fileck", "File Open/Close Detection",false);
842 "dfree", "Double Free Detection",false);
844 "mta-flow-sensitive", "MTA: flow-sensitive (FSAM) main analysis; false = Andersen flow-insensitive base", true);
846 "mta-dump-graphs", "MTA: dump the pointer-analysis and thread call graphs (ptacg/tcg.dot)", false);
848 "mta-enable-slicing", "MTA slicing: slice before the FSAM main analysis (false = whole-program baseline)", true);
850 "mta-slicing-single", "MTA slicing: use one unified slice for both ILA and FSPTA (single-pass baseline)", false);
852 "gep-unknown-idx","Skip Gep Unknown Index",false);
854 "run-uncall-fun","Skip Gep Unknown Index",false);
856 "icfg-merge-adjnodes","ICFG Simplification - Merge Adjacent Nodes in the Same Basic Block.",false);
857
858
860 "precision",
861 "symbolic abstraction precision for float",
862 0
863);
864
866 "max-node-label-length",
867 "maxmimum length of dumped graph node labels",
868 250
869);
870
871} // 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:136
static const Option< bool > PlainMappingFs
Use an explicitly plain mapping with flow-sensitive (not null).
Definition Options.h:43
static const Option< bool > UndefAsNull
Definition Options.h:99
static const Option< std::string > ReadSVFG
Definition Options.h:149
static const Option< bool > SVFGWithIndirectCall
Definition Options.h:145
static const Option< bool > KeepAOFI
Definition Options.h:104
static const Option< bool > CallGraphDotGraph
Definition Options.h:123
static const Option< bool > DumpMSSA
Definition Options.h:139
static const Option< bool > InsenCycle
Definition Options.h:85
static const Option< bool > FirstFieldEqBase
Definition Options.h:100
static Option< bool > ModelArrays
Definition Options.h:179
static const Option< bool > Customized
Definition Options.h:230
static const Option< bool > DisableWarn
Definition Options.h:196
static const Option< bool > INCDFPTData
Definition Options.h:133
static const Option< u32_t > LoopBound
Definition Options.h:234
static const Option< bool > PrintInterLev
Definition Options.h:156
static const Option< bool > EnableThreadCallGraph
Definition Options.h:129
static const Option< bool > PAGDotGraph
Definition Options.h:118
static OptionMultiple< u32_t > AliasRule
Definition Options.h:216
static const Option< bool > BriefConsCGDotGraph
Definition Options.h:200
static const Option< std::string > WriteSVFG
Definition Options.h:148
static const OptionMap< u32_t > HandleRecur
recursion handling mode, Default: TOP
Definition Options.h:241
static const Option< std::string > ExtAPIPath
Definition Options.h:211
static const Option< bool > POCRAlias
Definition Options.h:228
static const Option< bool > EnableTypeCheck
Definition Options.h:128
static const Option< bool > PrintLockSpan
Definition Options.h:153
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:229
static const Option< bool > CyclicFldIdx
Definition Options.h:180
static const Option< bool > DFreeCheck
double free checker, Default: false
Definition Options.h:255
static const Option< u32_t > CxtBudget
Definition Options.h:77
static const Option< bool > MTAEnableSlicing
MTA slicing: slice before the FSAM main analysis (false = whole-program baseline),...
Definition Options.h:262
static const Option< std::string > DumpJson
Definition Options.h:121
static Option< bool > DetectPWC
Definition Options.h:207
static const Option< u32_t > CxtLimit
Definition Options.h:167
static const Option< bool > PrintFieldWithBasePrefix
Definition Options.h:115
static const Option< bool > ShowSVFIRValue
Definition Options.h:119
static const Option< bool > PTSPrint
Definition Options.h:113
static const Option< std::string > ReadAnder
Definition Options.h:205
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:226
static const Option< u32_t > Timeout
the max time consumptions (seconds). Default: 4 hours 14400s
Definition Options.h:243
static Option< bool > HandBlackHole
Definition Options.h:98
static const Option< bool > SymTabPrint
Definition Options.h:181
static const OptionMap< u32_t > MemPar
Definition Options.h:142
static const Option< std::string > Graphtxt
Definition Options.h:173
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:178
static const Option< std::string > UserInputQuery
Definition Options.h:83
static const Option< bool > EnableAliasCheck
Definition Options.h:127
static const Option< bool > PrintPathCond
Definition Options.h:190
static const Option< u32_t > MaxPathLen
Definition Options.h:80
static const OptionMap< u32_t > AESparsity
Definition Options.h:237
static const Option< bool > GepUnknownIdx
if the access index of gepstmt is unknown, skip it, Default: false
Definition Options.h:266
static const Option< bool > FileCheck
file open close checker, Default: false
Definition Options.h:253
static const Option< bool > DumpMTAGraphs
MTA: dump the pointer-analysis and thread call graphs (ptacg/tcg.dot), Default: false.
Definition Options.h:259
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:187
static const Option< bool > PTSAllPrint
Definition Options.h:114
static const Option< bool > ICFGMergeAdjacentNodes
Definition Options.h:269
static const Option< bool > WPANum
Definition Options.h:88
static const Option< bool > PAGPrint
Definition Options.h:124
static const Option< bool > CFLSVFG
Definition Options.h:227
static const Option< std::string > CFLGraph
Definition Options.h:223
static const Option< bool > TypePrint
Definition Options.h:111
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:184
static const Option< bool > VtableInSVFIR
Definition Options.h:208
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:225
static const Option< u32_t > AEPrecision
Definition Options.h:272
static Option< bool > UsePreCompFieldSensitive
Definition Options.h:126
static const Option< bool > SABERFULLSVFG
Definition Options.h:213
static const Option< bool > CollectExtRetGlobals
Definition Options.h:193
static const Option< bool > PrintCGGraph
Definition Options.h:201
static const Option< std::string > SelfCycle
Definition Options.h:105
static const Option< bool > PrintCFL
Definition Options.h:224
static const Option< bool > MTASingleStageSlicing
MTA slicing: one unified slice for ILA + FSPTA (single-pass baseline), Default: false.
Definition Options.h:264
static const Option< u32_t > IndirectCallLimit
Definition Options.h:125
static const OptionMap< PTBackingType > ptDataBacking
PTData type.
Definition Options.h:65
static const Option< std::string > MSSAFun
Definition Options.h:140
static OptionMultiple< PTATY > PASelected
Definition Options.h:215
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:203
static const Option< u32_t > WidenDelay
Definition Options.h:239
static const OptionMap< u32_t > AEFunEntry
Definition Options.h:238
static const Option< bool > NullDerefCheck
nullptr dereference checker, Default: false
Definition Options.h:249
static Option< bool > OPTSVFG
Definition Options.h:146
static const Option< bool > DumpSlice
Definition Options.h:166
static const Option< bool > FuncPointerPrint
Definition Options.h:112
static const Option< bool > RunUncallFuncs
Definition Options.h:267
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:130
static const Option< bool > LoopAnalysis
Definition Options.h:233
static const Option< u32_t > MaxNodeLabelLength
Definition Options.h:275
static const OptionMap< SVFStat::ClockType > ClockType
Definition Options.h:20
static const Option< bool > PrintAliases
Definition Options.h:214
static const Option< bool > PStat
Definition Options.h:116
static Option< u32_t > MaxContextLen
Definition Options.h:81
static const Option< bool > ValidateTests
Definition Options.h:163
static const Option< std::string > GrammarFilename
Definition Options.h:222
static const Option< u32_t > StatBudget
Definition Options.h:117
static const Option< bool > MTFlowSensitive
MTA: flow-sensitive (FSAM) main analysis; false = Andersen flow-insensitive base, Default: true.
Definition Options.h:257
static const Option< bool > OCGDotGraph
Definition Options.h:95
static const Option< bool > ConsCGDotGraph
Definition Options.h:199
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:245
static const Option< bool > TCTDotGraph
Definition Options.h:160
static const Option< bool > ShowHiddenNode
Definition Options.h:219
static const Option< bool > ReadJson
Definition Options.h:122
static const Option< bool > DoLockAnalysis
Definition Options.h:157
static const Option< bool > DumpVFG
Definition Options.h:108
static const Option< bool > ContextInsensitive
Definition Options.h:103
static const Option< bool > MemoryLeakCheck
memory leak check, Default: false
Definition Options.h:251
static const Option< bool > DiffPts
Definition Options.h:206
static const Option< bool > DumpICFG
Definition Options.h:120
static const Option< bool > PrintQueryPts
Definition Options.h:87
static const Option< bool > AnderSVFG
Definition Options.h:212
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:174
static const Option< bool > IntraLock
Definition Options.h:152
static const Option< bool > BufferOverflowCheck
buffer overflow checker, Default: false
Definition Options.h:247
static const Option< bool > DumpCHA
Definition Options.h:170
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