summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2018-10-20 00:29:24 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2018-10-20 00:29:24 +0000
commit25dac79edf0c7b8c8481ce358c074352c7289006 (patch)
tree13541c314e8bce2393463f2ab2db2e26ad7503a3 /clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp
parent8d6ff4c0af843e1a61b76d89812aed91e358de34 (diff)
downloadbcm5719-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.cpp5
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
OpenPOWER on IntegriCloud