llvm-project/clang/test/CodeGen/init-memset.c
Aaron Ballman adc402bf3d Use functions with prototypes when appropriate; NFC
A significant number of our tests in C accidentally use functions
without prototypes. This patch converts the function signatures to have
a prototype for the situations where the test is not specific to K&R C
declarations. e.g.,

  void func();

becomes

  void func(void);

This is the eleventh batch of tests being updated (there are a
significant number of other tests left to be updated).
2022-02-15 16:06:43 -05:00

67 lines
1.7 KiB
C

// RUN: %clang_cc1 -triple x86_64-unknown-unknown -O0 -emit-llvm -o - %s | FileCheck %s
void use(void *);
void test_small(void) {
// CHECK-LABEL: define{{.*}} void @test_small()
int a[] = {1, 2, 3, 4};
// CHECK: call void @llvm.memcpy.{{.*}}
use(a);
}
void test_small_same(void) {
// CHECK-LABEL: define{{.*}} void @test_small_same()
char a[] = {'a', 'a', 'a', 'a'};
// CHECK: call void @llvm.memcpy.{{.*}}
use(a);
}
void test_different(void) {
// CHECK-LABEL: define{{.*}} void @test_different()
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// CHECK: call void @llvm.memcpy.{{.*}}
use(a);
}
void test_all_zeros(void) {
// CHECK-LABEL: define{{.*}} void @test_all_zeros()
int a[16] = {};
// CHECK: call void @llvm.memset.{{.*}}
use(a);
}
void test_all_a(void) {
// CHECK-LABEL: define{{.*}} void @test_all_a()
char a[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
// CHECK: call void @llvm.memcpy.{{.*}}
use(a);
}
void test_most_zeros(void) {
// CHECK-LABEL: define{{.*}} void @test_most_zeros()
int a[16] = {0, 0, 1};
// CHECK: call void @llvm.memset.{{.*}}
// CHECK: store i32 1
use(a);
}
void test_most_a(void) {
// CHECK-LABEL: define{{.*}} void @test_most_a()
char a[] = "aaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
// CHECK: call void @llvm.memcpy.{{.*}}
use(a);
}
void test_pointers(void) {
// CHECK-LABEL: define{{.*}} void @test_pointers()
void *a[] = {&use, &use, &use, &use, &use, &use};
// CHECK: call void @llvm.memset.{{.*}}
// CHECK: store i8*
// CHECK: store i8*
// CHECK: store i8*
// CHECK: store i8*
// CHECK: store i8*
// CHECK: store i8*
use(a);
}