]> granicus.if.org Git - clang/commitdiff
Correctly initialize the PrimaryBaseInfo if a base is null. Fixes PR5832.
authorAnders Carlsson <andersca@mac.com>
Sat, 19 Dec 2009 02:13:41 +0000 (02:13 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 19 Dec 2009 02:13:41 +0000 (02:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91748 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/RecordLayout.h
test/CodeGenCXX/virtual-function-calls.cpp

index a8334b694080b6ac001d8f980598cdf6a79f2e93..e8d1788ded8855a9a8691af02944267aa70e05d5 100644 (file)
@@ -53,7 +53,7 @@ public:
     PrimaryBaseInfo() {}
 
     PrimaryBaseInfo(const CXXRecordDecl *Base, bool IsVirtual)
-      : Value(Base, IsVirtual) {}
+      : Value(Base, Base && IsVirtual) {}
 
     /// Value - Points to the primary base. The single-bit value
     /// will be non-zero when the primary base is virtual.
index b927dec8f106008b1b8cb136d48666672190d88e..0b3a684301eb216bd97a04ee5dc4c24d2af707ad 100644 (file)
@@ -9,3 +9,11 @@ void f(A *a) {
   // CHECK: call void %
   a->f('c');
 }
+
+struct B : virtual A { 
+  virtual void f();
+};
+
+void f(B * b) {
+  b->f();
+}
\ No newline at end of file