2
2
3
3
#![ crate_type = "lib" ]
4
4
#![ feature( c_variadic) ]
5
+ #![ feature( unwind_attributes) ]
5
6
#![ no_std]
6
7
use core:: ffi:: VaList ;
7
8
@@ -10,6 +11,7 @@ extern "C" {
10
11
fn foreign_c_variadic_1 ( _: VaList , ...) ;
11
12
}
12
13
14
+ #[ unwind( aborts) ] // FIXME(#58794)
13
15
pub unsafe extern "C" fn use_foreign_c_variadic_0 ( ) {
14
16
// Ensure that we correctly call foreign C-variadic functions.
15
17
// CHECK: invoke void (i32, ...) @foreign_c_variadic_0(i32 0)
@@ -24,20 +26,24 @@ pub unsafe extern "C" fn use_foreign_c_variadic_0() {
24
26
25
27
// Ensure that we do not remove the `va_list` passed to the foreign function when
26
28
// removing the "spoofed" `VaListImpl` that is used by Rust defined C-variadics.
29
+ #[ unwind( aborts) ] // FIXME(#58794)
27
30
pub unsafe extern "C" fn use_foreign_c_variadic_1_0 ( ap : VaList ) {
28
31
// CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap)
29
32
foreign_c_variadic_1 ( ap) ;
30
33
}
31
34
35
+ #[ unwind( aborts) ] // FIXME(#58794)
32
36
pub unsafe extern "C" fn use_foreign_c_variadic_1_1 ( ap : VaList ) {
33
37
// CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, i32 42)
34
38
foreign_c_variadic_1 ( ap, 42i32 ) ;
35
39
}
40
+ #[ unwind( aborts) ] // FIXME(#58794)
36
41
pub unsafe extern "C" fn use_foreign_c_variadic_1_2 ( ap : VaList ) {
37
42
// CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, i32 2, i32 42)
38
43
foreign_c_variadic_1 ( ap, 2i32 , 42i32 ) ;
39
44
}
40
45
46
+ #[ unwind( aborts) ] // FIXME(#58794)
41
47
pub unsafe extern "C" fn use_foreign_c_variadic_1_3 ( ap : VaList ) {
42
48
// CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, i32 2, i32 42, i32 0)
43
49
foreign_c_variadic_1 ( ap, 2i32 , 42i32 , 0i32 ) ;
0 commit comments