61 lines · c
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -O0 -emit-llvm -o - %s | FileCheck %s2 3void use(void *);4 5void test_small(void) {6 // CHECK-LABEL: define{{.*}} void @test_small()7 int a[] = {1, 2, 3, 4};8 // CHECK: call void @llvm.memcpy.{{.*}}9 use(a);10}11 12void test_small_same(void) {13 // CHECK-LABEL: define{{.*}} void @test_small_same()14 char a[] = {'a', 'a', 'a', 'a'};15 // CHECK: call void @llvm.memcpy.{{.*}}16 use(a);17}18 19void test_different(void) {20 // CHECK-LABEL: define{{.*}} void @test_different()21 int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};22 // CHECK: call void @llvm.memcpy.{{.*}}23 use(a);24}25 26void test_all_zeros(void) {27 // CHECK-LABEL: define{{.*}} void @test_all_zeros()28 int a[16] = {};29 // CHECK: call void @llvm.memset.{{.*}}30 use(a);31}32 33void test_all_a(void) {34 // CHECK-LABEL: define{{.*}} void @test_all_a()35 char a[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";36 // CHECK: call void @llvm.memcpy.{{.*}}37 use(a);38}39 40void test_most_zeros(void) {41 // CHECK-LABEL: define{{.*}} void @test_most_zeros()42 int a[16] = {0, 0, 1};43 // CHECK: call void @llvm.memset.{{.*}}44 // CHECK: store i32 145 use(a);46}47 48void test_most_a(void) {49 // CHECK-LABEL: define{{.*}} void @test_most_a()50 char a[] = "aaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";51 // CHECK: call void @llvm.memcpy.{{.*}}52 use(a);53}54 55void test_pointers(void) {56 // CHECK-LABEL: define{{.*}} void @test_pointers()57 void *a[] = {&use, &use, &use, &use, &use, &use};58 // CHECK: call void @llvm.memcpy.{{.*}}59 use(a);60}61