summaryrefslogtreecommitdiffstats
path: root/clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-11-22 00:21:13 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-11-22 00:21:13 +0000
commit56cb16dd927fa9304aa5b4474aa1d23ea8acc5c0 (patch)
tree7ab794c3661e391a992a3dcabeb8e922a8be2e2a /clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp
parent3ad394931dbef4b5d95d3ee2e9be61faf5530889 (diff)
downloadbcm5719-llvm-56cb16dd927fa9304aa5b4474aa1d23ea8acc5c0.tar.gz
bcm5719-llvm-56cb16dd927fa9304aa5b4474aa1d23ea8acc5c0.zip
Test that we correctly deal with multiple copy constructors when detecting
non-trivial special members for varargs calls. llvm-svn: 168476
Diffstat (limited to 'clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp')
-rw-r--r--clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp b/clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp
index d51ba09835d..018609d9a07 100644
--- a/clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp
+++ b/clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp
@@ -9,11 +9,22 @@ struct X2 {
~X2();
};
+struct X3 {
+ X3(const X3&) = default;
+};
+
+struct X4 {
+ X4(const X4&) = default;
+ X4(X4&);
+};
+
void vararg(...);
-void f(X1 x1, X2 x2) {
- vararg(x1); // okay
+void f(X1 x1, X2 x2, X3 x3, X4 x4) {
+ vararg(x1); // OK
vararg(x2); // expected-error{{cannot pass object of non-trivial type 'X2' through variadic function; call will abort at runtime}}
+ vararg(x3); // OK
+ vararg(x4); // expected-error{{cannot pass object of non-trivial type 'X4' through variadic function; call will abort at runtime}}
}
OpenPOWER on IntegriCloud