================
@@ -731,6 +702,11 @@ void AnalysisConsumer::HandleCode(Decl *D, AnalysisMode
Mode,
if (Mgr->getAnalysisDeclContext(D)->isBodyAutosynthesized())
return;
+ // CFG pruning and AST-based checks need these values before Store reads.
+ if (Opts.IsNaiveCTUEnabled && (Mode & AM_Syntax))
+ CTU.importReferencedInitializers(
+ D->getBody(), Opts.CTUDir, Opts.CTUIndexName, Opts.DisplayCTUProgress);
----------------
NagyDonat wrote:
> An unused declaration alone no longer triggers an import.
This is an important improvement, and skipping unevaluated code is also useful.
> However, yes, this preparation can still exhaust the shared CTU budget before
> function definitions are requested. In fact, the condition is `AM_Syntax`,
> rather than whether any AST-based checker is enabled, so it can also happen
> with only path-sensitive checkers enabled. This patch removes the imports
> caused by unused declarations; it does not establish priority for function
> imports.
This is perfectly acceptable for now.
> A checker opt-in or more targeted preparation would be worth considering in a
> follow-up. We would also need to account for CFG pruning, since removing this
> preparation outright would lose the existing dead-store behavior.
This can happen in follow-up patches if the budget exhaustion still causes
trouble after merging this PR.
https://github.com/llvm/llvm-project/pull/231393
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits