Lines Matching defs:attr
77 llvm::DIType *DebugTranslation::translateImpl(DINullTypeAttr attr) {
87 DebugTranslation::getExpressionAttrOrNull(DIExpressionAttr attr) {
88 if (!attr)
90 return translateExpression(attr);
104 llvm::map_range(elements, [&](DINodeAttr attr) -> llvm::Metadata * {
105 if (DIAnnotationAttr annAttr = dyn_cast<DIAnnotationAttr>(attr)) {
111 return translate(attr);
116 llvm::DIBasicType *DebugTranslation::translateImpl(DIBasicTypeAttr attr) {
118 llvmCtx, attr.getTag(), getMDStringOrNull(attr.getName()),
119 attr.getSizeInBits(),
120 /*AlignInBits=*/0, attr.getEncoding(), llvm::DINode::FlagZero);
123 llvm::DICompileUnit *DebugTranslation::translateImpl(DICompileUnitAttr attr) {
126 attr.getSourceLanguage(), translate(attr.getFile()),
127 attr.getProducer() ? attr.getProducer().getValue() : "",
128 attr.getIsOptimized(),
131 attr.getEmissionKind()),
134 attr.getNameTableKind()));
147 DebugTranslation::translateTemporaryImpl(DICompositeTypeAttr attr) {
149 llvmCtx, attr.getTag(), getMDStringOrNull(attr.getName()), nullptr,
150 attr.getLine(), nullptr, nullptr, attr.getSizeInBits(),
151 attr.getAlignInBits(),
153 /*Flags=*/static_cast<llvm::DINode::DIFlags>(attr.getFlags()),
159 DebugTranslation::translateTemporaryImpl(DISubprogramAttr attr) {
162 /*File=*/nullptr, attr.getLine(), /*Type=*/nullptr,
165 static_cast<llvm::DISubprogram::DISPFlags>(attr.getSubprogramFlags()),
170 DebugTranslation::translateImpl(DICompositeTypeAttr attr) {
174 switch (attr.getTag()) {
183 isDistinct, llvmCtx, attr.getTag(), getMDStringOrNull(attr.getName()),
184 translate(attr.getFile()), attr.getLine(), translate(attr.getScope()),
185 translate(attr.getBaseType()), attr.getSizeInBits(),
186 attr.getAlignInBits(),
188 /*Flags=*/static_cast<llvm::DINode::DIFlags>(attr.getFlags()),
189 getMDTupleOrNull(attr.getElements()),
193 getExpressionAttrOrNull(attr.getDataLocation()),
194 getExpressionAttrOrNull(attr.getAssociated()),
195 getExpressionAttrOrNull(attr.getAllocated()),
196 getExpressionAttrOrNull(attr.getRank()));
199 llvm::DIDerivedType *DebugTranslation::translateImpl(DIDerivedTypeAttr attr) {
201 llvmCtx, attr.getTag(), getMDStringOrNull(attr.getName()),
203 /*Scope=*/nullptr, translate(attr.getBaseType()), attr.getSizeInBits(),
204 attr.getAlignInBits(), attr.getOffsetInBits(),
205 attr.getDwarfAddressSpace(), /*PtrAuthData=*/std::nullopt,
206 /*Flags=*/llvm::DINode::FlagZero, translate(attr.getExtraData()));
209 llvm::DIStringType *DebugTranslation::translateImpl(DIStringTypeAttr attr) {
211 llvmCtx, attr.getTag(), getMDStringOrNull(attr.getName()),
212 translate(attr.getStringLength()),
213 getExpressionAttrOrNull(attr.getStringLengthExp()),
214 getExpressionAttrOrNull(attr.getStringLocationExp()),
215 attr.getSizeInBits(), attr.getAlignInBits(), attr.getEncoding());
218 llvm::DIFile *DebugTranslation::translateImpl(DIFileAttr attr) {
219 return llvm::DIFile::get(llvmCtx, getMDStringOrNull(attr.getName()),
220 getMDStringOrNull(attr.getDirectory()));
223 llvm::DILabel *DebugTranslation::translateImpl(DILabelAttr attr) {
224 return llvm::DILabel::get(llvmCtx, translate(attr.getScope()),
225 getMDStringOrNull(attr.getName()),
226 translate(attr.getFile()), attr.getLine());
229 llvm::DILexicalBlock *DebugTranslation::translateImpl(DILexicalBlockAttr attr) {
230 return llvm::DILexicalBlock::getDistinct(llvmCtx, translate(attr.getScope()),
231 translate(attr.getFile()),
232 attr.getLine(), attr.getColumn());
236 DebugTranslation::translateImpl(DILexicalBlockFileAttr attr) {
238 llvmCtx, translate(attr.getScope()), translate(attr.getFile()),
239 attr.getDiscriminator());
242 llvm::DILocalScope *DebugTranslation::translateImpl(DILocalScopeAttr attr) {
243 return cast<llvm::DILocalScope>(translate(DINodeAttr(attr)));
246 llvm::DIVariable *DebugTranslation::translateImpl(DIVariableAttr attr) {
247 return cast<llvm::DIVariable>(translate(DINodeAttr(attr)));
251 DebugTranslation::translateImpl(DILocalVariableAttr attr) {
253 llvmCtx, translate(attr.getScope()), getMDStringOrNull(attr.getName()),
254 translate(attr.getFile()), attr.getLine(), translate(attr.getType()),
255 attr.getArg(), static_cast<llvm::DINode::DIFlags>(attr.getFlags()),
256 attr.getAlignInBits(),
261 DebugTranslation::translateImpl(DIGlobalVariableAttr attr) {
263 llvmCtx, translate(attr.getScope()), getMDStringOrNull(attr.getName()),
264 getMDStringOrNull(attr.getLinkageName()), translate(attr.getFile()),
265 attr.getLine(), translate(attr.getType()), attr.getIsLocalToUnit(),
266 attr.getIsDefined(), nullptr, nullptr, attr.getAlignInBits(), nullptr);
270 DebugTranslation::translateRecursive(DIRecursiveTypeAttrInterface attr) {
271 DistinctAttr recursiveId = attr.getRecId();
276 assert(!attr.getIsRecSelf() && "unbound DI recursive self reference");
283 TypeSwitch<DIRecursiveTypeAttrInterface, llvm::DINode *>(attr)
284 .Case<DICompositeTypeAttr>([&](auto attr) {
285 auto temporary = translateTemporaryImpl(attr);
289 auto *concrete = translateImpl(attr);
293 .Case<DISubprogramAttr>([&](auto attr) {
294 auto temporary = translateTemporaryImpl(attr);
298 auto *concrete = translateImpl(attr);
310 llvm::DIScope *DebugTranslation::translateImpl(DIScopeAttr attr) {
311 return cast<llvm::DIScope>(translate(DINodeAttr(attr)));
314 llvm::DISubprogram *DebugTranslation::translateImpl(DISubprogramAttr attr) {
315 if (auto iter = distinctAttrToNode.find(attr.getId());
319 llvm::DIScope *scope = translate(attr.getScope());
320 llvm::DIFile *file = translate(attr.getFile());
321 llvm::DIType *type = translate(attr.getType());
322 llvm::DICompileUnit *compileUnit = translate(attr.getCompileUnit());
326 if (auto iter = distinctAttrToNode.find(attr.getId());
330 bool isDefinition = static_cast<bool>(attr.getSubprogramFlags() &
334 isDefinition, llvmCtx, scope, getMDStringOrNull(attr.getName()),
335 getMDStringOrNull(attr.getLinkageName()), file, attr.getLine(), type,
336 attr.getScopeLine(),
339 static_cast<llvm::DISubprogram::DISPFlags>(attr.getSubprogramFlags()),
341 getMDTupleOrNull(attr.getRetainedNodes()), nullptr,
342 getMDTupleOrNull(attr.getAnnotations()));
343 if (attr.getId())
344 distinctAttrToNode.try_emplace(attr.getId(), node);
348 llvm::DIModule *DebugTranslation::translateImpl(DIModuleAttr attr) {
350 llvmCtx, translate(attr.getFile()), translate(attr.getScope()),
351 getMDStringOrNull(attr.getName()),
352 getMDStringOrNull(attr.getConfigMacros()),
353 getMDStringOrNull(attr.getIncludePath()),
354 getMDStringOrNull(attr.getApinotes()), attr.getLine(), attr.getIsDecl());
357 llvm::DINamespace *DebugTranslation::translateImpl(DINamespaceAttr attr) {
358 return llvm::DINamespace::get(llvmCtx, translate(attr.getScope()),
359 getMDStringOrNull(attr.getName()),
360 attr.getExportSymbols());
364 DebugTranslation::translateImpl(DIImportedEntityAttr attr) {
366 llvmCtx, attr.getTag(), translate(attr.getScope()),
367 translate(attr.getEntity()), translate(attr.getFile()), attr.getLine(),
368 getMDStringOrNull(attr.getName()), getMDTupleOrNull(attr.getElements()));
371 llvm::DISubrange *DebugTranslation::translateImpl(DISubrangeAttr attr) {
372 auto getMetadataOrNull = [&](Attribute attr) -> llvm::Metadata * {
373 if (!attr)
377 llvm::TypeSwitch<Attribute, llvm::Metadata *>(attr)
391 .Default([&](Attribute attr) { return nullptr; });
394 return llvm::DISubrange::get(llvmCtx, getMetadataOrNull(attr.getCount()),
395 getMetadataOrNull(attr.getLowerBound()),
396 getMetadataOrNull(attr.getUpperBound()),
397 getMetadataOrNull(attr.getStride()));
400 llvm::DICommonBlock *DebugTranslation::translateImpl(DICommonBlockAttr attr) {
401 return llvm::DICommonBlock::get(llvmCtx, translate(attr.getScope()),
402 translate(attr.getDecl()),
403 getMDStringOrNull(attr.getName()),
404 translate(attr.getFile()), attr.getLine());
408 DebugTranslation::translateImpl(DIGenericSubrangeAttr attr) {
409 auto getMetadataOrNull = [&](Attribute attr) -> llvm::Metadata * {
410 if (!attr)
414 llvm::TypeSwitch<Attribute, llvm::Metadata *>(attr)
424 .Default([&](Attribute attr) { return nullptr; });
428 getMetadataOrNull(attr.getCount()),
429 getMetadataOrNull(attr.getLowerBound()),
430 getMetadataOrNull(attr.getUpperBound()),
431 getMetadataOrNull(attr.getStride()));
435 DebugTranslation::translateImpl(DISubroutineTypeAttr attr) {
438 for (DITypeAttr type : attr.getTypes())
441 llvmCtx, llvm::DINode::FlagZero, attr.getCallingConvention(),
445 llvm::DIType *DebugTranslation::translateImpl(DITypeAttr attr) {
446 return cast<llvm::DIType>(translate(DINodeAttr(attr)));
449 llvm::DINode *DebugTranslation::translate(DINodeAttr attr) {
450 if (!attr)
453 if (llvm::DINode *node = attrToNode.lookup(attr))
459 if (auto recTypeAttr = dyn_cast<DIRecursiveTypeAttrInterface>(attr))
464 node = TypeSwitch<DINodeAttr, llvm::DINode *>(attr)
472 [&](auto attr) { return translateImpl(attr); });
475 attrToNode.insert({attr, node});
492 DebugTranslation::translateExpression(LLVM::DIExpressionAttr attr) {
494 if (attr) {
496 for (const DIExpressionElemAttr &op : attr.getOperations()) {
506 LLVM::DIGlobalVariableExpressionAttr attr) {
508 llvmCtx, translate(attr.getVar()), translateExpression(attr.getExpr()));