xref: /llvm-project/llvm/lib/Transforms/Utils/DXILUpgrade.cpp (revision 71e3642619dd9d6f61b91eaf13298ef24d667d53)
1 //===- DXILUpgrade.cpp - Upgrade DXIL metadata to LLVM constructs ---------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "llvm/Transforms/Utils/DXILUpgrade.h"
10 
11 using namespace llvm;
12 
13 static bool handleValVerMetadata(Module &M) {
14   NamedMDNode *ValVer = M.getNamedMetadata("dx.valver");
15   if (!ValVer)
16     return false;
17 
18   // We don't need the validation version internally, so we drop it.
19   ValVer->dropAllReferences();
20   ValVer->eraseFromParent();
21   return true;
22 }
23 
24 PreservedAnalyses DXILUpgradePass::run(Module &M, ModuleAnalysisManager &AM) {
25   PreservedAnalyses PA;
26   // We never add, remove, or change functions here.
27   PA.preserve<FunctionAnalysisManagerModuleProxy>();
28   PA.preserveSet<AllAnalysesOn<Function>>();
29 
30   bool Changed = false;
31   Changed |= handleValVerMetadata(M);
32 
33   if (!Changed)
34     return PreservedAnalyses::all();
35   return PA;
36 }
37