[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