From 0d1f3cb1b5d2c89d12d01bfa1b729a11b4864d49 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 26 Feb 2012 00:31:33 +0000 Subject: Special members which are defaulted or deleted on their first declaration are trivial if the implicit declaration would be. Don't forget to set the Trivial flag on the special member as well as on the class. It doesn't seem ideal that we have two separate mechanisms for storing this information, but this patch does not attempt to address that. This leaves us in an interesting position where the has_trivial_X trait for a class says 'yes' for a deleted but trivial X, but is_trivially_Xable says 'no'. This seems to be what the standard requires. llvm-svn: 151465 --- clang/test/CodeGenCXX/constructor-init.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'clang/test/CodeGenCXX/constructor-init.cpp') diff --git a/clang/test/CodeGenCXX/constructor-init.cpp b/clang/test/CodeGenCXX/constructor-init.cpp index 6af5188a41f..9f808f6680e 100644 --- a/clang/test/CodeGenCXX/constructor-init.cpp +++ b/clang/test/CodeGenCXX/constructor-init.cpp @@ -201,7 +201,7 @@ namespace PR10720 { pair2(const pair2&) = default; }; - struct pair { + struct pair : X { // Make the copy constructor non-trivial, so we actually generate it. int second[4]; // CHECK-PR10720: define linkonce_odr void @_ZN7PR107204pairC2ERKS0_ // CHECK-PR10720-NOT: ret @@ -220,4 +220,3 @@ namespace PR10720 { } } - -- cgit v1.2.3