mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-30 02:33:55 +00:00
1b587a6e76
Fixes #128690
37 lines
1.1 KiB
Rust
37 lines
1.1 KiB
Rust
//@ compile-flags: -C opt-level=3 -Z merge-functions=disabled
|
|
#![crate_type = "lib"]
|
|
|
|
//! Make sure str::to_string is specialized not to use fmt machinery.
|
|
|
|
// CHECK-LABEL: define {{(dso_local )?}}void @one_ref
|
|
#[no_mangle]
|
|
pub fn one_ref(input: &str) -> String {
|
|
// CHECK-NOT: {{(call|invoke).*}}fmt
|
|
input.to_string()
|
|
}
|
|
|
|
// CHECK-LABEL: define {{(dso_local )?}}void @two_ref
|
|
#[no_mangle]
|
|
pub fn two_ref(input: &&str) -> String {
|
|
// CHECK-NOT: {{(call|invoke).*}}fmt
|
|
input.to_string()
|
|
}
|
|
|
|
// CHECK-LABEL: define {{(dso_local )?}}void @thirteen_ref
|
|
#[no_mangle]
|
|
pub fn thirteen_ref(input: &&&&&&&&&&&&&str) -> String {
|
|
// CHECK-NOT: {{(call|invoke).*}}fmt
|
|
input.to_string()
|
|
}
|
|
|
|
// This is a known performance cliff because of the macro-generated
|
|
// specialized impl. If this test suddenly starts failing,
|
|
// consider removing the `to_string_str!` macro in `alloc/str/string.rs`.
|
|
//
|
|
// CHECK-LABEL: define {{(dso_local )?}}void @fourteen_ref
|
|
#[no_mangle]
|
|
pub fn fourteen_ref(input: &&&&&&&&&&&&&&str) -> String {
|
|
// CHECK: {{(call|invoke).*}}fmt
|
|
input.to_string()
|
|
}
|