@@ -23,13 +23,14 @@ use rustc_middle::dep_graph;
2323use rustc_middle:: middle:: codegen_fn_attrs:: { CodegenFnAttrs , SanitizerFnAttrs } ;
2424use rustc_middle:: mir:: mono:: Visibility ;
2525use rustc_middle:: ty:: TyCtxt ;
26- use rustc_session:: config:: DebugInfo ;
26+ use rustc_session:: config:: { DebugInfo , Offload } ;
2727use rustc_span:: Symbol ;
2828use rustc_target:: spec:: SanitizerSet ;
2929
3030use super :: ModuleLlvm ;
3131use crate :: attributes;
3232use crate :: builder:: Builder ;
33+ use crate :: builder:: gpu_offload:: OffloadGlobals ;
3334use crate :: context:: CodegenCx ;
3435use crate :: llvm:: { self , Value } ;
3536
@@ -85,6 +86,13 @@ pub(crate) fn compile_codegen_unit(
8586 let llvm_module = ModuleLlvm :: new ( tcx, cgu_name. as_str ( ) ) ;
8687 {
8788 let mut cx = CodegenCx :: new ( tcx, cgu, & llvm_module) ;
89+
90+ if cx. sess ( ) . opts . unstable_opts . offload . contains ( & Offload :: Enable )
91+ && !cx. sess ( ) . target . is_like_gpu
92+ {
93+ cx. offload_globals . replace ( Some ( OffloadGlobals :: declare ( & cx) ) ) ;
94+ }
95+
8896 let mono_items = cx. codegen_unit . items_in_deterministic_order ( cx. tcx ) ;
8997 for & ( mono_item, data) in & mono_items {
9098 mono_item. predefine :: < Builder < ' _ , ' _ , ' _ > > (
0 commit comments