move panic-in-drop=abort
check for drop_in_place
Whether `drop_in_place` can abort does depend on the `panic-in-drop` option while compiling the current crate, not `core`
This commit is contained in:
parent
bd1d18660b
commit
501067cb05
3 changed files with 29 additions and 37 deletions
|
@ -45,7 +45,7 @@ use rustc_session::lint;
|
|||
use rustc_session::parse::feature_err;
|
||||
use rustc_span::symbol::{kw, sym, Ident, Symbol};
|
||||
use rustc_span::{Span, DUMMY_SP};
|
||||
use rustc_target::spec::{abi, PanicStrategy, SanitizerSet};
|
||||
use rustc_target::spec::{abi, SanitizerSet};
|
||||
use rustc_trait_selection::traits::error_reporting::suggestions::NextTypeParamName;
|
||||
use std::iter;
|
||||
|
||||
|
@ -2726,13 +2726,6 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: DefId) -> CodegenFnAttrs {
|
|||
codegen_fn_attrs.flags |= CodegenFnAttrFlags::TRACK_CALLER;
|
||||
}
|
||||
|
||||
// With -Z panic-in-drop=abort, drop_in_place never unwinds.
|
||||
if tcx.sess.opts.debugging_opts.panic_in_drop == PanicStrategy::Abort {
|
||||
if Some(did.to_def_id()) == tcx.lang_items().drop_in_place_fn() {
|
||||
codegen_fn_attrs.flags |= CodegenFnAttrFlags::NEVER_UNWIND;
|
||||
}
|
||||
}
|
||||
|
||||
// The panic_no_unwind function called by TerminatorKind::Abort will never
|
||||
// unwind. If the panic handler that it invokes unwind then it will simply
|
||||
// call the panic handler again.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue