diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-07-15 04:30:17 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-07-15 04:30:17 +0000 |
commit | 6d4766535fd5a0eca8cfda055b1feb72e83f231a (patch) | |
tree | 1d66c1791a62e647846902852627330eecec3cdc /clang/lib/AST/ExprCXX.cpp | |
parent | 5e9e56a0a128d03314d35f7ab5d0e64a5251f632 (diff) | |
download | bcm5719-llvm-6d4766535fd5a0eca8cfda055b1feb72e83f231a.tar.gz bcm5719-llvm-6d4766535fd5a0eca8cfda055b1feb72e83f231a.zip |
AST: Don't walk all redeclarations when looking for a uuid attr
No funcionality changed, just a simplification of the existing code.
llvm-svn: 213044
Diffstat (limited to 'clang/lib/AST/ExprCXX.cpp')
-rw-r--r-- | clang/lib/AST/ExprCXX.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp index c127b4a1dc0..54b043c3d56 100644 --- a/clang/lib/AST/ExprCXX.cpp +++ b/clang/lib/AST/ExprCXX.cpp @@ -64,17 +64,15 @@ const UuidAttr *CXXUuidofExpr::GetUuidAttrOfType(QualType QT, else if (QT->isArrayType()) Ty = Ty->getBaseElementTypeUnsafe(); - CXXRecordDecl *RD = Ty->getAsCXXRecordDecl(); + const CXXRecordDecl *RD = Ty->getAsCXXRecordDecl(); if (!RD) return nullptr; - // Loop over all record redeclarations looking for a uuid attribute. - for (const TagDecl *I : RD->redecls()) - if (const UuidAttr *Uuid = I->getAttr<UuidAttr>()) - return Uuid; + if (const UuidAttr *Uuid = RD->getMostRecentDecl()->getAttr<UuidAttr>()) + return Uuid; // __uuidof can grab UUIDs from template arguments. - if (ClassTemplateSpecializationDecl *CTSD = + if (const ClassTemplateSpecializationDecl *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(RD)) { const TemplateArgumentList &TAL = CTSD->getTemplateArgs(); const UuidAttr *UuidForRD = nullptr; |