[PATCH] D37897: [StaticAnalyzer] Fix ProgramState for static variables that are not written
Daniel Marjamäki via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 12 08:52:30 PDT 2017
danielmarjamaki added inline comments.
================
Comment at: lib/StaticAnalyzer/Core/ExprEngine.cpp:123
+ // Is variable changed anywhere in TU?
+ for (const Decl *D : AMgr.getASTContext().getTranslationUnitDecl()->decls()) {
+ if (isChanged(D, VD))
----------------
dcoughlin wrote:
> Since you are calling `getInitialStateForGlobalStaticVar()` in `getInitialState()` for each static variable declaration and `getInitialState()` is called for each top-level function, you are doing an n^3 operation in the size of the translation unit, which is going to be very, very expensive for large translation units.
>
> Have you considered doing the analysis for static variables that are never changed during call-graph construction? This should be a linear operation and doing it during call-graph construction would avoid an extra walk of the entire translation unit.
hmm... could you tell me where the call-graph construction is that I can tweak?
Repository:
rL LLVM
https://reviews.llvm.org/D37897
More information about the cfe-commits
mailing list