In my checker I am analyzing the LocationContext object to get the chain of functions which were called up to the current program point (similar to what LocationContext::dumpStack() does).
Of course, when analyzing a single source file, the chain contains only local functions.
But is there a way to get the whole (global) chain?
I know there is a patch for cross translational unit analysis (https://reviews.llvm.org/D30691) but I still have’t been able to dump the whole stack.
We don't have the global chain because we don't analyze the program starting from main() - we only have a look at individual functions and see if there are any defects that we can prove by looking at just those functions and their direct or indirect *callees*, without trying to guess their *callers*. `LocationContext::dumpStack()` prints all stack frames that we see, in all cases, starting from the beginning of the current "analysis" (the "analysis" is a single choice of a top-level functions, and currently we conduct multiple analysis per translation unit until all functions in the translation unit were covered either as top-level functions or as callees). Even when the cross-translation-unit patch lands, the location context chain would contain the whole stack, and we still wouldn't be analyzing the whole program from main(), we'd just behave better when those callees are not in the same translation unit, but we'd still begin our analysis from pretty much arbitrary individual functions.