Skip to content

Commit afd3a02

Browse files
committed
Rollup merge of #61569 - cuviper:beta-1.36-no-unwind-abort, r=Mark-Simulacrum
2 parents 1357c67 + 32cd647 commit afd3a02

File tree

5 files changed

+11
-3
lines changed

5 files changed

+11
-3
lines changed

src/librustc_mir/build/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ fn should_abort_on_panic<'a, 'gcx, 'tcx>(tcx: TyCtxt<'a, 'gcx, 'tcx>,
604604
// This is a special case: some functions have a C abi but are meant to
605605
// unwind anyway. Don't stop them.
606606
match unwind_attr {
607-
None => true,
607+
None => false, // FIXME(#58794)
608608
Some(UnwindAttr::Allowed) => false,
609609
Some(UnwindAttr::Aborts) => true,
610610
}

src/test/codegen/c-variadic.rs

+6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#![crate_type = "lib"]
44
#![feature(c_variadic)]
5+
#![feature(unwind_attributes)]
56
#![no_std]
67
use core::ffi::VaList;
78

@@ -10,6 +11,7 @@ extern "C" {
1011
fn foreign_c_variadic_1(_: VaList, ...);
1112
}
1213

14+
#[unwind(aborts)] // FIXME(#58794)
1315
pub unsafe extern "C" fn use_foreign_c_variadic_0() {
1416
// Ensure that we correctly call foreign C-variadic functions.
1517
// CHECK: invoke void (i32, ...) @foreign_c_variadic_0(i32 0)
@@ -24,20 +26,24 @@ pub unsafe extern "C" fn use_foreign_c_variadic_0() {
2426

2527
// Ensure that we do not remove the `va_list` passed to the foreign function when
2628
// removing the "spoofed" `VaList` that is used by Rust defined C-variadics.
29+
#[unwind(aborts)] // FIXME(#58794)
2730
pub unsafe extern "C" fn use_foreign_c_variadic_1_0(ap: VaList) {
2831
// CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap)
2932
foreign_c_variadic_1(ap);
3033
}
3134

35+
#[unwind(aborts)] // FIXME(#58794)
3236
pub unsafe extern "C" fn use_foreign_c_variadic_1_1(ap: VaList) {
3337
// CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, i32 42)
3438
foreign_c_variadic_1(ap, 42i32);
3539
}
40+
#[unwind(aborts)] // FIXME(#58794)
3641
pub unsafe extern "C" fn use_foreign_c_variadic_1_2(ap: VaList) {
3742
// CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, i32 2, i32 42)
3843
foreign_c_variadic_1(ap, 2i32, 42i32);
3944
}
4045

46+
#[unwind(aborts)] // FIXME(#58794)
4147
pub unsafe extern "C" fn use_foreign_c_variadic_1_3(ap: VaList) {
4248
// CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, i32 2, i32 42, i32 0)
4349
foreign_c_variadic_1(ap, 2i32, 42i32, 0i32);

src/test/incremental/hashes/function_interfaces.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ pub unsafe fn make_unsafe() {}
9494
pub fn make_extern() {}
9595

9696
#[cfg(not(cfail1))]
97-
#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, mir_built, typeck_tables_of, fn_sig")]
97+
#[rustc_clean(cfg = "cfail2", except = "Hir, HirBody, typeck_tables_of, fn_sig")]
9898
#[rustc_clean(cfg = "cfail3")]
9999
pub extern "C" fn make_extern() {}
100100

src/test/incremental/hashes/inherent_impls.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ impl Foo {
263263
#[rustc_clean(cfg="cfail2")]
264264
#[rustc_clean(cfg="cfail3")]
265265
impl Foo {
266-
#[rustc_clean(cfg="cfail2", except="Hir,HirBody,mir_built,fn_sig,typeck_tables_of")]
266+
#[rustc_clean(cfg="cfail2", except="Hir,HirBody,fn_sig,typeck_tables_of")]
267267
#[rustc_clean(cfg="cfail3")]
268268
pub extern fn make_method_extern(&self) { }
269269
}

src/test/run-pass/abort-on-c-abi.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#![allow(unused_must_use)]
2+
#![feature(unwind_attributes)]
23
// Since we mark some ABIs as "nounwind" to LLVM, we must make sure that
34
// we never unwind through them.
45

@@ -11,6 +12,7 @@ use std::io::prelude::*;
1112
use std::io;
1213
use std::process::{Command, Stdio};
1314

15+
#[unwind(aborts)] // FIXME(#58794)
1416
extern "C" fn panic_in_ffi() {
1517
panic!("Test");
1618
}

0 commit comments

Comments
 (0)