diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2009-07-25 01:08:28 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-07-25 01:08:28 +0000 |
commit | 08c6357918c8c4bf00ede6936c7b64c7d89e7c41 (patch) | |
tree | 73fd6d371ca325e9e7679330acf4992007e57a41 | |
parent | 7b3817d9cbc221c928da701d863bfefd20c0b6bb (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.cpp | 28 |
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; } |