Skip to content

Commit 5c85d52

Browse files
committed
Generate global openmp metadata to trigger llvm openmp-opt pass
1 parent 9b81629 commit 5c85d52

2 files changed

Lines changed: 6 additions & 0 deletions

File tree

compiler/rustc_codegen_llvm/src/builder/gpu_offload.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ impl<'ll> OffloadGlobals<'ll> {
5555
let init_ty = cx.type_func(&[], cx.type_void());
5656
let init_rtls = declare_offload_fn(cx, "__tgt_init_all_rtls", init_ty);
5757

58+
// We want LLVM's openmp-opt pass to pick up and optimize this module, since it covers both
59+
// openmp and offload optimizations.
60+
llvm::add_module_flag_u32(cx.llmod(), llvm::ModuleFlagMergeBehavior::Max, "openmp", 51);
61+
5862
OffloadGlobals {
5963
launcher_fn,
6064
launcher_ty,

tests/codegen-llvm/gpu_offload/gpu_host.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,5 @@ pub fn _kernel_1(x: &mut [f32; 256]) {
104104
// CHECK-NEXT: call void @__tgt_unregister_lib(ptr nonnull %EmptyDesc)
105105
// CHECK-NEXT: ret void
106106
// CHECK-NEXT: }
107+
108+
// CHECK: !{i32 7, !"openmp", i32 51}

0 commit comments

Comments
 (0)