File tree Expand file tree Collapse file tree 2 files changed +31
-0
lines changed
compiler/rustc_passes/src
src/test/codegen-units/item-collection Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -116,6 +116,17 @@ impl<'tcx> Visitor<'tcx> for ReachableContext<'tcx> {
116116
117117 intravisit:: walk_expr ( self , expr)
118118 }
119+
120+ fn visit_inline_asm ( & mut self , asm : & ' tcx hir:: InlineAsm < ' tcx > , id : hir:: HirId ) {
121+ for ( op, _) in asm. operands {
122+ if let hir:: InlineAsmOperand :: SymStatic { def_id, .. } = op {
123+ if let Some ( def_id) = def_id. as_local ( ) {
124+ self . reachable_symbols . insert ( def_id) ;
125+ }
126+ }
127+ }
128+ intravisit:: walk_inline_asm ( self , asm, id) ;
129+ }
119130}
120131
121132impl < ' tcx > ReachableContext < ' tcx > {
Original file line number Diff line number Diff line change 1+ // needs-asm-support
2+ // compile-flags: -Ccodegen-units=1 -Zprint-mono-items=lazy --crate-type=lib
3+
4+ #[ inline( always) ]
5+ pub unsafe fn f ( ) {
6+ //~ MONO_ITEM static f::S @@ asm_sym-cgu.0[External]
7+ static S : usize = 1 ;
8+ //~ MONO_ITEM fn f::fun @@ asm_sym-cgu.0[External]
9+ fn fun ( ) { }
10+ core:: arch:: asm!( "/* {0} {1} */" , sym S , sym fun) ;
11+ }
12+
13+ //~ MONO_ITEM fn g @@ asm_sym-cgu.0[External]
14+ pub unsafe fn g ( ) {
15+ //~ MONO_ITEM static g::S @@ asm_sym-cgu.0[Internal]
16+ static S : usize = 2 ;
17+ //~ MONO_ITEM fn g::fun @@ asm_sym-cgu.0[Internal]
18+ fn fun ( ) { }
19+ core:: arch:: asm!( "/* {0} {1} */" , sym S , sym fun) ;
20+ }
You can’t perform that action at this time.
0 commit comments