diff options
author | Anders Carlsson <andersca@mac.com> | 2010-06-08 19:09:24 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2010-06-08 19:09:24 +0000 |
commit | 446872069f02a4ffa88d1f0844177f49535824a5 (patch) | |
tree | 7cc945a9ca5d54fba2e6e21ce20a5f29ac3660ff /clang/test/SemaCXX/empty-class-layout.cpp | |
parent | e869a182c2779557a55ceed30eed00ad6ff1f962 (diff) | |
download | bcm5719-llvm-446872069f02a4ffa88d1f0844177f49535824a5.tar.gz bcm5719-llvm-446872069f02a4ffa88d1f0844177f49535824a5.zip |
Correctly handle fields with virtual bases containing empty subobjects.
llvm-svn: 105628
Diffstat (limited to 'clang/test/SemaCXX/empty-class-layout.cpp')
-rw-r--r-- | clang/test/SemaCXX/empty-class-layout.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/clang/test/SemaCXX/empty-class-layout.cpp b/clang/test/SemaCXX/empty-class-layout.cpp index bc2d58abd9a..0b46bf045ac 100644 --- a/clang/test/SemaCXX/empty-class-layout.cpp +++ b/clang/test/SemaCXX/empty-class-layout.cpp @@ -117,4 +117,30 @@ struct B { A a; }; struct C : B, Empty { }; SA(0, sizeof(C) == 2); -}
\ No newline at end of file +} + +namespace Test5 { + +// Test that B::Empty isn't laid out at offset 0. +struct Empty { }; +struct Field : virtual Empty { }; +struct A { + Field f; +}; +struct B : A, Empty { }; +SA(0, sizeof(B) == 16); + +} + +namespace Test6 { + +// Test that B::A isn't laid out at offset 0. +struct Empty { }; +struct Field : virtual Empty { }; +struct A { + Field f; +}; +struct B : Empty, A { }; +SA(0, sizeof(B) == 16); + +} |