[cfe-commits] r102905 - /cfe/trunk/test/CodeGenCXX/empty-classes.cpp

Anders Carlsson andersca at mac.com
Mon May 3 07:22:40 PDT 2010


Author: andersca
Date: Mon May  3 09:22:40 2010
New Revision: 102905

URL: http://llvm.org/viewvc/llvm-project?rev=102905&view=rev
Log:
Add test case that I forgot to check in.

Added:
    cfe/trunk/test/CodeGenCXX/empty-classes.cpp

Added: cfe/trunk/test/CodeGenCXX/empty-classes.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/empty-classes.cpp?rev=102905&view=auto
==============================================================================
--- cfe/trunk/test/CodeGenCXX/empty-classes.cpp (added)
+++ cfe/trunk/test/CodeGenCXX/empty-classes.cpp Mon May  3 09:22:40 2010
@@ -0,0 +1,69 @@
+// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s
+
+struct Empty { };
+
+struct A { 
+  explicit A(unsigned a = 0xffffffff) : a(a) { }
+  
+  unsigned a;
+};
+
+struct B : A, Empty { 
+  B() : A(), Empty() { }
+};
+
+struct C : A, Empty {
+  C() : A(), Empty() { }
+  C(const C& other) : A(0x12345678), Empty(other) { }
+};
+
+struct D : A, Empty {
+  D& operator=(const D& other) {
+    a = 0x87654321;
+    Empty::operator=(other);
+    
+    return *this;
+  }
+};
+
+#define CHECK(x) if (!(x)) return __LINE__
+
+// PR7012
+// CHECK: define i32 @_Z1fv()
+int f() {
+  B b1;
+
+  // Check that A::a is not overwritten by the Empty default constructor.
+  CHECK(b1.a == 0xffffffff);
+  
+  C c1;
+  C c2(c1);
+  
+  // Check that A::a has the value set in the C::C copy constructor.
+  CHECK(c2.a == 0x12345678);
+  
+  D d1, d2;
+  d2 = d1;
+
+  // Check that A::as has the value set in the D copy assignment operator.
+  CHECK(d2.a == 0x87654321);
+  
+  // Success!
+  // CHECK: ret i32 0
+  return 0;
+}
+
+#ifdef HARNESS
+extern "C" void printf(const char *, ...);
+
+int main() {
+  int result = f();
+  
+  if (result == 0)
+    printf("success!\n");
+  else
+    printf("test on line %d failed!\n", result);
+
+  return result;
+}
+#endif





More information about the cfe-commits mailing list