diff options
author | Anders Carlsson <andersca@mac.com> | 2011-04-17 21:56:13 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2011-04-17 21:56:13 +0000 |
commit | eb9d81dff99d4996f41c93ce71b08aaf753cbae8 (patch) | |
tree | fe3e40eb514d18d044d137420eb6a0391a3f05ee /test/CodeGenCXX/pragma-pack.cpp | |
parent | 1741d7b3c88eda8891d30f5c920d55dfd54c62f0 (diff) |
When laying out bases in, always try the "base subobject" LLVM type. If it
turns out that a field or base needs to be laid out in the tail padding of
the base, CGRecordLayoutBuilder::ResizeLastBaseFieldIfNecessary will convert
it to an array of i8.
I've audited the new test results to make sure that they are still valid. I've
also verified that we pass a self-host with this change.
This (finally) fixes PR5589!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129673 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/pragma-pack.cpp')
-rw-r--r-- | test/CodeGenCXX/pragma-pack.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/test/CodeGenCXX/pragma-pack.cpp b/test/CodeGenCXX/pragma-pack.cpp index c0ddb1d855..c0b0259784 100644 --- a/test/CodeGenCXX/pragma-pack.cpp +++ b/test/CodeGenCXX/pragma-pack.cpp @@ -10,5 +10,7 @@ struct Sub : virtual Base { char c; }; -// CHECK: %struct.Sub = type <{ i32 (...)**, i8, [8 x i8] }> +// CHECK: %struct.Sub = type <{ i32 (...)**, i8, %struct.Base }> void f(Sub*) { } + +static int i[sizeof(Sub) == 13 ? 1 : -1]; |