Author: andersca
Date: Sat Nov 21 17:56:04 2009
New Revision: 89569
URL: http://llvm.org/viewvc/llvm-project?rev=89569&view=rev
Log:
Support emitting aggregate class initializers. Fixes PR5581.
Modified:
cfe/trunk/lib/CodeGen/CGExprConstant.cpp
cfe/trunk/test/CodeGenCXX/const-init.cpp
Modified: cfe/trunk/lib/CodeGen/CGExprConstant.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprConstant.cpp?rev=89569&r1=89568&r2=89569&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGExprConstant.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExprConstant.cpp Sat Nov 21 17:56:04 2009
@@ -673,7 +673,7 @@
if (ILE->getType()->isArrayType())
return EmitArrayInitialization(ILE);
- if (ILE->getType()->isStructureType())
+ if (ILE->getType()->isRecordType())
return EmitStructInitialization(ILE);
if (ILE->getType()->isUnionType())
Modified: cfe/trunk/test/CodeGenCXX/const-init.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/const-init.cpp?rev=89569&r1=89568&r2=89569&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/const-init.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/const-init.cpp Sat Nov 21 17:56:04 2009
@@ -1,11 +1,26 @@
-// RUN: clang-cc -verify -emit-llvm -o %t %s
+// RUN: clang-cc -verify -triple x86_64-apple-darwin -emit-llvm -o - %s |
FileCheck %s
+// CHECK: @a = global i32 10
int a = 10;
+// CHECK: @ar = global i32* @a
int &ar = a;
void f();
+// CHECK: @fr = global void ()* @_Z1fv
void (&fr)() = f;
struct S { int& a; };
+// CHECK: @s = global %0 { i32* @a }
S s = { a };
+// PR5581
+namespace PR5581 {
+class C {
+public:
+ enum { e0, e1 };
+ unsigned f;
+};
+
+// CHECK: @_ZN6PR55812g0E = global %1 { i32 1 }
+C g0 = { C::e1 };
+}
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits