summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-11-02 23:04:16 +0000
committerDouglas Gregor <dgregor@apple.com>2011-11-02 23:04:16 +0000
commit10f939c3db0197962578feb7744ac2fd674c402f (patch)
treee0df54937260afcd6e987a37d6aa3f4ee5443b62 /clang/test
parent10317eaa28a2d20a8cc76db9aa80eea7b4345800 (diff)
downloadbcm5719-llvm-10f939c3db0197962578feb7744ac2fd674c402f.tar.gz
bcm5719-llvm-10f939c3db0197962578feb7744ac2fd674c402f.zip
Don't build member initializers for zero-length or incomplete arrays,
and don't try to destroy them, either. Fixes <rdar://problem/10228639>. llvm-svn: 143584
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGenCXX/constructors.cpp2
-rw-r--r--clang/test/SemaCXX/zero-length-arrays.cpp26
2 files changed, 26 insertions, 2 deletions
diff --git a/clang/test/CodeGenCXX/constructors.cpp b/clang/test/CodeGenCXX/constructors.cpp
index ec7f06c868a..9e2da31f046 100644
--- a/clang/test/CodeGenCXX/constructors.cpp
+++ b/clang/test/CodeGenCXX/constructors.cpp
@@ -111,7 +111,5 @@ namespace test1 {
B::B() {}
// CHECK: define void @_ZN5test11BC2Ev(
// CHECK: [[THIS:%.*]] = load [[B:%.*]]**
- // CHECK-NEXT: [[A:%.*]] = getelementptr inbounds [[B:%.*]]* [[THIS]], i32 0, i32 1
- // CHECK-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [0 x {{%.*}}]* [[A]], i32 0, i32 0
// CHECK-NEXT: ret void
}
diff --git a/clang/test/SemaCXX/zero-length-arrays.cpp b/clang/test/SemaCXX/zero-length-arrays.cpp
new file mode 100644
index 00000000000..05ded4ad9b3
--- /dev/null
+++ b/clang/test/SemaCXX/zero-length-arrays.cpp
@@ -0,0 +1,26 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+
+// <rdar://problem/10228639>
+class Foo {
+ ~Foo();
+ Foo(const Foo&);
+public:
+ Foo(int);
+};
+
+class Bar {
+ int foo_count;
+ Foo foos[0];
+ Foo foos2[0][2];
+ Foo foos3[2][0];
+
+public:
+ Bar(): foo_count(0) { }
+ ~Bar() { }
+};
+
+void testBar() {
+ Bar b;
+ Bar b2(b);
+ b = b2;
+}
OpenPOWER on IntegriCloud