Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 llvm-svn: 365706
- Loading branch information
1 parent
1c327c7
commit e263988
Showing
1 changed file
with
66 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} |