aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-07-25 01:08:28 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-07-25 01:08:28 +0000
commit08c6357918c8c4bf00ede6936c7b64c7d89e7c41 (patch)
tree73fd6d371ca325e9e7679330acf4992007e57a41
parent7b3817d9cbc221c928da701d863bfefd20c0b6bb (diff)
Some code refactoring per Daniel's feedback.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77030 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/AST/DeclCXX.cpp28
1 files changed, 12 insertions, 16 deletions
diff --git a/lib/AST/DeclCXX.cpp b/lib/AST/DeclCXX.cpp
index 7bbc76cb83..8988098dd0 100644
--- a/lib/AST/DeclCXX.cpp
+++ b/lib/AST/DeclCXX.cpp
@@ -575,21 +575,19 @@ CXXConstructorDecl::setBaseOrMemberInitializers(
for (unsigned i = 0; i < NumInitializers; i++) {
CXXBaseOrMemberInitializer *Member = Initializers[i];
- const void * Key = Member->isBaseInitializer() ?
- reinterpret_cast<const void *>(
- Member->getBaseClass()->getAsRecordType()) :
- reinterpret_cast<const void *>(Member->getMember());
- AllBaseFields[Key] = Member;
+ if (Member->isBaseInitializer())
+ AllBaseFields[Member->getBaseClass()->getAsRecordType()] = Member;
+ else
+ AllBaseFields[Member->getMember()] = Member;
}
// Push virtual bases before others.
for (CXXRecordDecl::base_class_iterator VBase =
ClassDecl->vbases_begin(),
E = ClassDecl->vbases_end(); VBase != E; ++VBase) {
- const void *Key = reinterpret_cast<const void *>(
- VBase->getType()->getAsRecordType());
- if (AllBaseFields[Key])
- AllToInit.push_back(AllBaseFields[Key]);
+ if (CXXBaseOrMemberInitializer *Value =
+ AllBaseFields.lookup(VBase->getType()->getAsRecordType()))
+ AllToInit.push_back(Value);
else {
CXXRecordDecl *VBaseDecl =
cast<CXXRecordDecl>(VBase->getType()->getAsRecordType()->getDecl());
@@ -611,10 +609,9 @@ CXXConstructorDecl::setBaseOrMemberInitializers(
// Virtuals are in the virtual base list and already constructed.
if (Base->isVirtual())
continue;
- const void *Key = reinterpret_cast<const void *>(
- Base->getType()->getAsRecordType());
- if (AllBaseFields[Key])
- AllToInit.push_back(AllBaseFields[Key]);
+ if (CXXBaseOrMemberInitializer *Value =
+ AllBaseFields.lookup(Base->getType()->getAsRecordType()))
+ AllToInit.push_back(Value);
else {
CXXRecordDecl *BaseDecl =
cast<CXXRecordDecl>(Base->getType()->getAsRecordType()->getDecl());
@@ -633,9 +630,8 @@ CXXConstructorDecl::setBaseOrMemberInitializers(
// non-static data members.
for (CXXRecordDecl::field_iterator Field = ClassDecl->field_begin(),
E = ClassDecl->field_end(); Field != E; ++Field) {
- const void * Key = reinterpret_cast<const void *>(*Field);
- if (AllBaseFields[Key]) {
- AllToInit.push_back(AllBaseFields[Key]);
+ if (CXXBaseOrMemberInitializer *Value = AllBaseFields.lookup(*Field)) {
+ AllToInit.push_back(Value);
continue;
}