================
@@ -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

Reply via email to