xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGenCXX/move-assignment.cpp (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -emit-llvm -std=c++11 -o - %s -triple x86_64-pc-linux-gnu | FileCheck %s
2*f4a2713aSLionel Sambuc 
3*f4a2713aSLionel Sambuc struct A {
4*f4a2713aSLionel Sambuc   A &operator=(A&&);
5*f4a2713aSLionel Sambuc };
6*f4a2713aSLionel Sambuc 
7*f4a2713aSLionel Sambuc struct B {
8*f4a2713aSLionel Sambuc   A a;
9*f4a2713aSLionel Sambuc   int i;
10*f4a2713aSLionel Sambuc   bool b;
11*f4a2713aSLionel Sambuc   char c;
12*f4a2713aSLionel Sambuc   long l;
13*f4a2713aSLionel Sambuc   float f;
14*f4a2713aSLionel Sambuc };
15*f4a2713aSLionel Sambuc 
test1()16*f4a2713aSLionel Sambuc void test1() {
17*f4a2713aSLionel Sambuc   B b1, b2;
18*f4a2713aSLionel Sambuc   b1 = static_cast<B&&>(b2);
19*f4a2713aSLionel Sambuc }
20*f4a2713aSLionel Sambuc 
21*f4a2713aSLionel Sambuc // CHECK-LABEL: define {{.*}} @_ZN1BaSEOS_
22*f4a2713aSLionel Sambuc // CHECK: call {{.*}} @_ZN1AaSEOS_
23*f4a2713aSLionel Sambuc // CHECK-NOT: store
24*f4a2713aSLionel Sambuc // CHECK: call {{.*}}memcpy{{.*}}, i64 24
25*f4a2713aSLionel Sambuc // CHECK-NOT: store
26*f4a2713aSLionel Sambuc // CHECK: ret
27