44 llvm::DIGlobalVariableExpression *
54 template <
typename DIAttrT>
57 using LLVMTypeT = std::remove_pointer_t<
decltype(translateImpl(attr))>;
65 llvm::DILocation *inlinedAt);
68 llvm::DIFile *translateFile(StringRef fileName);
71 llvm::DIType *translateImpl(DINullTypeAttr attr);
72 llvm::DIBasicType *translateImpl(DIBasicTypeAttr attr);
73 llvm::DICompileUnit *translateImpl(DICompileUnitAttr attr);
74 llvm::DICompositeType *translateImpl(DICompositeTypeAttr attr);
75 llvm::DIDerivedType *translateImpl(DIDerivedTypeAttr attr);
76 llvm::DIStringType *translateImpl(DIStringTypeAttr attr);
77 llvm::DIFile *translateImpl(DIFileAttr attr);
78 llvm::DIImportedEntity *translateImpl(DIImportedEntityAttr attr);
79 llvm::DILabel *translateImpl(DILabelAttr attr);
80 llvm::DILexicalBlock *translateImpl(DILexicalBlockAttr attr);
81 llvm::DILexicalBlockFile *translateImpl(DILexicalBlockFileAttr attr);
83 llvm::DILocalVariable *translateImpl(DILocalVariableAttr attr);
84 llvm::DIGlobalVariable *translateImpl(DIGlobalVariableAttr attr);
86 llvm::DIModule *translateImpl(DIModuleAttr attr);
87 llvm::DINamespace *translateImpl(DINamespaceAttr attr);
89 llvm::DISubprogram *translateImpl(DISubprogramAttr attr);
90 llvm::DIGenericSubrange *translateImpl(DIGenericSubrangeAttr attr);
91 llvm::DISubrange *translateImpl(DISubrangeAttr attr);
92 llvm::DICommonBlock *translateImpl(DICommonBlockAttr attr);
93 llvm::DISubroutineType *translateImpl(DISubroutineTypeAttr attr);
101 llvm::DINode *translateRecursive(DIRecursiveTypeAttrInterface attr);
105 llvm::TempDICompositeType translateTemporaryImpl(DICompositeTypeAttr attr);
106 llvm::TempDISubprogram translateTemporaryImpl(DISubprogramAttr attr);
110 llvm::MDString *getMDStringOrNull(StringAttr stringAttr);
118 llvm::DIExpression *getExpressionAttrOrNull(DIExpressionAttr attr);
131 llvm::MapVector<DistinctAttr, llvm::DINode *> recursiveNodeMap;
141 llvm::StringMap<llvm::DIFile *> fileMap;
147 bool debugEmissionIsEnabled;
150 llvm::Module &llvmModule;
151 llvm::LLVMContext &llvmCtx;