File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change 1+ // compile-flags: --crate-type=lib
2+ #![ feature( core_intrinsics) ]
3+
4+ use std:: intrinsics:: is_compile_time_known;
5+
6+ pub struct A ( u32 ) ;
7+ pub enum B {
8+ Ye ( u32 ) ,
9+ }
10+
11+ #[ inline]
12+ pub fn tuple_struct ( a : A ) -> i32 {
13+ if unsafe { is_compile_time_known ( a) } { 1 } else { 0 }
14+ }
15+
16+ // CHECK-LABEL: @tuple_struct_true(
17+ #[ no_mangle]
18+ pub fn tuple_struct_true ( ) -> i32 {
19+ // CHECK: ret i32 1
20+ tuple_struct ( A ( 1 ) )
21+ }
22+
23+ // CHECK-LABEL: @tuple_struct_false(
24+ #[ no_mangle]
25+ pub fn tuple_struct_false ( a : A ) -> i32 {
26+ // CHECK: ret i32 0
27+ tuple_struct ( a)
28+ }
29+
30+ #[ inline]
31+ pub fn r#enum ( b : B ) -> i32 {
32+ if unsafe { is_compile_time_known ( b) } { 3 } else { 2 }
33+ }
34+
35+ // CHECK-LABEL: @enum_true(
36+ #[ no_mangle]
37+ pub fn enum_true ( ) -> i32 {
38+ // CHECK: ret i32 3
39+ r#enum ( B :: Ye ( 2 ) )
40+ }
41+
42+ // CHECK-LABEL: @enum_false(
43+ #[ no_mangle]
44+ pub fn enum_false ( b : B ) -> i32 {
45+ // CHECK: ret i32 2
46+ r#enum ( b)
47+ }
You can’t perform that action at this time.
0 commit comments