r220033 - Optimize Type::isStructureOrClassType() by reusing RT->getDecl().
Yaron Keren
yaron.keren at gmail.com
Fri Oct 17 04:44:45 PDT 2014
Author: yrnkrn
Date: Fri Oct 17 06:44:44 2014
New Revision: 220033
URL: http://llvm.org/viewvc/llvm-project?rev=220033&view=rev
Log:
Optimize Type::isStructureOrClassType() by reusing RT->getDecl().
RecordType->getDecl() which maps to TagType::getDecl() is not a simple
accessor but a loop on redecls in getInterestingTagDecl.
isStructureOrClassType() was calling getDecl() three times performing
three times the work actually required. It is optimized by calling
RT->getDecl() once and reusing the result three times.
Modified:
cfe/trunk/lib/AST/Type.cpp
Modified: cfe/trunk/lib/AST/Type.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Type.cpp?rev=220033&r1=220032&r2=220033&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Type.cpp (original)
+++ cfe/trunk/lib/AST/Type.cpp Fri Oct 17 06:44:44 2014
@@ -378,9 +378,10 @@ bool Type::isInterfaceType() const {
return false;
}
bool Type::isStructureOrClassType() const {
- if (const RecordType *RT = getAs<RecordType>())
- return RT->getDecl()->isStruct() || RT->getDecl()->isClass() ||
- RT->getDecl()->isInterface();
+ if (const RecordType *RT = getAs<RecordType>()) {
+ RecordDecl *RD = RT->getDecl();
+ return RD->isStruct() || RD->isClass() || RD->isInterface();
+ }
return false;
}
bool Type::isVoidPointerType() const {
More information about the cfe-commits
mailing list