Skip to content

Commit 195f208

Browse files
committed
Add VFE test for 32 bit
The offset in the llvm.type.checked.load intrinsic differs on 32 bit platforms
1 parent a93ea7e commit 195f208

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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}

src/test/codegen/virtual-function-elimination.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// compile-flags: -Zvirtual-function-elimination -Clto -O -Csymbol-mangling-version=v0
2+
// ignore-32bit
23

34
// CHECK: @vtable.0 = {{.*}}, !type ![[TYPE0:[0-9]+]], !vcall_visibility ![[VCALL_VIS0:[0-9]+]]
45
// CHECK: @vtable.1 = {{.*}}, !type ![[TYPE1:[0-9]+]], !vcall_visibility ![[VCALL_VIS0:[0-9]+]]

0 commit comments

Comments
 (0)