Author: vitalybuka Date: Wed Jul 10 15:47:07 2019 New Revision: 365706 URL: http://llvm.org/viewvc/llvm-project?rev=365706&view=rev Log: GodeGen, NFC: Add test to track emitStoresForConstant behavior
Reviewers: eugenis, pcc Reviewed By: eugenis Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D64385 Added: cfe/trunk/test/CodeGen/init-memset.c Added: cfe/trunk/test/CodeGen/init-memset.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/init-memset.c?rev=365706&view=auto ============================================================================== --- cfe/trunk/test/CodeGen/init-memset.c (added) +++ cfe/trunk/test/CodeGen/init-memset.c Wed Jul 10 15:47:07 2019 @@ -0,0 +1,66 @@ +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -O0 -emit-llvm -o - %s | FileCheck %s + +void use(void *); + +void test_small() { + // CHECK-LABEL: define void @test_small() + int a[] = {1, 2, 3, 4}; + // CHECK: call void @llvm.memcpy.{{.*}} + use(a); +} + +void test_small_same() { + // CHECK-LABEL: define void @test_small_same() + char a[] = {'a', 'a', 'a', 'a'}; + // CHECK: call void @llvm.memcpy.{{.*}} + use(a); +} + +void test_different() { + // 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() { + // CHECK-LABEL: define void @test_all_zeros() + int a[16] = {}; + // CHECK: call void @llvm.memset.{{.*}} + use(a); +} + +void test_all_a() { + // CHECK-LABEL: define void @test_all_a() + char a[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + // CHECK: call void @llvm.memcpy.{{.*}} + use(a); +} + +void test_most_zeros() { + // 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() { + // CHECK-LABEL: define void @test_most_a() + char a[] = "aaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + // CHECK: call void @llvm.memcpy.{{.*}} + use(a); +} + +void test_pointers() { + // 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); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits