summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitri Gribenko <gribozavr@gmail.com>2013-12-19 01:58:52 +0000
committerDmitri Gribenko <gribozavr@gmail.com>2013-12-19 01:58:52 +0000
commit092ab4a9fe43493b3d884baee34b9c0373f22c3b (patch)
tree384269302059578bb5deb8e003229eb83846aa88
parentfeae63d8572f9e79896aaf4c3945b050db7a5035 (diff)
downloadbcm5719-llvm-092ab4a9fe43493b3d884baee34b9c0373f22c3b.tar.gz
bcm5719-llvm-092ab4a9fe43493b3d884baee34b9c0373f22c3b.zip
Simplify CXXMethodDecl::isVirtual() for __interface case
llvm-svn: 197643
-rw-r--r--clang/include/clang/AST/DeclCXX.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h
index 53c127e2cc9..75f20e2462c 100644
--- a/clang/include/clang/AST/DeclCXX.h
+++ b/clang/include/clang/AST/DeclCXX.h
@@ -1692,9 +1692,9 @@ public:
CXXMethodDecl *CD =
cast<CXXMethodDecl>(const_cast<CXXMethodDecl*>(this)->getCanonicalDecl());
- // Methods declared in interfaces are automatically (pure) virtual.
- if (CD->isVirtualAsWritten() ||
- (CD->getParent()->isInterface() && CD->isUserProvided()))
+ // Member function is virtual if it is marked explicitly so, or if it is
+ // declared in __interface -- then it is automatically pure virtual.
+ if (CD->isVirtualAsWritten() || CD->isPure())
return true;
return (CD->begin_overridden_methods() != CD->end_overridden_methods());
OpenPOWER on IntegriCloud