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