[cfe-commits] r148093 - in /cfe/trunk: lib/CodeGen/CGRecordLayoutBuilder.cpp test/CodeGenCXX/empty-union.cpp
Eli Friedman
eli.friedman at gmail.com
Thu Jan 12 19:58:31 PST 2012
Author: efriedma
Date: Thu Jan 12 21:58:31 2012
New Revision: 148093
URL: http://llvm.org/viewvc/llvm-project?rev=148093&view=rev
Log:
A base subobject type doesn't make sense for unions; don't try to compute it. Based on patch by Yin Ma. Fixes PR11751.
Modified:
cfe/trunk/lib/CodeGen/CGRecordLayoutBuilder.cpp
cfe/trunk/test/CodeGenCXX/empty-union.cpp
Modified: cfe/trunk/lib/CodeGen/CGRecordLayoutBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGRecordLayoutBuilder.cpp?rev=148093&r1=148092&r2=148093&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGRecordLayoutBuilder.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGRecordLayoutBuilder.cpp Thu Jan 12 21:58:31 2012
@@ -997,7 +997,7 @@
// If we're in C++, compute the base subobject type.
llvm::StructType *BaseTy = 0;
- if (isa<CXXRecordDecl>(D)) {
+ if (isa<CXXRecordDecl>(D) && !D->isUnion()) {
BaseTy = Builder.BaseSubobjectType;
if (!BaseTy) BaseTy = Ty;
}
Modified: cfe/trunk/test/CodeGenCXX/empty-union.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/empty-union.cpp?rev=148093&r1=148092&r2=148093&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/empty-union.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/empty-union.cpp Thu Jan 12 21:58:31 2012
@@ -1,10 +1,7 @@
// RUN: %clang_cc1 -emit-llvm -o - %s
union sigval { };
+union sigval Test1;
-union sigval sigev_value;
-
-int main()
-{
- return sizeof(sigev_value);
-}
+union NonPODUnion { ~NonPODUnion(); };
+union NonPODUnion Test2;
More information about the cfe-commits
mailing list