|
| 1 | +#include "llvm/CodeGen/MachineFunction.h" |
| 2 | +#include "llvm/CodeGen/MachineFunctionPass.h" |
| 3 | +#include "llvm/CodeGen/MachineModuleInfo.h" |
| 4 | +#include "llvm/IR/DebugInfoMetadata.h" |
| 5 | +#include "llvm/IR/Metadata.h" |
| 6 | +#include "llvm/PassRegistry.h" |
| 7 | +#include "llvm/Support/Casting.h" |
| 8 | + |
| 9 | +namespace llvm { |
| 10 | +struct SPIRVEmitNonSemanticDI : public MachineFunctionPass { |
| 11 | + static char ID; |
| 12 | + SPIRVEmitNonSemanticDI(); |
| 13 | + |
| 14 | + bool runOnMachineFunction(MachineFunction &MF) override; |
| 15 | +}; |
| 16 | + |
| 17 | +void initializeSPIRVEmitNonSemanticDIPass(PassRegistry &); |
| 18 | + |
| 19 | +FunctionPass *createSPIRVEmitNonSemanticDIPass() { |
| 20 | + return new SPIRVEmitNonSemanticDI(); |
| 21 | +} |
| 22 | +} // namespace llvm |
| 23 | + |
| 24 | +using namespace llvm; |
| 25 | + |
| 26 | +INITIALIZE_PASS(SPIRVEmitNonSemanticDI, "spirv-nonsemantic-debug-info", |
| 27 | + "SPIRV NonSemantic.Shader.DebugInfo.100 emitter", false, false) |
| 28 | + |
| 29 | +char SPIRVEmitNonSemanticDI::ID = 0; |
| 30 | + |
| 31 | +SPIRVEmitNonSemanticDI::SPIRVEmitNonSemanticDI() : MachineFunctionPass(ID) { |
| 32 | + initializeSPIRVEmitNonSemanticDIPass(*PassRegistry::getPassRegistry()); |
| 33 | +} |
| 34 | + |
| 35 | +[[maybe_unused]] |
| 36 | +static void findCompileUnitDI(const MachineFunction &MF) { |
| 37 | + MachineModuleInfo &MMI = MF.getMMI(); |
| 38 | + const Module *M = MMI.getModule(); |
| 39 | + NamedMDNode *DbgCu = M->getNamedMetadata("llvm.dbg.cu"); |
| 40 | + std::string FilePath; |
| 41 | + if (DbgCu) { |
| 42 | + unsigned NumOp = DbgCu->getNumOperands(); |
| 43 | + if (NumOp) { |
| 44 | + if (const auto *CompileUnit = |
| 45 | + dyn_cast<DICompileUnit>(DbgCu->getOperand(0))) { |
| 46 | + DIFile *File = CompileUnit->getFile(); |
| 47 | + FilePath = ((File->getDirectory() + "/" + File->getFilename())).str(); |
| 48 | + } |
| 49 | + } |
| 50 | + } |
| 51 | +} |
| 52 | + |
| 53 | +bool SPIRVEmitNonSemanticDI::runOnMachineFunction(MachineFunction &MF) { |
| 54 | + return false; |
| 55 | +} |
0 commit comments