| // RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s | |
| struct x { int a[100]; }; | |
| void foo(struct x *P, struct x *Q) { | |
| // CHECK-LABEL: @foo( | |
| // CHECK: call void @llvm.memcpy.p0.p0 | |
| *P = *Q; | |
| } | |
| // CHECK: declare void @llvm.memcpy.p0.p0{{.*}}(ptr noalias nocapture writeonly, ptr noalias nocapture readonly | |
| void bar(struct x *P, struct x *Q) { | |
| // CHECK-LABEL: @bar( | |
| // CHECK: call void @llvm.memcpy.p0.p0 | |
| __builtin_memcpy(P, Q, sizeof(struct x)); | |
| } |