]> git.lizzy.rs Git - rust.git/blob - tests/codegen/virtual-function-elimination-32bit.rs
Rollup merge of #106766 - GuillaumeGomez:rm-stripper-dead-code, r=notriddle
[rust.git] / tests / codegen / virtual-function-elimination-32bit.rs
1 // compile-flags: -Zvirtual-function-elimination -Clto -O -Csymbol-mangling-version=v0
2 // ignore-64bit
3
4 // CHECK: @vtable.0 = {{.*}}, !type ![[TYPE0:[0-9]+]], !vcall_visibility ![[VCALL_VIS0:[0-9]+]]
5
6 #![crate_type = "lib"]
7
8 trait T {
9     // CHECK-LABEL: ; <virtual_function_elimination_32bit::S as virtual_function_elimination_32bit::T>::used
10     fn used(&self) -> i32 {
11         1
12     }
13     // CHECK-LABEL-NOT: {{.*}}::unused
14     fn unused(&self) -> i32 {
15         2
16     }
17 }
18
19 #[derive(Copy, Clone)]
20 struct S;
21
22 impl T for S {}
23
24 fn taking_t(t: &dyn T) -> i32 {
25     // CHECK: @llvm.type.checked.load({{.*}}, i32 12, metadata !"[[MANGLED_TYPE0:[0-9a-zA-Z_]+]]")
26     t.used()
27 }
28
29 pub fn main() {
30     let s = S;
31     taking_t(&s);
32 }
33
34 // CHECK: ![[TYPE0]] = !{i32 0, !"[[MANGLED_TYPE0]]"}
35 // CHECK: ![[VCALL_VIS0]] = !{i64 2}