diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-11-22 00:21:13 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-11-22 00:21:13 +0000 |
commit | 56cb16dd927fa9304aa5b4474aa1d23ea8acc5c0 (patch) | |
tree | 7ab794c3661e391a992a3dcabeb8e922a8be2e2a /clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp | |
parent | 3ad394931dbef4b5d95d3ee2e9be61faf5530889 (diff) | |
download | bcm5719-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.cpp | 15 |
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}} } |