diff options
| author | Peter Collingbourne <peter@pcc.me.uk> | 2016-11-22 00:43:30 +0000 |
|---|---|---|
| committer | Peter Collingbourne <peter@pcc.me.uk> | 2016-11-22 00:43:30 +0000 |
| commit | bad8e511d91789fe3931b94e5aaf404c46a25b6c (patch) | |
| tree | f68c97d218ccda748fb9117e8c4199b7cc79de99 /clang/test | |
| parent | 120eb54422c0fba462b53cce652a6baef07acf57 (diff) | |
| download | bcm5719-llvm-bad8e511d91789fe3931b94e5aaf404c46a25b6c.tar.gz bcm5719-llvm-bad8e511d91789fe3931b94e5aaf404c46a25b6c.zip | |
Fix -Asserts build, and add some more test cases.
llvm-svn: 287602
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CodeGenCXX/uncopyable-args.cpp | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/clang/test/CodeGenCXX/uncopyable-args.cpp b/clang/test/CodeGenCXX/uncopyable-args.cpp index 9cd57dd01c2..307a5cf11b6 100644 --- a/clang/test/CodeGenCXX/uncopyable-args.cpp +++ b/clang/test/CodeGenCXX/uncopyable-args.cpp @@ -212,10 +212,7 @@ struct A { void *p; }; void *foo(A a) { return a.p; } -// WIN64-LABEL: define i8* @"\01?foo@definition_only@@YAPEAXUA@1@@Z"{{.*}} -// WIN64-NEXT: : -// WIN64-NEXT: getelementptr -// WIN64-NEXT: load +// WIN64-LABEL: define i8* @"\01?foo@definition_only@@YAPEAXUA@1@@Z"(%"struct.definition_only::A"* } namespace deleted_by_member { @@ -229,11 +226,7 @@ struct A { B b; }; void *foo(A a) { return a.b.p; } -// WIN64-LABEL: define i8* @"\01?foo@deleted_by_member@@YAPEAXUA@1@@Z"{{.*}} -// WIN64-NEXT: : -// WIN64-NEXT: getelementptr -// WIN64-NEXT: getelementptr -// WIN64-NEXT: load +// WIN64-LABEL: define i8* @"\01?foo@deleted_by_member@@YAPEAXUA@1@@Z"(%"struct.deleted_by_member::A"* } namespace deleted_by_base { @@ -246,11 +239,34 @@ struct A : B { A(); }; void *foo(A a) { return a.p; } -// WIN64-LABEL: define i8* @"\01?foo@deleted_by_base@@YAPEAXUA@1@@Z"{{.*}} -// WIN64-NEXT: : -// WIN64-NEXT: bitcast -// WIN64-NEXT: getelementptr -// WIN64-NEXT: load +// WIN64-LABEL: define i8* @"\01?foo@deleted_by_base@@YAPEAXUA@1@@Z"(%"struct.deleted_by_base::A"* +} + +namespace deleted_by_member_copy { +struct B { + B(); + B(const B &o) = delete; + void *p; +}; +struct A { + A(); + B b; +}; +void *foo(A a) { return a.b.p; } +// WIN64-LABEL: define i8* @"\01?foo@deleted_by_member_copy@@YAPEAXUA@1@@Z"(%"struct.deleted_by_member_copy::A"* +} + +namespace deleted_by_base_copy { +struct B { + B(); + B(const B &o) = delete; + void *p; +}; +struct A : B { + A(); +}; +void *foo(A a) { return a.p; } +// WIN64-LABEL: define i8* @"\01?foo@deleted_by_base_copy@@YAPEAXUA@1@@Z"(%"struct.deleted_by_base_copy::A"* } namespace explicit_delete { @@ -259,9 +275,6 @@ struct A { A(const A &o) = delete; void *p; }; -// WIN64-LABEL: define i8* @"\01?foo@explicit_delete@@YAPEAXUA@1@@Z"{{.*}} -// WIN64-NEXT: : -// WIN64-NEXT: getelementptr -// WIN64-NEXT: load +// WIN64-LABEL: define i8* @"\01?foo@explicit_delete@@YAPEAXUA@1@@Z"(%"struct.explicit_delete::A"* void *foo(A a) { return a.p; } } |

