[clang] [analyzer] Workaround for unintended slowdown (scope increase) (PR #136720)

Donát Nagy via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 24 08:30:21 PDT 2025


================
@@ -2523,6 +2523,20 @@ bool ExprEngine::replayWithoutInlining(ExplodedNode *N,
   return true;
 }
 
+/// Return the innermost location context which is inlined at `Node`, unless
+/// it's the top-level (entry point) location context.
+static const LocationContext *getInlinedLocationContext(ExplodedNode *Node,
+                                                        ExplodedGraph &G) {
+  const LocationContext *CalleeLC = Node->getLocation().getLocationContext();
+  const LocationContext *RootLC =
----------------
NagyDonat wrote:

Very good questions!

I strongly suspect that in practice the graph always has only one root and the "multiple roots" representation is just one of the many pointlessly generic fragments that were added during the early development of the project – but I'm just moving this code to a helper function (because I need to call it from a second location) and I didn't check whether its assumptions are correct.

https://github.com/llvm/llvm-project/pull/136720


More information about the cfe-commits mailing list