rust/src/test/codegen/inline-hint.rs
Scott McMurray 0d4a3f11e2 mir-opt: Replace clone on primitives with copy
We can't do it for everything, but it would be nice to at least stop making calls to clone methods in debug from things like derived-clones.
2022-03-10 01:19:02 -08:00

31 lines
831 B
Rust

// Checks that closures, constructors, and shims except
// for a drop glue receive inline hint by default.
//
// compile-flags: -Cno-prepopulate-passes -Csymbol-mangling-version=v0
#![crate_type = "lib"]
pub fn f() {
let a = A;
let b = (0i32, 1i32, 2i32, 3 as *const i32);
let c = || {};
a(String::new(), String::new());
b.clone();
c();
}
struct A(String, String);
// CHECK: ; core::ptr::drop_in_place::<inline_hint::A>
// CHECK-NEXT: ; Function Attrs:
// CHECK-NOT: inlinehint
// CHECK-SAME: {{$}}
// CHECK: ; <(i32, i32, i32, *const i{{16|32|64}}) as core::clone::Clone>::clone
// CHECK-NEXT: ; Function Attrs: inlinehint
// CHECK: ; inline_hint::f::{closure#0}
// CHECK-NEXT: ; Function Attrs: inlinehint
// CHECK: ; inline_hint::A
// CHECK-NEXT: ; Function Attrs: inlinehint