summaryrefslogtreecommitdiffstats
path: root/tests/codegen/issues/issue-86106.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/codegen/issues/issue-86106.rs')
-rw-r--r--tests/codegen/issues/issue-86106.rs29
1 files changed, 9 insertions, 20 deletions
diff --git a/tests/codegen/issues/issue-86106.rs b/tests/codegen/issues/issue-86106.rs
index 9ccbcb24f..c0be7fab2 100644
--- a/tests/codegen/issues/issue-86106.rs
+++ b/tests/codegen/issues/issue-86106.rs
@@ -1,4 +1,5 @@
// min-llvm-version: 15.0
+// only-64bit llvm appears to use stores instead of memset on 32bit
// compile-flags: -C opt-level=3 -Z merge-functions=disabled
// The below two functions ensure that both `String::new()` and `"".to_string()`
@@ -9,12 +10,9 @@
// CHECK-LABEL: define void @string_new
#[no_mangle]
pub fn string_new() -> String {
- // CHECK-NOT: load i8
- // CHECK: store i{{32|64}}
+ // CHECK: store ptr inttoptr
// CHECK-NEXT: getelementptr
- // CHECK-NEXT: store ptr
- // CHECK-NEXT: getelementptr
- // CHECK-NEXT: store i{{32|64}}
+ // CHECK-NEXT: call void @llvm.memset
// CHECK-NEXT: ret void
String::new()
}
@@ -22,12 +20,9 @@ pub fn string_new() -> String {
// CHECK-LABEL: define void @empty_to_string
#[no_mangle]
pub fn empty_to_string() -> String {
- // CHECK-NOT: load i8
- // CHECK: store i{{32|64}}
- // CHECK-NEXT: getelementptr
- // CHECK-NEXT: store ptr
+ // CHECK: store ptr inttoptr
// CHECK-NEXT: getelementptr
- // CHECK-NEXT: store i{{32|64}}
+ // CHECK-NEXT: call void @llvm.memset
// CHECK-NEXT: ret void
"".to_string()
}
@@ -38,12 +33,9 @@ pub fn empty_to_string() -> String {
// CHECK-LABEL: @empty_vec
#[no_mangle]
pub fn empty_vec() -> Vec<u8> {
- // CHECK: store i{{32|64}}
- // CHECK-NOT: load i8
+ // CHECK: store ptr inttoptr
// CHECK-NEXT: getelementptr
- // CHECK-NEXT: store ptr
- // CHECK-NEXT: getelementptr
- // CHECK-NEXT: store i{{32|64}}
+ // CHECK-NEXT: call void @llvm.memset
// CHECK-NEXT: ret void
vec![]
}
@@ -51,12 +43,9 @@ pub fn empty_vec() -> Vec<u8> {
// CHECK-LABEL: @empty_vec_clone
#[no_mangle]
pub fn empty_vec_clone() -> Vec<u8> {
- // CHECK: store i{{32|64}}
- // CHECK-NOT: load i8
- // CHECK-NEXT: getelementptr
- // CHECK-NEXT: store ptr
+ // CHECK: store ptr inttoptr
// CHECK-NEXT: getelementptr
- // CHECK-NEXT: store i{{32|64}}
+ // CHECK-NEXT: call void @llvm.memset
// CHECK-NEXT: ret void
vec![].clone()
}