blob: bfd10c0a5820d42cf340c45a72a7554ee455e795 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//@ compile-flags: -O
// XXX: The x86-64 assembly get optimized correclty. But llvm-ir output is not until llvm 18?
//@ min-llvm-version: 18
#![crate_type = "lib"]
pub enum K{
A(Box<[i32]>),
B(Box<[u8]>),
C(Box<[String]>),
D(Box<[u16]>),
}
#[no_mangle]
// CHECK-LABEL: @get_len
// CHECK: getelementptr inbounds
// CHECK-NEXT: load
// CHECK-NEXT: ret i64
// CHECK-NOT: switch
pub fn get_len(arg: &K)->usize{
match arg {
K::A(ref lst)=>lst.len(),
K::B(ref lst)=>lst.len(),
K::C(ref lst)=>lst.len(),
K::D(ref lst)=>lst.len(),
}
}
|