@@ -275,18 +275,7 @@ pub fn from_fn_attrs(
275
275
} else if codegen_fn_attrs. flags . contains ( CodegenFnAttrFlags :: RUSTC_ALLOCATOR_NOUNWIND ) {
276
276
// Special attribute for allocator functions, which can't unwind
277
277
false
278
- } else if let Some ( _) = id {
279
- // rust-lang/rust#64655, rust-lang/rust#63909: to minimize
280
- // risk associated with changing cases where nounwind
281
- // attribute is attached, this code is deliberately mimicking
282
- // old control flow based on whether `id` is `Some` or `None`.
283
- //
284
- // However, in the long term we should either:
285
- // - fold this into final else (i.e. stop inspecting `id`)
286
- // - or, adopt Rust PR #63909.
287
- //
288
- // see also Rust RFC 2753.
289
-
278
+ } else {
290
279
let sig = cx. tcx . normalize_erasing_late_bound_regions ( ty:: ParamEnv :: reveal_all ( ) , & sig) ;
291
280
if sig. abi == Abi :: Rust || sig. abi == Abi :: RustCall {
292
281
// Any Rust method (or `extern "Rust" fn` or `extern
@@ -312,15 +301,6 @@ pub fn from_fn_attrs(
312
301
// In either case, we mark item as explicitly nounwind.
313
302
false
314
303
}
315
- } else {
316
- // assume this can possibly unwind, avoiding the application of a
317
- // `nounwind` attribute below.
318
- //
319
- // (But: See comments in previous branch. Specifically, it is
320
- // unclear whether there is real value in the assumption this
321
- // can unwind. The conservatism here may just be papering over
322
- // a real problem by making some UB a bit harder to hit.)
323
- true
324
304
} ) ;
325
305
326
306
// Always annotate functions with the target-cpu they are compiled for.
0 commit comments