summaryrefslogtreecommitdiff
path: root/compilerplugins
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2014-07-02 19:19:17 +0200
committerStephan Bergmann <sbergman@redhat.com>2014-07-02 19:19:17 +0200
commit4da8281d5a93bb3d253be348cd6cc444546121b7 (patch)
treea90c0dd721a04516ab6f1ab36202a481e788b7e9 /compilerplugins
parent37b18359728b06091de02156053f2e0eecc556ed (diff)
compat for Clang 3.2
Change-Id: I2746abd05edd00dadfe613c17b9874b1035c3be4
Diffstat (limited to 'compilerplugins')
-rw-r--r--compilerplugins/clang/compat.hxx20
-rw-r--r--compilerplugins/clang/salbool.cxx6
2 files changed, 24 insertions, 2 deletions
diff --git a/compilerplugins/clang/compat.hxx b/compilerplugins/clang/compat.hxx
index 7389f636d0bf..5533e8f2890e 100644
--- a/compilerplugins/clang/compat.hxx
+++ b/compilerplugins/clang/compat.hxx
@@ -160,6 +160,26 @@ inline std::unique_ptr<llvm::raw_fd_ostream> create_raw_fd_ostream(
#endif
}
+inline clang::NamedDecl * const * begin(
+ clang::DeclContextLookupConstResult const & result)
+{
+#if (__clang_major__ == 3 && __clang_minor__ >= 3) || __clang_major__ > 3
+ return result.begin();
+#else
+ return result.first;
+#endif
+}
+
+inline clang::NamedDecl * const * end(
+ clang::DeclContextLookupConstResult const & result)
+{
+#if (__clang_major__ == 3 && __clang_minor__ >= 3) || __clang_major__ > 3
+ return result.end();
+#else
+ return result.second;
+#endif
+}
+
}
#endif
diff --git a/compilerplugins/clang/salbool.cxx b/compilerplugins/clang/salbool.cxx
index f8ae35e41957..5eddba6b5379 100644
--- a/compilerplugins/clang/salbool.cxx
+++ b/compilerplugins/clang/salbool.cxx
@@ -72,8 +72,10 @@ OverrideKind getOverrideKind(FunctionDecl const * decl) {
// encounter in practice:
bool hasBoolOverload(FunctionDecl const * decl, bool mustBeDeleted) {
unsigned n = decl->getNumParams();
- for (auto d: decl->getDeclContext()->lookup(decl->getDeclName())) {
- FunctionDecl const * f = dyn_cast<FunctionDecl>(d);
+ DeclContextLookupConstResult res
+ = decl->getDeclContext()->lookup(decl->getDeclName());
+ for (auto d = compat::begin(res); d != compat::end(res); ++d) {
+ FunctionDecl const * f = dyn_cast<FunctionDecl>(*d);
if (f != nullptr && (!mustBeDeleted || f->isDeleted())) {
if (f->getNumParams() == n) {
bool hasSB = false;