1//===-- AnalyzerOptions.def - Metadata about Static Analyses ----*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file defines the analyzer options avaible with -analyzer-config. 10// 11//===----------------------------------------------------------------------===// 12 13#ifndef LLVM_CLANG_STATICANALYZER_CORE_ANALYZEROPTIONS_H 14#error This .def file is expected to be included in translation units where \ 15"clang/StaticAnalyzer/Core/AnalyzerOptions.h" is already included! 16#endif 17 18#ifdef ANALYZER_OPTION 19#ifndef ANALYZER_OPTION_DEPENDS_ON_USER_MODE 20#error If you didnt include this file with the intent of generating methods, \ 21define both 'ANALYZER_OPTION' and 'ANALYZER_OPTION_DEPENDS_ON_USER_MODE' macros! 22#endif 23#endif 24 25#ifndef ANALYZER_OPTION_DEPENDS_ON_USER_MODE 26#ifdef ANALYZER_OPTION 27#error If you didnt include this file with the intent of generating methods, \ 28define both 'ANALYZER_OPTION' and 'ANALYZER_OPTION_DEPENDS_ON_USER_MODE' macros! 29#endif 30#endif 31 32#ifndef ANALYZER_OPTION 33/// Create a new analyzer option, but dont generate a method for it in 34/// AnalyzerOptions. 35/// 36/// TYPE - The type of the option object that will be stored in 37/// AnalyzerOptions. This file is expected to be icluded in translation 38/// units where AnalyzerOptions.h is included, so types from that 39/// header should be used. 40/// NAME - The name of the option object. 41/// CMDFLAG - The command line flag for the option. 42/// (-analyzer-config CMDFLAG=VALUE) 43/// DESC - Description of the flag. 44/// DEFAULT_VAL - The default value for CMDFLAG. 45#define ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, DEFAULT_VAL) 46#endif 47 48#ifndef ANALYZER_OPTION_DEPENDS_ON_USER_MODE 49/// Create a new analyzer option, but dont generate a method for it in 50/// AnalyzerOptions. It's value depends on the option "user-mode". 51/// 52/// TYPE - The type of the option object that will be stored in 53/// AnalyzerOptions. This file is expected to be icluded in translation 54/// units where AnalyzerOptions.h is included, so types from that 55/// header should be used. 56/// NAME - The name of the option object. 57/// CMDFLAG - The command line flag for the option. 58/// (-analyzer-config CMDFLAG=VALUE) 59/// DESC - Description of the flag. 60/// SHALLOW_VAL - The default value for CMDFLAG, when "user-mode" was set to 61/// "shallow". 62/// DEEP_VAL - The default value for CMDFLAG, when "user-mode" was set to 63/// "deep". 64#define ANALYZER_OPTION_DEPENDS_ON_USER_MODE(TYPE, NAME, CMDFLAG, DESC, \ 65 SHALLOW_VAL, DEEP_VAL) 66#endif 67 68//===----------------------------------------------------------------------===// 69// The "mode" option. Since some options depend on this, we list it on top of 70// this file in order to make sure that the generated field for it is 71// initialized before the rest. 72//===----------------------------------------------------------------------===// 73 74ANALYZER_OPTION( 75 StringRef, UserMode, "mode", 76 "(string) Controls the high-level analyzer mode, which influences the " 77 "default settings for some of the lower-level config options (such as " 78 "IPAMode). Value: \"deep\", \"shallow\".", 79 "deep") 80 81//===----------------------------------------------------------------------===// 82// Boolean analyzer options. 83//===----------------------------------------------------------------------===// 84 85ANALYZER_OPTION(bool, ShouldIncludeImplicitDtorsInCFG, "cfg-implicit-dtors", 86 "Whether or not implicit destructors for C++ objects " 87 "should be included in the CFG.", 88 true) 89 90ANALYZER_OPTION(bool, ShouldIncludeTemporaryDtorsInCFG, "cfg-temporary-dtors", 91 "Whether or not the destructors for C++ temporary " 92 "objects should be included in the CFG.", 93 true) 94 95ANALYZER_OPTION( 96 bool, ShouldIncludeLifetimeInCFG, "cfg-lifetime", 97 "Whether or not end-of-lifetime information should be included in the CFG.", 98 false) 99 100ANALYZER_OPTION(bool, ShouldIncludeLoopExitInCFG, "cfg-loopexit", 101 "Whether or not the end of the loop information should " 102 "be included in the CFG.", 103 false) 104 105ANALYZER_OPTION(bool, ShouldIncludeRichConstructorsInCFG, 106 "cfg-rich-constructors", 107 "Whether or not construction site information should be " 108 "included in the CFG C++ constructor elements.", 109 true) 110 111ANALYZER_OPTION( 112 bool, ShouldIncludeScopesInCFG, "cfg-scopes", 113 "Whether or not scope information should be included in the CFG.", false) 114 115ANALYZER_OPTION(bool, ShouldIncludeDefaultInitForAggregates, 116 "cfg-expand-default-aggr-inits", 117 "Whether or not inline CXXDefaultInitializers for aggregate " 118 "initialization in the CFG.", 119 false) 120 121ANALYZER_OPTION( 122 bool, MayInlineTemplateFunctions, "c++-template-inlining", 123 "Whether or not templated functions may be considered for inlining.", true) 124 125ANALYZER_OPTION(bool, MayInlineCXXStandardLibrary, "c++-stdlib-inlining", 126 "Whether or not C++ standard library functions may be " 127 "considered for inlining.", 128 true) 129 130ANALYZER_OPTION(bool, MayInlineCXXAllocator, "c++-allocator-inlining", 131 "Whether or not allocator and deallocator calls may be " 132 "considered for inlining.", 133 true) 134 135ANALYZER_OPTION( 136 bool, MayInlineCXXSharedPtrDtor, "c++-shared_ptr-inlining", 137 "Whether or not the destructor of C++ 'shared_ptr' may be considered for " 138 "inlining. This covers std::shared_ptr, std::tr1::shared_ptr, and " 139 "boost::shared_ptr, and indeed any destructor named '~shared_ptr'.", 140 false) 141 142ANALYZER_OPTION(bool, MayInlineCXXTemporaryDtors, "c++-temp-dtor-inlining", 143 "Whether C++ temporary destructors should be inlined " 144 "during analysis. If temporary destructors are disabled " 145 "in the CFG via the 'cfg-temporary-dtors' option, " 146 "temporary destructors would not be inlined anyway.", 147 true) 148 149ANALYZER_OPTION( 150 bool, ShouldSuppressNullReturnPaths, "suppress-null-return-paths", 151 "Whether or not paths that go through null returns should be suppressed. " 152 "This is a heuristic for avoiding bug reports with paths that go through " 153 "inlined functions that are more defensive than their callers.", 154 true) 155 156ANALYZER_OPTION( 157 bool, ShouldAvoidSuppressingNullArgumentPaths, 158 "avoid-suppressing-null-argument-paths", 159 "Whether a bug report should not be suppressed if its path includes a call " 160 "with a null argument, even if that call has a null return. This option " 161 "has no effect when ShouldSuppressNullReturnPaths is false. This is a " 162 "counter-heuristic to avoid false negatives.", 163 false) 164 165ANALYZER_OPTION(bool, ShouldSuppressInlinedDefensiveChecks, 166 "suppress-inlined-defensive-checks", 167 "Whether or not diagnostics containing inlined " 168 "defensive NULL checks should be suppressed.", 169 true) 170 171ANALYZER_OPTION(bool, MayInlineCXXContainerMethods, "c++-container-inlining", 172 "Whether or not methods of C++ container objects may be " 173 "considered for inlining.", 174 false) 175 176ANALYZER_OPTION(bool, ShouldSuppressFromCXXStandardLibrary, 177 "suppress-c++-stdlib", 178 "Whether or not diagnostics reported within the C++ " 179 "standard library should be suppressed.", 180 true) 181 182ANALYZER_OPTION(bool, ShouldCrosscheckWithZ3, "crosscheck-with-z3", 183 "Whether bug reports should be crosschecked with the Z3 " 184 "constraint manager backend.", 185 false) 186 187ANALYZER_OPTION( 188 unsigned, Z3CrosscheckEQClassTimeoutThreshold, 189 "crosscheck-with-z3-eqclass-timeout-threshold", 190 "Set a timeout for bug report equivalence classes in milliseconds. " 191 "If we exhaust this threshold, we will drop the bug report eqclass " 192 "instead of doing more Z3 queries. Setting this to 700 ms in conjunction " 193 "with \"crosscheck-with-z3-timeout-threshold\" of 300 ms, would nicely " 194 "guarantee that no bug report equivalence class can take longer than " 195 "1 second, effectively mitigating Z3 hangs during refutation. " 196 "If there were Z3 retries, only the minimum query time is considered " 197 "when accumulating query times within a report equivalence class. " 198 "Set 0 for no timeout.", 0) 199 200ANALYZER_OPTION( 201 unsigned, Z3CrosscheckTimeoutThreshold, 202 "crosscheck-with-z3-timeout-threshold", 203 "Set a timeout for individual Z3 queries in milliseconds. " 204 "On fast machines, 300 worked well in some cases. " 205 "The lower it is, the higher the chances of having flaky issues. " 206 "Having no timeout may hang the analyzer indefinitely. " 207 "Set 0 for no timeout.", 15'000) 208 209ANALYZER_OPTION( 210 unsigned, Z3CrosscheckRLimitThreshold, 211 "crosscheck-with-z3-rlimit-threshold", 212 "Set the Z3 resource limit threshold. This sets a supposedly deterministic " 213 "cutoff point for Z3 queries, as longer queries usually consume more " 214 "resources. " 215 "400'000 should on average make Z3 queries run for up to 100ms on modern " 216 "hardware. Set 0 for unlimited.", 0) 217 218ANALYZER_OPTION( 219 PositiveAnalyzerOption, Z3CrosscheckMaxAttemptsPerQuery, 220 "crosscheck-with-z3-max-attempts-per-query", 221 "Set how many times the oracle is allowed to run a Z3 query. " 222 "This must be a positive value. Set 1 to not allow any retry attempts. " 223 "Increasing the number of attempts is often more effective at reducing " 224 "the number of nondeterministic diagnostics than " 225 "\"crosscheck-with-z3-timeout-threshold\" in practice.", 3) 226 227ANALYZER_OPTION(bool, ShouldReportIssuesInMainSourceFile, 228 "report-in-main-source-file", 229 "Whether or not the diagnostic report should be always " 230 "reported in the main source file and not the headers.", 231 false) 232 233ANALYZER_OPTION(bool, ShouldWriteStableReportFilename, "stable-report-filename", 234 "Deprecated: report filenames are now always stable. " 235 "See also 'verbose-report-filename'.", 236 false) 237 238ANALYZER_OPTION(bool, ShouldWriteVerboseReportFilename, "verbose-report-filename", 239 "Whether or not the report filename should contain extra " 240 "information about the issue.", 241 false) 242 243ANALYZER_OPTION( 244 bool, ShouldSerializeStats, "serialize-stats", 245 "Whether the analyzer should serialize statistics to plist output. " 246 "Statistics would be serialized in JSON format inside the main dictionary " 247 "under the statistics key. Available only if compiled in assert mode or " 248 "with LLVM statistics explicitly enabled.", 249 false) 250 251ANALYZER_OPTION(bool, MayInlineObjCMethod, "objc-inlining", 252 "Whether ObjectiveC inlining is enabled, false otherwise.", 253 true) 254 255ANALYZER_OPTION(bool, ShouldPrunePaths, "prune-paths", 256 "Whether irrelevant parts of a bug report path should " 257 "be pruned out of the final output.", 258 true) 259 260ANALYZER_OPTION(bool, ShouldAddPopUpNotes, "add-pop-up-notes", 261 "Whether pop-up notes should be added to the final output.", 262 true) 263 264ANALYZER_OPTION( 265 bool, ShouldConditionalizeStaticInitializers, 266 "cfg-conditional-static-initializers", 267 "Whether 'static' initializers should be in conditional logic in the CFG.", 268 true) 269 270ANALYZER_OPTION(bool, ShouldSynthesizeBodies, "faux-bodies", 271 "Whether the analyzer engine should synthesize fake " 272 "bodies for well-known functions.", 273 true) 274 275ANALYZER_OPTION( 276 bool, ShouldElideConstructors, "elide-constructors", 277 "Whether elidable C++ copy-constructors and move-constructors should be " 278 "actually elided during analysis. Both behaviors are allowed by the C++ " 279 "standard, and the analyzer, like CodeGen, defaults to eliding. Starting " 280 "with C++17 some elisions become mandatory, and in these cases the option " 281 "will be ignored.", 282 true) 283 284ANALYZER_OPTION( 285 bool, ShouldInlineLambdas, "inline-lambdas", 286 "Whether lambdas should be inlined. Otherwise a sink node will be " 287 "generated each time a LambdaExpr is visited.", 288 true) 289 290ANALYZER_OPTION(bool, ShouldWidenLoops, "widen-loops", 291 "Whether the analysis should try to widen loops.", false) 292 293ANALYZER_OPTION( 294 bool, ShouldUnrollLoops, "unroll-loops", 295 "Whether the analysis should try to unroll loops with known bounds.", false) 296 297ANALYZER_OPTION( 298 bool, ShouldDisplayNotesAsEvents, "notes-as-events", 299 "Whether the bug reporter should transparently treat extra note diagnostic " 300 "pieces as event diagnostic pieces. Useful when the diagnostic consumer " 301 "doesn't support the extra note pieces.", 302 false) 303 304ANALYZER_OPTION( 305 bool, ShouldAggressivelySimplifyBinaryOperation, 306 "aggressive-binary-operation-simplification", 307 "Whether SValBuilder should rearrange comparisons and additive operations " 308 "of symbolic expressions which consist of a sum of a symbol and a concrete " 309 "integer into the format where symbols are on the left-hand side and the " 310 "integer is on the right. This is only done if both symbols and both " 311 "concrete integers are signed, greater than or equal to the quarter of the " 312 "minimum value of the type and less than or equal to the quarter of the " 313 "maximum value of that type. A + n <OP> B + m becomes A - B <OP> m - n, " 314 "where A and B symbolic, n and m are integers. <OP> is any of '==', '!=', " 315 "'<', '<=', '>', '>=', '+' or '-'. The rearrangement also happens with '-' " 316 "instead of '+' on either or both side and also if any or both integers " 317 "are missing.", 318 false) 319 320ANALYZER_OPTION( 321 bool, ShouldEagerlyAssume, "eagerly-assume", 322 "If this is enabled (the default behavior), when the analyzer encounters " 323 "a comparison operator or logical negation, it immediately splits the " 324 "state to separate the case when the expression is true and the case when " 325 "it's false. The upside is that this can increase analysis precision until " 326 "we have a better way to lazily evaluate such logic; the downside is that " 327 "it eagerly bifurcates paths.", 328 true) 329 330ANALYZER_OPTION( 331 bool, IsNaiveCTUEnabled, "experimental-enable-naive-ctu-analysis", 332 "Whether naive cross translation unit analysis is enabled. This is an " 333 "experimental feature to inline functions from other translation units.", 334 false) 335 336ANALYZER_OPTION(bool, ShouldDisplayMacroExpansions, "expand-macros", 337 "Whether macros related to the bugpath should be " 338 "expanded and included in the plist output.", 339 false) 340 341ANALYZER_OPTION(bool, DisplayCTUProgress, "display-ctu-progress", 342 "Whether to emit verbose output about " 343 "the analyzer's progress related to ctu.", 344 false) 345 346ANALYZER_OPTION(bool, ShouldTrackConditions, "track-conditions", 347 "Whether to track conditions that are a control dependency of " 348 "an already tracked variable.", 349 true) 350 351ANALYZER_OPTION(bool, ShouldTrackConditionsDebug, "track-conditions-debug", 352 "Whether to place an event at each tracked condition.", 353 false) 354 355ANALYZER_OPTION(bool, ShouldApplyFixIts, "apply-fixits", 356 "Apply the fix-it hints to the files", 357 false) 358 359ANALYZER_OPTION(bool, ShouldDisplayCheckerNameForText, "display-checker-name", 360 "Display the checker name for textual outputs", 361 true) 362 363ANALYZER_OPTION(bool, ShouldSupportSymbolicIntegerCasts, 364 "support-symbolic-integer-casts", 365 "Produce cast symbols for integral types.", 366 false) 367 368ANALYZER_OPTION( 369 bool, ShouldAssumeControlledEnvironment, "assume-controlled-environment", 370 "Whether the analyzed application runs in a controlled environment. " 371 "We will assume that environment variables exist in queries and they hold " 372 "no malicious data. For instance, if this option is enabled, 'getenv()' " 373 "might be modeled by the analyzer to never return NULL.", 374 false) 375 376ANALYZER_OPTION( 377 bool, ShouldIgnoreBisonGeneratedFiles, "ignore-bison-generated-files", 378 "If enabled, any files containing the \"/* A Bison parser, made by\" " 379 "won't be analyzed.", 380 true) 381 382ANALYZER_OPTION( 383 bool, ShouldIgnoreFlexGeneratedFiles, "ignore-flex-generated-files", 384 "If enabled, any files containing the \"/* A lexical scanner generated by " 385 "flex\" won't be analyzed.", 386 true) 387 388//===----------------------------------------------------------------------===// 389// Unsigned analyzer options. 390//===----------------------------------------------------------------------===// 391 392ANALYZER_OPTION(unsigned, CTUImportThreshold, "ctu-import-threshold", 393 "The maximal amount of translation units that is considered " 394 "for import when inlining functions during CTU analysis. " 395 "Lowering this threshold can alleviate the memory burden of " 396 "analysis with many interdependent definitions located in " 397 "various translation units. This is valid only for non C++ " 398 "source files.", 399 24u) 400 401ANALYZER_OPTION(unsigned, CTUImportCppThreshold, "ctu-import-cpp-threshold", 402 "The maximal amount of translation units that is considered " 403 "for import when inlining functions during CTU analysis of C++ " 404 "source files.", 405 8u) 406 407ANALYZER_OPTION( 408 unsigned, AlwaysInlineSize, "ipa-always-inline-size", 409 "The size of the functions (in basic blocks), which should be considered " 410 "to be small enough to always inline.", 411 3) 412 413ANALYZER_OPTION( 414 unsigned, GraphTrimInterval, "graph-trim-interval", 415 "How often nodes in the ExplodedGraph should be recycled to save memory. " 416 "To disable node reclamation, set the option to 0.", 417 1000) 418 419ANALYZER_OPTION( 420 unsigned, MinCFGSizeTreatFunctionsAsLarge, 421 "min-cfg-size-treat-functions-as-large", 422 "The number of basic blocks a function needs to have to be considered " 423 "large for the 'max-times-inline-large' config option.", 424 14) 425 426ANALYZER_OPTION(unsigned, MaxSymbolComplexity, "max-symbol-complexity", 427 "The maximum complexity of symbolic constraint.", 35) 428 429// HACK:https://discourse.llvm.org/t/rfc-make-istainted-and-complex-symbols-friends/79570 430// Ideally, we should get rid of this option soon. 431ANALYZER_OPTION(unsigned, MaxTaintedSymbolComplexity, "max-tainted-symbol-complexity", 432 "[DEPRECATED] The maximum complexity of a symbol to carry taint", 9) 433 434ANALYZER_OPTION(unsigned, MaxTimesInlineLarge, "max-times-inline-large", 435 "The maximum times a large function could be inlined.", 32) 436 437ANALYZER_OPTION_DEPENDS_ON_USER_MODE( 438 unsigned, MaxInlinableSize, "max-inlinable-size", 439 "The bound on the number of basic blocks in an inlined function.", 440 /* SHALLOW_VAL */ 4, /* DEEP_VAL */ 100) 441 442ANALYZER_OPTION_DEPENDS_ON_USER_MODE( 443 unsigned, MaxNodesPerTopLevelFunction, "max-nodes", 444 "The maximum number of nodes the analyzer can generate while exploring a " 445 "top level function (for each exploded graph). 0 means no limit.", 446 /* SHALLOW_VAL */ 75000, /* DEEP_VAL */ 225000) 447 448ANALYZER_OPTION( 449 unsigned, CTUMaxNodesPercentage, "ctu-max-nodes-pct", 450 "The percentage of single-TU analysed nodes that the CTU analysis is " 451 "allowed to visit.", 50) 452 453ANALYZER_OPTION( 454 unsigned, CTUMaxNodesMin, "ctu-max-nodes-min", 455 "The maximum number of nodes in CTU mode is determinded by " 456 "'ctu-max-nodes-pct'. However, if the number of nodes in single-TU " 457 "analysis is too low, it is meaningful to provide a minimum value that " 458 "serves as an upper bound instead.", 10000) 459 460ANALYZER_OPTION( 461 unsigned, RegionStoreSmallStructLimit, "region-store-small-struct-limit", 462 "The largest number of fields a struct can have and still be considered " 463 "small. This is currently used to decide whether or not it is worth forcing " 464 "a LazyCompoundVal on bind. To disable all small-struct-dependent " 465 "behavior, set the option to 0.", 466 2) 467 468ANALYZER_OPTION( 469 unsigned, RegionStoreSmallArrayLimit, "region-store-small-array-limit", 470 "The largest number of elements an array can have and still be considered " 471 "small. This is currently used to decide whether or not it is worth forcing " 472 "a LazyCompoundVal on bind. To disable all small-array-dependent " 473 "behavior, set the option to 0.", 474 5) 475 476//===----------------------------------------------------------------------===// 477// String analyzer options. 478//===----------------------------------------------------------------------===// 479 480ANALYZER_OPTION(StringRef, CTUDir, "ctu-dir", 481 "The directory containing the CTU related files.", "") 482 483ANALYZER_OPTION(StringRef, CTUIndexName, "ctu-index-name", 484 "The name of the file containing the CTU index of definitions. " 485 "The index file maps USR-names to identifiers. An identifier " 486 "can end with an '.ast' suffix, indicating the indentifier is " 487 "a path to a pch-dump. Otherwise the identifier is regarded as " 488 "path to a source file which is parsed on-demand. Relative " 489 "paths are prefixed with ctu-dir, absolute paths are used " 490 "unmodified during lookup.", 491 "externalDefMap.txt") 492 493ANALYZER_OPTION( 494 StringRef, CTUInvocationList, "ctu-invocation-list", 495 "The path to the YAML format file containing a mapping from source file " 496 "paths to command-line invocations represented as a list of arguments. " 497 "This invocation is used produce the source-file's AST in case on-demand " 498 "loading is performed. Example file-content: " 499 "{/main.cpp: [clang++, /main.cpp], other.cpp: [clang++, /other.cpp]}", 500 "invocations.yaml") 501 502ANALYZER_OPTION( 503 StringRef, ModelPath, "model-path", 504 "The analyzer can inline an alternative implementation written in C at the " 505 "call site if the called function's body is not available. This is a path " 506 "where to look for those alternative implementations (called models).", 507 "") 508 509ANALYZER_OPTION( 510 StringRef, CTUPhase1InliningMode, "ctu-phase1-inlining", 511 "Controls which functions will be inlined during the first phase of the ctu " 512 "analysis. " 513 "If the value is set to 'all' then all foreign functions are inlinied " 514 "immediately during the first phase, thus rendering the second phase a noop. " 515 "The 'ctu-max-nodes-*' budge has no effect in this case. " 516 "If the value is 'small' then only functions with a linear CFG and with a " 517 "limited number of statements would be inlined during the first phase. The " 518 "long and/or nontrivial functions are handled in the second phase and are " 519 "controlled by the 'ctu-max-nodes-*' budge. " 520 "The value 'none' means that all foreign functions are inlined only in the " 521 "second phase, 'ctu-max-nodes-*' budge limits the second phase. " 522 "Value: \"none\", \"small\", \"all\".", 523 "small") 524 525ANALYZER_OPTION( 526 StringRef, CXXMemberInliningMode, "c++-inlining", 527 "Controls which C++ member functions will be considered for inlining. " 528 "Value: \"constructors\", \"destructors\", \"methods\".", 529 "destructors") 530 531ANALYZER_OPTION( 532 StringRef, ExplorationStrategy, "exploration_strategy", 533 "Value: \"dfs\", \"bfs\", \"unexplored_first\", " 534 "\"unexplored_first_queue\", \"unexplored_first_location_queue\", " 535 "\"bfs_block_dfs_contents\".", 536 "unexplored_first_queue") 537 538ANALYZER_OPTION( 539 StringRef, RawSilencedCheckersAndPackages, "silence-checkers", 540 "A semicolon separated list of checker and package names to silence. " 541 "Silenced checkers will not emit reports, but the modeling remain enabled.", 542 "") 543 544ANALYZER_OPTION_DEPENDS_ON_USER_MODE( 545 StringRef, IPAMode, "ipa", 546 "Controls the mode of inter-procedural analysis. Value: \"none\", " 547 "\"basic-inlining\", \"inlining\", \"dynamic\", \"dynamic-bifurcate\".", 548 /* SHALLOW_VAL */ "inlining", /* DEEP_VAL */ "dynamic-bifurcate") 549 550#undef ANALYZER_OPTION_DEPENDS_ON_USER_MODE 551#undef ANALYZER_OPTION 552