Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit bc7b8f4

Browse files
committedFeb 23, 2025
Exclude global_asm from mir_keys
1 parent 1c07545 commit bc7b8f4

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed
 

‎compiler/rustc_mir_transform/src/lib.rs

+3
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,9 @@ fn mir_keys(tcx: TyCtxt<'_>, (): ()) -> FxIndexSet<LocalDefId> {
316316
// All body-owners have MIR associated with them.
317317
let mut set: FxIndexSet<_> = tcx.hir_body_owners().collect();
318318

319+
// Remove the fake bodies for `global_asm!`, since they're useful to be emitted or encoded.
320+
set.retain(|&def_id| !matches!(tcx.def_kind(def_id), DefKind::GlobalAsm));
321+
319322
// Coroutine-closures (e.g. async closures) have an additional by-move MIR
320323
// body that isn't in the HIR.
321324
for body_owner in tcx.hir_body_owners() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//@ revisions: emit_mir instrument cfi
2+
3+
// Make sure we don't try to emit MIR for it.
4+
//@[emit_mir] compile-flags: --emit=mir
5+
6+
// Make sure we don't try to instrument it.
7+
//@[instrument] compile-flags: -Cinstrument-coverage -Zno-profiler-runtime
8+
9+
// Make sure we don't try to CFI encode it.
10+
//@[cfi] compile-flags: -Zsanitizer=cfi -Ccodegen-units=1 -Clto -Clink-dead-code=true
11+
//@[cfi] needs-sanitizer-cfi
12+
//@[cfi] no-prefer-dynamic
13+
14+
//@ build-pass
15+
16+
use std::arch::global_asm;
17+
18+
fn foo() {}
19+
20+
global_asm!("/* {} */", sym foo);
21+
22+
fn main() {}

0 commit comments

Comments
 (0)
Failed to load comments.