forked from OSchip/llvm-project
partially inline getAttrs() to speed up PR3810 (and lots of
other code presumably) by 4.3% llvm-svn: 67430
This commit is contained in:
parent
cfbe9e746f
commit
c2d987425d
|
@ -180,7 +180,10 @@ public:
|
|||
|
||||
bool hasAttrs() const { return HasAttrs; }
|
||||
void addAttr(Attr *attr);
|
||||
const Attr *getAttrs() const;
|
||||
const Attr *getAttrs() const {
|
||||
if (!HasAttrs) return 0; // common case, no attributes.
|
||||
return getAttrsImpl(); // Uncommon case, out of line hash lookup.
|
||||
}
|
||||
void swapAttrs(Decl *D);
|
||||
void invalidateAttrs();
|
||||
|
||||
|
@ -188,7 +191,6 @@ public:
|
|||
for (const Attr *attr = getAttrs(); attr; attr = attr->getNext())
|
||||
if (const T *V = dyn_cast<T>(attr))
|
||||
return V;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -326,6 +328,9 @@ protected:
|
|||
// FIXME: This will eventually be a pure virtual function.
|
||||
assert (false && "Not implemented.");
|
||||
}
|
||||
private:
|
||||
const Attr *getAttrsImpl() const;
|
||||
|
||||
};
|
||||
|
||||
/// PrettyStackTraceDecl - If a crash occurs, indicate that it happened when
|
||||
|
|
|
@ -171,10 +171,8 @@ void Decl::invalidateAttrs() {
|
|||
}
|
||||
}
|
||||
|
||||
const Attr *Decl::getAttrs() const {
|
||||
if (!HasAttrs)
|
||||
return 0;
|
||||
|
||||
const Attr *Decl::getAttrsImpl() const {
|
||||
assert(HasAttrs && "getAttrs() should verify this!");
|
||||
return (*DeclAttrs)[this];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue