]> granicus.if.org Git - clang/commitdiff
Some code refactoring per Daniel's feedback.
authorFariborz Jahanian <fjahanian@apple.com>
Sat, 25 Jul 2009 01:08:28 +0000 (01:08 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Sat, 25 Jul 2009 01:08:28 +0000 (01:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77030 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/DeclCXX.cpp

index 7bbc76cb8314991242cb1a70d67589883f6022b7..8988098dd082357fe3798611ec0cc62d40570b5d 100644 (file)
@@ -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;
     }