mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-17 01:13:11 +00:00
Rollup merge of #105023 - tmiasko:asm-sym-static-reachable, r=wesleywiser
Statics used in reachable function's inline asm are reachable Fixes #104925.
This commit is contained in:
commit
581ca3e836
@ -116,6 +116,17 @@ impl<'tcx> Visitor<'tcx> for ReachableContext<'tcx> {
|
|||||||
|
|
||||||
intravisit::walk_expr(self, expr)
|
intravisit::walk_expr(self, expr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn visit_inline_asm(&mut self, asm: &'tcx hir::InlineAsm<'tcx>, id: hir::HirId) {
|
||||||
|
for (op, _) in asm.operands {
|
||||||
|
if let hir::InlineAsmOperand::SymStatic { def_id, .. } = op {
|
||||||
|
if let Some(def_id) = def_id.as_local() {
|
||||||
|
self.reachable_symbols.insert(def_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intravisit::walk_inline_asm(self, asm, id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> ReachableContext<'tcx> {
|
impl<'tcx> ReachableContext<'tcx> {
|
||||||
|
20
src/test/codegen-units/item-collection/asm-sym.rs
Normal file
20
src/test/codegen-units/item-collection/asm-sym.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// needs-asm-support
|
||||||
|
// compile-flags: -Ccodegen-units=1 -Zprint-mono-items=lazy --crate-type=lib
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
pub unsafe fn f() {
|
||||||
|
//~ MONO_ITEM static f::S @@ asm_sym-cgu.0[External]
|
||||||
|
static S: usize = 1;
|
||||||
|
//~ MONO_ITEM fn f::fun @@ asm_sym-cgu.0[External]
|
||||||
|
fn fun() {}
|
||||||
|
core::arch::asm!("/* {0} {1} */", sym S, sym fun);
|
||||||
|
}
|
||||||
|
|
||||||
|
//~ MONO_ITEM fn g @@ asm_sym-cgu.0[External]
|
||||||
|
pub unsafe fn g() {
|
||||||
|
//~ MONO_ITEM static g::S @@ asm_sym-cgu.0[Internal]
|
||||||
|
static S: usize = 2;
|
||||||
|
//~ MONO_ITEM fn g::fun @@ asm_sym-cgu.0[Internal]
|
||||||
|
fn fun() {}
|
||||||
|
core::arch::asm!("/* {0} {1} */", sym S, sym fun);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user