From 980688cdaf274e80394bd9ead0bba957c40eaab2 Mon Sep 17 00:00:00 2001 From: Konstantin Zhuravlyov Date: Mon, 19 Dec 2016 16:54:24 +0000 Subject: [PATCH] [AMDGPU] When unifying metadata, add operands to named metadata individually Differential Revision: https://reviews.llvm.org/D27725 llvm-svn: 290114 --- llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp | 8 +++++--- llvm/test/CodeGen/AMDGPU/unify-metadata.ll | 17 +++++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp b/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp index 1118eee..bf501a1 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp @@ -100,7 +100,9 @@ namespace { NamedMD->eraseFromParent(); NamedMD = M.getOrInsertNamedMetadata(Name); - NamedMD->addOperand(MDNode::get(M.getContext(), All)); + for (const auto &MD : All) + NamedMD->addOperand(MDNode::get(M.getContext(), MD)); + return true; } }; @@ -133,10 +135,10 @@ bool AMDGPUUnifyMetadata::runOnModule(Module &M) { bool Changed = false; - for (auto &I:Vers) + for (auto &I : Vers) Changed |= unifyVersionMD(M, I, true); - for (auto &I:Exts) + for (auto &I : Exts) Changed |= unifyExtensionMD(M, I); return Changed; diff --git a/llvm/test/CodeGen/AMDGPU/unify-metadata.ll b/llvm/test/CodeGen/AMDGPU/unify-metadata.ll index 2b8eec8..9549b08 100644 --- a/llvm/test/CodeGen/AMDGPU/unify-metadata.ll +++ b/llvm/test/CodeGen/AMDGPU/unify-metadata.ll @@ -4,23 +4,28 @@ ; modules for records such as opencl.ocl.version, llvm.ident and similar. ; ALL-DAG: !opencl.ocl.version = !{![[OCL_VER:[0-9]+]]} -; ALL-DAG: !llvm.ident = !{![[LLVM_IDENT:[0-9]+]]} -; ALL-DAG: !opencl.used.extensions = !{![[USED_EXT:[0-9]+]]} +; ALL-DAG: !llvm.ident = !{![[LLVM_IDENT_0:[0-9]+]], ![[LLVM_IDENT_1:[0-9]+]]} +; ALL-DAG: !opencl.used.extensions = !{![[USED_EXT_0:[0-9]+]], ![[USED_EXT_1:[0-9]+]], ![[USED_EXT_2:[0-9]+]]} + ; ALL-DAG: ![[OCL_VER]] = !{i32 1, i32 2} -; ALL-DAG: ![[LLVM_IDENT]] = !{!"clang version 4.0 "} -; ALL-DAG: ![[USED_EXT]] = !{!"cl_images", !"cl_khr_fp16", !"cl_doubles"} +; ALL-DAG: ![[LLVM_IDENT_0]] = !{!"clang version 4.0"} +; ALL-DAG: ![[LLVM_IDENT_1]] = !{!"clang version 4.0 (rLXXXXXX)"} +; ALL-DAG: ![[USED_EXT_0]] = !{!"cl_images"} +; ALL-DAG: ![[USED_EXT_1]] = !{!"cl_khr_fp16"} +; ALL-DAG: ![[USED_EXT_2]] = !{!"cl_doubles"} define void @test() { ret void } !opencl.ocl.version = !{!1, !0, !0, !0} -!llvm.ident = !{!2, !2, !2, !2} +!llvm.ident = !{!2, !2, !2, !2, !6} !opencl.used.extensions = !{!3, !3, !4, !5} !0 = !{i32 2, i32 0} !1 = !{i32 1, i32 2} -!2 = !{!"clang version 4.0 "} +!2 = !{!"clang version 4.0"} !3 = !{!"cl_images", !"cl_khr_fp16"} !4 = !{!"cl_images", !"cl_doubles"} !5 = !{} +!6 = !{!"clang version 4.0 (rLXXXXXX)"} -- 2.7.4