OpenMPOpt: Fix introducing empty nvvm.annotations into module
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Sun, 1 Jan 2023 19:33:15 +0000 (14:33 -0500)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 3 Jan 2023 15:32:10 +0000 (10:32 -0500)
llvm/lib/Transforms/IPO/OpenMPOpt.cpp
llvm/test/Transforms/OpenMP/no-insert-nvvm-annotations.ll [new file with mode: 0644]

index f78422f..f752ff8 100644 (file)
@@ -5122,7 +5122,7 @@ PreservedAnalyses OpenMPOptCGSCCPass::run(LazyCallGraph::SCC &C,
 
 KernelSet llvm::omp::getDeviceKernels(Module &M) {
   // TODO: Create a more cross-platform way of determining device kernels.
-  NamedMDNode *MD = M.getOrInsertNamedMetadata("nvvm.annotations");
+  NamedMDNode *MD = M.getNamedMetadata("nvvm.annotations");
   KernelSet Kernels;
 
   if (!MD)
diff --git a/llvm/test/Transforms/OpenMP/no-insert-nvvm-annotations.ll b/llvm/test/Transforms/OpenMP/no-insert-nvvm-annotations.ll
new file mode 100644 (file)
index 0000000..62d8e1e
--- /dev/null
@@ -0,0 +1,12 @@
+; RUN: opt -S -passes=openmp-opt < %s | FileCheck %s
+; Make sure nvvm.annotations isn't introduced into the module
+
+; CHECK-NOT: nvvm
+
+define amdgpu_kernel void @foo() {
+  ret void
+}
+
+!llvm.module.flags = !{!0}
+
+!0 = !{i32 7, !"openmp", i32 50}