diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-11-21 23:56:04 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-11-21 23:56:04 +0000 |
| commit | e18e29eeb9947b93656cfe1a16f37e54462e0ab4 (patch) | |
| tree | 40333dc75d1dcc7675e88971e5f0eff8e5ea9787 | |
| parent | e09e95b35c1367ead8e0af22f6f97b7854651ff3 (diff) | |
| download | bcm5719-llvm-e18e29eeb9947b93656cfe1a16f37e54462e0ab4.tar.gz bcm5719-llvm-e18e29eeb9947b93656cfe1a16f37e54462e0ab4.zip | |
Support emitting aggregate class initializers. Fixes PR5581.
llvm-svn: 89569
| -rw-r--r-- | clang/lib/CodeGen/CGExprConstant.cpp | 2 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/const-init.cpp | 17 |
2 files changed, 17 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGExprConstant.cpp b/clang/lib/CodeGen/CGExprConstant.cpp index 40b845dba05..d0475dd8df1 100644 --- a/clang/lib/CodeGen/CGExprConstant.cpp +++ b/clang/lib/CodeGen/CGExprConstant.cpp @@ -673,7 +673,7 @@ public: if (ILE->getType()->isArrayType()) return EmitArrayInitialization(ILE); - if (ILE->getType()->isStructureType()) + if (ILE->getType()->isRecordType()) return EmitStructInitialization(ILE); if (ILE->getType()->isUnionType()) diff --git a/clang/test/CodeGenCXX/const-init.cpp b/clang/test/CodeGenCXX/const-init.cpp index 427ba537299..42da6346daf 100644 --- a/clang/test/CodeGenCXX/const-init.cpp +++ b/clang/test/CodeGenCXX/const-init.cpp @@ -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 }; +} |

