|
@@ -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();
|
|
|
}
|