================
@@ -474,4 +504,22 @@ bool TrivialFunctionAnalysis::isTrivialImpl(
   return Result;
 }
 
+bool TrivialFunctionAnalysis::isTrivialImpl(
+    const Stmt *S, TrivialFunctionAnalysis::CacheTy &Cache) {
+  // If the statement isn't in the cache, conservatively assume that
+  // it's not trivial until analysis completes. Unlike a function case,
+  // we don't insert an entry into the cache until Visit returns
+  // since Visit* functions themselves make use of the cache.
----------------
haoNoQ wrote:

>  ```
> // If the statement isn't in the cache, conservatively assume that
> // it's not trivial until analysis completes.
> ```

This comment should probably be moved to `WithCachedResult()` where the 
false-by-default insertion actually takes place. (Not sure if it was clear that 
my original comment was talking about that insertion specifically. If it wasn't 
clear, it was probably a bad comment that needed to be phrased differently in 
the other function as well.)

> ```
> //                                            Unlike a function case,
> // we don't insert an entry into the cache until Visit returns
> // since Visit* functions themselves make use of the cache.
> ```

We can probably avoid double insert/lookup by skipping this insert/lookup 
entirely. Just rely on `Visit()` to do the bookkeeping.

But at the same time, it's nice that your code guarantees *some* caching even 
when we forget to cache a specific statement. It's a property we'd lose if we 
simply remove this global insert-lookup.

So I wonder if you can replace it with an *assertion* instead? Something like:
```
bool Result = V.Visit(S);
assert(Cache.contains(S) && "Top-level statement not properly cached!");
return Result;
```
This may actively help us find forgotten `WithCachedResult()` calls instead of 
silently accepting them.

https://github.com/llvm/llvm-project/pull/82229
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to