[cfe-commits] r152321 - in /cfe/trunk: include/clang/AST/Decl.h lib/AST/Decl.cpp
Benjamin Kramer
benny.kra at googlemail.com
Thu Mar 8 13:07:15 PST 2012
On 08.03.2012, at 21:34, Daniel Dunbar wrote:
> On Thu, Mar 8, 2012 at 11:30 AM, Benjamin Kramer
> <benny.kra at googlemail.com> wrote:
>>
>> On 08.03.2012, at 19:20, Daniel Dunbar wrote:
>>
>>> Author: ddunbar
>>> Date: Thu Mar 8 12:20:41 2012
>>> New Revision: 152321
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=152321&view=rev
>>> Log:
>>> [AST] Change NamedDecl::getUnderlyingDecl() to inline the fast (and incredibly common) path.
>>>
>>> Modified:
>>> cfe/trunk/include/clang/AST/Decl.h
>>> cfe/trunk/lib/AST/Decl.cpp
>>>
>>> Modified: cfe/trunk/include/clang/AST/Decl.h
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=152321&r1=152320&r2=152321&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/include/clang/AST/Decl.h (original)
>>> +++ cfe/trunk/include/clang/AST/Decl.h Thu Mar 8 12:20:41 2012
>>> @@ -323,7 +323,13 @@
>>>
>>> /// \brief Looks through UsingDecls and ObjCCompatibleAliasDecls for
>>> /// the underlying named decl.
>>> - NamedDecl *getUnderlyingDecl();
>>> + NamedDecl *getUnderlyingDecl() {
>>> + if (!(this->getKind() == UsingShadow) &&
>>> + !(this->getKind() == ObjCCompatibleAlias))
>>
>> x != y would be a little easier on the eyes than !(x == y)
>
> Indeed. Thanks.
>
>>
>>> + return this;
>>> + return getUnderlyingDeclImpl();
>>> + }
>>> + NamedDecl *getUnderlyingDeclImpl();
>>
>> The Impl method should be private …
>
> Also thanks.
>
>>
>>> const NamedDecl *getUnderlyingDecl() const {
>>> return const_cast<NamedDecl*>(this)->getUnderlyingDecl();
>>> }
>>>
>>> Modified: cfe/trunk/lib/AST/Decl.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Decl.cpp?rev=152321&r1=152320&r2=152321&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/lib/AST/Decl.cpp (original)
>>> +++ cfe/trunk/lib/AST/Decl.cpp Thu Mar 8 12:20:41 2012
>>> @@ -983,7 +983,7 @@
>>> return getLinkage() != NoLinkage;
>>> }
>>>
>>> -NamedDecl *NamedDecl::getUnderlyingDecl() {
>>> +NamedDecl *NamedDecl::getUnderlyingDeclImpl() {
>>> NamedDecl *ND = this;
>>> while (true) {
>>> if (UsingShadowDecl *UD = dyn_cast<UsingShadowDecl>(ND))
>>
>> … and can assume that ND is a UsingShadowDecl or ObjCCompatibleAliasDecl now, simplifying the code a bit.
>
> Meh, I thought about this, but I think it just makes the function more
> verbose for no gain. You still have to figure out which one it is to
> traverse down properly. Feel free to adjust if you see a clean change
> I am missing.
I see, the new assumption doesn't really help here. I committed a minor cleanup in r152339.
- Ben
>
> Fixed previous two issues in r152332.
>
> - Daniel
>
>>
>> - Ben
>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
More information about the cfe-commits
mailing list