aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2021-06-13 19:31:46 +0000
committerDimitry Andric <dim@FreeBSD.org>2021-06-13 19:37:19 +0000
commite8d8bef961a50d4dc22501cde4fb9fb0be1b2532 (patch)
tree94f04805f47bb7c59ae29690d8952b6074fff602 /contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp
parentbb130ff39747b94592cb26d71b7cb097b9a4ea6b (diff)
parentb60736ec1405bb0a8dd40989f67ef4c93da068ab (diff)
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp')
-rw-r--r--contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp66
1 files changed, 32 insertions, 34 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp b/contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp
index 281ae6d646e9..240b6c2ff462 100644
--- a/contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp
+++ b/contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp
@@ -12,14 +12,10 @@
//===----------------------------------------------------------------------===//
#include "AMDGPU.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/StringRef.h"
#include "llvm/IR/Constants.h"
-#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
+#include "llvm/IR/PassManager.h"
#include "llvm/Pass.h"
-#include <algorithm>
-#include <cassert>
using namespace llvm;
@@ -45,6 +41,7 @@ namespace {
private:
bool runOnModule(Module &M) override;
+ };
/// Unify version metadata.
/// \return true if changes are made.
@@ -96,7 +93,7 @@ namespace {
SmallVector<Metadata *, 4> All;
for (auto MD : NamedMD->operands())
for (const auto &Op : MD->operands())
- if (std::find(All.begin(), All.end(), Op.get()) == All.end())
+ if (!llvm::is_contained(All, Op.get()))
All.push_back(Op.get());
NamedMD->eraseFromParent();
@@ -106,41 +103,42 @@ namespace {
return true;
}
-};
-} // end anonymous namespace
+ bool unifyMetadataImpl(Module &M) {
+ const char *Vers[] = {kOCLMD::SpirVer, kOCLMD::OCLVer};
+ const char *Exts[] = {kOCLMD::UsedExt, kOCLMD::UsedOptCoreFeat,
+ kOCLMD::CompilerOptions, kOCLMD::LLVMIdent};
-char AMDGPUUnifyMetadata::ID = 0;
+ bool Changed = false;
-char &llvm::AMDGPUUnifyMetadataID = AMDGPUUnifyMetadata::ID;
+ for (auto &I : Vers)
+ Changed |= unifyVersionMD(M, I, true);
-INITIALIZE_PASS(AMDGPUUnifyMetadata, "amdgpu-unify-metadata",
- "Unify multiple OpenCL metadata due to linking",
- false, false)
+ for (auto &I : Exts)
+ Changed |= unifyExtensionMD(M, I);
-ModulePass* llvm::createAMDGPUUnifyMetadataPass() {
- return new AMDGPUUnifyMetadata();
-}
+ return Changed;
+ }
-bool AMDGPUUnifyMetadata::runOnModule(Module &M) {
- const char* Vers[] = {
- kOCLMD::SpirVer,
- kOCLMD::OCLVer
- };
- const char* Exts[] = {
- kOCLMD::UsedExt,
- kOCLMD::UsedOptCoreFeat,
- kOCLMD::CompilerOptions,
- kOCLMD::LLVMIdent
- };
+ } // end anonymous namespace
- bool Changed = false;
+ char AMDGPUUnifyMetadata::ID = 0;
- for (auto &I : Vers)
- Changed |= unifyVersionMD(M, I, true);
+ char &llvm::AMDGPUUnifyMetadataID = AMDGPUUnifyMetadata::ID;
- for (auto &I : Exts)
- Changed |= unifyExtensionMD(M, I);
+ INITIALIZE_PASS(AMDGPUUnifyMetadata, "amdgpu-unify-metadata",
+ "Unify multiple OpenCL metadata due to linking", false, false)
- return Changed;
-}
+ ModulePass *llvm::createAMDGPUUnifyMetadataPass() {
+ return new AMDGPUUnifyMetadata();
+ }
+
+ bool AMDGPUUnifyMetadata::runOnModule(Module &M) {
+ return unifyMetadataImpl(M);
+ }
+
+ PreservedAnalyses AMDGPUUnifyMetadataPass::run(Module &M,
+ ModuleAnalysisManager &AM) {
+ return unifyMetadataImpl(M) ? PreservedAnalyses::none()
+ : PreservedAnalyses::all();
+ }