[cfe-commits] r78873 - in /cfe/trunk: lib/AST/RecordLayoutBuilder.cpp test/CodeGenCXX/virt.cpp

Mike Stump mrs at apple.com
Wed Aug 12 17:34:15 PDT 2009


Author: mrs
Date: Wed Aug 12 19:34:14 2009
New Revision: 78873

URL: http://llvm.org/viewvc/llvm-project?rev=78873&view=rev
Log:
Refine virtual base layout.  WIP.

Modified:
    cfe/trunk/lib/AST/RecordLayoutBuilder.cpp
    cfe/trunk/test/CodeGenCXX/virt.cpp

Modified: cfe/trunk/lib/AST/RecordLayoutBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/RecordLayoutBuilder.cpp?rev=78873&r1=78872&r2=78873&view=diff

==============================================================================
--- cfe/trunk/lib/AST/RecordLayoutBuilder.cpp (original)
+++ cfe/trunk/lib/AST/RecordLayoutBuilder.cpp Wed Aug 12 19:34:14 2009
@@ -173,7 +173,7 @@
          e = RD->vbases_end(); i != e; ++i) {
     const CXXRecordDecl *Base = 
       cast<CXXRecordDecl>(i->getType()->getAs<RecordType>()->getDecl());
-    if (Base != PrimaryBase)
+    if (!PrimaryBaseWasVirtual || Base != PrimaryBase)
       LayoutVirtualBase(Base);
   }
 }

Modified: cfe/trunk/test/CodeGenCXX/virt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/virt.cpp?rev=78873&r1=78872&r2=78873&view=diff

==============================================================================
--- cfe/trunk/test/CodeGenCXX/virt.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/virt.cpp Wed Aug 12 19:34:14 2009
@@ -92,6 +92,17 @@
 // CHECK-LP64: movl $2, 8(%rax)
 
 
+struct test6_B2 { virtual void funcB2(); char b[1000]; };
+struct test6_B1 : virtual test6_B2 { virtual void funcB1(); };
+
+struct test6_D : test6_B2, virtual test6_B1 {
+};
+
+// CEHCK-LP32: .zerofill __DATA, __common, _d6, 2012, 4
+// CHECK-LP64: .zerofill __DATA, __common, _d6, 2024, 4
+
+
+
 struct test3_B3 { virtual void funcB3(); };
 struct test3_B2 : virtual test3_B3 { virtual void funcB2(); };
 struct test3_B1 : virtual test3_B2 { virtual void funcB1(); };
@@ -370,6 +381,7 @@
 // CHECK-LP64: .quad __ZN2D14bar5Ev
 
 
+test6_D d6;
 test5_D d5;
 test4_D d4;
 test3_D d3;





More information about the cfe-commits mailing list