@@ -8,7 +8,7 @@ use rustc_codegen_ssa::{CodegenResults, CompiledModule, CrateInfo, ModuleKind};
88use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ;
99use rustc_middle:: dep_graph:: { WorkProduct , WorkProductId } ;
1010use rustc_middle:: middle:: cstore:: EncodedMetadata ;
11- use rustc_middle:: mir:: mono:: CodegenUnit ;
11+ use rustc_middle:: mir:: mono:: { CodegenUnit , MonoItem } ;
1212use rustc_session:: cgu_reuse_tracker:: CguReuse ;
1313use rustc_session:: config:: { DebugInfo , OutputType } ;
1414
@@ -148,7 +148,25 @@ fn module_codegen(tcx: TyCtxt<'_>, cgu_name: rustc_span::Symbol) -> ModuleCodege
148148 super :: predefine_mono_items ( & mut cx, & mono_items) ;
149149 for ( mono_item, ( linkage, visibility) ) in mono_items {
150150 let linkage = crate :: linkage:: get_clif_linkage ( mono_item, linkage, visibility) ;
151- super :: codegen_mono_item ( & mut cx, mono_item, linkage) ;
151+ match mono_item {
152+ MonoItem :: Fn ( inst) => {
153+ cx. tcx . sess . time ( "codegen fn" , || {
154+ crate :: base:: codegen_fn ( & mut cx, inst, linkage)
155+ } ) ;
156+ }
157+ MonoItem :: Static ( def_id) => {
158+ crate :: constant:: codegen_static ( & mut cx. constants_cx , def_id)
159+ }
160+ MonoItem :: GlobalAsm ( hir_id) => {
161+ let item = cx. tcx . hir ( ) . expect_item ( hir_id) ;
162+ if let rustc_hir:: ItemKind :: GlobalAsm ( rustc_hir:: GlobalAsm { asm } ) = item. kind {
163+ cx. global_asm . push_str ( & * asm. as_str ( ) ) ;
164+ cx. global_asm . push_str ( "\n \n " ) ;
165+ } else {
166+ bug ! ( "Expected GlobalAsm found {:?}" , item) ;
167+ }
168+ }
169+ }
152170 }
153171 let ( mut module, global_asm, debug, mut unwind_context) =
154172 tcx. sess . time ( "finalize CodegenCx" , || cx. finalize ( ) ) ;
0 commit comments