diff options
author | Artem Dergachev <artem.dergachev@gmail.com> | 2018-10-20 00:29:24 +0000 |
---|---|---|
committer | Artem Dergachev <artem.dergachev@gmail.com> | 2018-10-20 00:29:24 +0000 |
commit | 25dac79edf0c7b8c8481ce358c074352c7289006 (patch) | |
tree | 13541c314e8bce2393463f2ab2db2e26ad7503a3 /clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp | |
parent | 8d6ff4c0af843e1a61b76d89812aed91e358de34 (diff) | |
download | bcm5719-llvm-25dac79edf0c7b8c8481ce358c074352c7289006.tar.gz bcm5719-llvm-25dac79edf0c7b8c8481ce358c074352c7289006.zip |
[analyzer] Be more plugin-friendly by moving static locals into .cpp files.
The GDMIndex functions return a pointer that's used as a key for looking up
data, but addresses of local statics defined in header files aren't the same
across shared library boundaries and the result is that analyzer plugins
can't access this data.
Event types are uniqued by using the addresses of a local static defined
in a header files, but it isn't the same across shared library boundaries
and plugins can't currently handle ImplicitNullDerefEvents.
Patches by Joe Ranieri!
Differential Revision: https://reviews.llvm.org/D52905
Differential Revision: https://reviews.llvm.org/D52906
llvm-svn: 344823
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp b/clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp index f99853f0707..146dc20ad02 100644 --- a/clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp +++ b/clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp @@ -200,6 +200,11 @@ void RangedConstraintManager::computeAdjustment(SymbolRef &Sym, } } +void *ProgramStateTrait<ConstraintRange>::GDMIndex() { + static int Index; + return &Index; +} + } // end of namespace ento } // end of namespace clang |