diff options
author | Daniel Dunbar <daniel@zuster.org> | 2012-03-08 20:29:02 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2012-03-08 20:29:02 +0000 |
commit | e13edcb296522ab96c384c962c9eb1954962084c (patch) | |
tree | ca0c2a20559c93439cdbac01c54d533637098a25 | |
parent | a50a5cd9db67f061c94557d188b992be34ccad2f (diff) |
[AST] Clean up NamedDecl::getUnderlyingDecl() change a bit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152332 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/AST/Decl.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/include/clang/AST/Decl.h b/include/clang/AST/Decl.h index 7c042c1816..27a9d75f92 100644 --- a/include/clang/AST/Decl.h +++ b/include/clang/AST/Decl.h @@ -106,6 +106,9 @@ class NamedDecl : public Decl { /// constructor, Objective-C selector, etc.) DeclarationName Name; +private: + NamedDecl *getUnderlyingDeclImpl(); + protected: NamedDecl(Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N) : Decl(DK, DC, L), Name(N) { } @@ -324,12 +327,13 @@ public: /// \brief Looks through UsingDecls and ObjCCompatibleAliasDecls for /// the underlying named decl. NamedDecl *getUnderlyingDecl() { - if (!(this->getKind() == UsingShadow) && - !(this->getKind() == ObjCCompatibleAlias)) + // Fast-path the common case. + if (this->getKind() != UsingShadow && + this->getKind() != ObjCCompatibleAlias) return this; + return getUnderlyingDeclImpl(); } - NamedDecl *getUnderlyingDeclImpl(); const NamedDecl *getUnderlyingDecl() const { return const_cast<NamedDecl*>(this)->getUnderlyingDecl(); } |