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