47 lines · cpp
1// RUN: %clang_cc1 -triple=x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s2 3struct s {4 char filler [128];5 volatile int x;6};7 8struct s gs;9 10void foo (void) {11 struct s ls;12 ls = ls;13 gs = gs;14 ls = gs;15}16// CHECK-LABEL: define{{.*}} void @_Z3foov()17// CHECK: %[[LS:.*]] = alloca %struct.s, align 418// CHECK-NEXT: call void @llvm.memcpy.{{.*}}(ptr align 4 %[[LS]], ptr align 4 %[[LS]], i64 132, i1 true)19// CHECK-NEXT: call void @llvm.memcpy.{{.*}}(ptr align 4 @gs, ptr align 4 @gs, i64 132, i1 true)20// CHECK-NEXT: call void @llvm.memcpy.{{.*}}(ptr align 4 %[[LS]], ptr align 4 @gs, i64 132, i1 true)21 22 23struct s1 {24 struct s y;25};26 27struct s1 s;28 29void fee (void) {30 s = s;31 s.y = gs;32}33// CHECK-LABEL: define{{.*}} void @_Z3feev()34// CHECK: call void @llvm.memcpy.{{.*}}(ptr align 4 @s, ptr align 4 @s, i64 132, i1 true)35// CHECK-NEXT: call void @llvm.memcpy.{{.*}}(ptr align 4 @s, ptr align 4 @gs, i64 132, i1 true)36 37struct d : s1 {38};39 40d gd;41 42void gorf(void) {43 gd = gd;44}45// CHECK-LABEL: define{{.*}} void @_Z4gorfv()46// CHECK: call void @llvm.memcpy.{{.*}}(ptr align 4 @gd, ptr align 4 @gd, i64 132, i1 true)47