Lines Matching defs:node
31 : cache([&](llvm::DINode *node) { return createRecSelf(node); }),
53 DIBasicTypeAttr DebugImporter::translateImpl(llvm::DIBasicType *node) {
54 return DIBasicTypeAttr::get(context, node->getTag(), node->getName(),
55 node->getSizeInBits(), node->getEncoding());
58 DICompileUnitAttr DebugImporter::translateImpl(llvm::DICompileUnit *node) {
60 symbolizeDIEmissionKind(node->getEmissionKind());
64 node->getNameTableKind()));
66 context, getOrCreateDistinctID(node), node->getSourceLanguage(),
67 translate(node->getFile()), getStringAttrOrNull(node->getRawProducer()),
68 node->isOptimized(), emissionKind.value(), nameTableKind.value());
71 DICompositeTypeAttr DebugImporter::translateImpl(llvm::DICompositeType *node) {
72 std::optional<DIFlags> flags = symbolizeDIFlags(node->getFlags());
78 for (llvm::DINode *element : node->getElements()) {
86 DITypeAttr baseType = translate(node->getBaseType());
89 if (node->getTag() == llvm::dwarf::DW_TAG_array_type && !baseType)
92 context, node->getTag(), getStringAttrOrNull(node->getRawName()),
93 translate(node->getFile()), node->getLine(), translate(node->getScope()),
94 baseType, flags.value_or(DIFlags::Zero), node->getSizeInBits(),
95 node->getAlignInBits(), elements,
96 translateExpression(node->getDataLocationExp()),
97 translateExpression(node->getRankExp()),
98 translateExpression(node->getAllocatedExp()),
99 translateExpression(node->getAssociatedExp()));
102 DIDerivedTypeAttr DebugImporter::translateImpl(llvm::DIDerivedType *node) {
104 DITypeAttr baseType = translate(node->getBaseType());
105 if (node->getBaseType() && !baseType)
108 translate(dyn_cast_or_null<llvm::DINode>(node->getExtraData()));
110 context, node->getTag(), getStringAttrOrNull(node->getRawName()),
111 baseType, node->getSizeInBits(), node->getAlignInBits(),
112 node->getOffsetInBits(), node->getDWARFAddressSpace(), extraData);
115 DIStringTypeAttr DebugImporter::translateImpl(llvm::DIStringType *node) {
117 context, node->getTag(), getStringAttrOrNull(node->getRawName()),
118 node->getSizeInBits(), node->getAlignInBits(),
119 translate(node->getStringLength()),
120 translateExpression(node->getStringLengthExp()),
121 translateExpression(node->getStringLocationExp()), node->getEncoding());
124 DIFileAttr DebugImporter::translateImpl(llvm::DIFile *node) {
125 return DIFileAttr::get(context, node->getFilename(), node->getDirectory());
128 DILabelAttr DebugImporter::translateImpl(llvm::DILabel *node) {
130 DIScopeAttr scope = translate(node->getScope());
131 if (node->getScope() && !scope)
134 getStringAttrOrNull(node->getRawName()),
135 translate(node->getFile()), node->getLine());
138 DILexicalBlockAttr DebugImporter::translateImpl(llvm::DILexicalBlock *node) {
140 DIScopeAttr scope = translate(node->getScope());
141 if (node->getScope() && !scope)
143 return DILexicalBlockAttr::get(context, scope, translate(node->getFile()),
144 node->getLine(), node->getColumn());
148 DebugImporter::translateImpl(llvm::DILexicalBlockFile *node) {
150 DIScopeAttr scope = translate(node->getScope());
151 if (node->getScope() && !scope)
153 return DILexicalBlockFileAttr::get(context, scope, translate(node->getFile()),
154 node->getDiscriminator());
158 DebugImporter::translateImpl(llvm::DIGlobalVariable *node) {
164 return StringAttr::get(context, node->getName());
167 context, translate(node->getScope()),
168 convertToStringAttr(node->getName()),
169 convertToStringAttr(node->getLinkageName()), translate(node->getFile()),
170 node->getLine(), translate(node->getType()), node->isLocalToUnit(),
171 node->isDefinition(), node->getAlignInBits());
174 DILocalVariableAttr DebugImporter::translateImpl(llvm::DILocalVariable *node) {
176 DIScopeAttr scope = translate(node->getScope());
177 if (node->getScope() && !scope)
180 context, scope, getStringAttrOrNull(node->getRawName()),
181 translate(node->getFile()), node->getLine(), node->getArg(),
182 node->getAlignInBits(), translate(node->getType()),
183 symbolizeDIFlags(node->getFlags()).value_or(DIFlags::Zero));
186 DIVariableAttr DebugImporter::translateImpl(llvm::DIVariable *node) {
187 return cast<DIVariableAttr>(translate(static_cast<llvm::DINode *>(node)));
190 DIScopeAttr DebugImporter::translateImpl(llvm::DIScope *node) {
191 return cast<DIScopeAttr>(translate(static_cast<llvm::DINode *>(node)));
194 DIModuleAttr DebugImporter::translateImpl(llvm::DIModule *node) {
196 context, translate(node->getFile()), translate(node->getScope()),
197 getStringAttrOrNull(node->getRawName()),
198 getStringAttrOrNull(node->getRawConfigurationMacros()),
199 getStringAttrOrNull(node->getRawIncludePath()),
200 getStringAttrOrNull(node->getRawAPINotesFile()), node->getLineNo(),
201 node->getIsDecl());
204 DINamespaceAttr DebugImporter::translateImpl(llvm::DINamespace *node) {
205 return DINamespaceAttr::get(context, getStringAttrOrNull(node->getRawName()),
206 translate(node->getScope()),
207 node->getExportSymbols());
211 DebugImporter::translateImpl(llvm::DIImportedEntity *node) {
213 for (llvm::DINode *element : node->getElements()) {
219 context, node->getTag(), translate(node->getScope()),
220 translate(node->getEntity()), translate(node->getFile()), node->getLine(),
221 getStringAttrOrNull(node->getRawName()), elements);
224 DISubprogramAttr DebugImporter::translateImpl(llvm::DISubprogram *node) {
227 if (node->isDistinct())
228 id = getOrCreateDistinctID(node);
231 DIScopeAttr scope = translate(node->getScope());
232 if (node->getScope() && !scope)
235 symbolizeDISubprogramFlags(node->getSubprogram()->getSPFlags());
237 DISubroutineTypeAttr type = translate(node->getType());
238 if (node->getType() && !type)
243 for (llvm::DINode *retainedNode : node->getRetainedNodes())
252 if (llvm::DINodeArray rawAnns = node->getAnnotations(); rawAnns) {
268 return DISubprogramAttr::get(context, id, translate(node->getUnit()), scope,
269 getStringAttrOrNull(node->getRawName()),
270 getStringAttrOrNull(node->getRawLinkageName()),
271 translate(node->getFile()), node->getLine(),
272 node->getScopeLine(), *subprogramFlags, type,
276 DISubrangeAttr DebugImporter::translateImpl(llvm::DISubrange *node) {
294 Attribute count = getAttrOrNull(node->getCount());
295 Attribute upperBound = getAttrOrNull(node->getUpperBound());
301 getAttrOrNull(node->getLowerBound()), upperBound,
302 getAttrOrNull(node->getStride()));
305 DICommonBlockAttr DebugImporter::translateImpl(llvm::DICommonBlock *node) {
306 return DICommonBlockAttr::get(context, translate(node->getScope()),
307 translate(node->getDecl()),
308 getStringAttrOrNull(node->getRawName()),
309 translate(node->getFile()), node->getLineNo());
313 DebugImporter::translateImpl(llvm::DIGenericSubrange *node) {
329 Attribute count = getAttrOrNull(node->getCount());
330 Attribute upperBound = getAttrOrNull(node->getUpperBound());
331 Attribute lowerBound = getAttrOrNull(node->getLowerBound());
332 Attribute stride = getAttrOrNull(node->getStride());
342 DebugImporter::translateImpl(llvm::DISubroutineType *node) {
344 for (llvm::DIType *type : node->getTypeArray()) {
358 return DISubroutineTypeAttr::get(context, node->getCC(), types);
361 DITypeAttr DebugImporter::translateImpl(llvm::DIType *node) {
362 return cast<DITypeAttr>(translate(static_cast<llvm::DINode *>(node)));
365 DINodeAttr DebugImporter::translate(llvm::DINode *node) {
366 if (!node)
370 auto cacheEntry = cache.lookupOrInit(node);
375 auto translateNode = [this](llvm::DINode *node) -> DINodeAttr {
376 if (auto *casted = dyn_cast<llvm::DIBasicType>(node))
378 if (auto *casted = dyn_cast<llvm::DICommonBlock>(node))
380 if (auto *casted = dyn_cast<llvm::DICompileUnit>(node))
382 if (auto *casted = dyn_cast<llvm::DICompositeType>(node))
384 if (auto *casted = dyn_cast<llvm::DIDerivedType>(node))
386 if (auto *casted = dyn_cast<llvm::DIStringType>(node))
388 if (auto *casted = dyn_cast<llvm::DIFile>(node))
390 if (auto *casted = dyn_cast<llvm::DIGlobalVariable>(node))
392 if (auto *casted = dyn_cast<llvm::DIImportedEntity>(node))
394 if (auto *casted = dyn_cast<llvm::DILabel>(node))
396 if (auto *casted = dyn_cast<llvm::DILexicalBlock>(node))
398 if (auto *casted = dyn_cast<llvm::DILexicalBlockFile>(node))
400 if (auto *casted = dyn_cast<llvm::DILocalVariable>(node))
402 if (auto *casted = dyn_cast<llvm::DIModule>(node))
404 if (auto *casted = dyn_cast<llvm::DINamespace>(node))
406 if (auto *casted = dyn_cast<llvm::DISubprogram>(node))
408 if (auto *casted = dyn_cast<llvm::DISubrange>(node))
410 if (auto *casted = dyn_cast<llvm::DIGenericSubrange>(node))
412 if (auto *casted = dyn_cast<llvm::DISubroutineType>(node))
416 if (DINodeAttr attr = translateNode(node)) {
417 // If this node was repeated, lookup its recursive ID and assign it to the
420 DistinctAttr recId = nodeToRecId.lookup(node);
431 /// Get the `getRecSelf` constructor for the translated type of `node` if its
434 getRecSelfConstructor(llvm::DINode *node) {
436 return TypeSwitch<llvm::DINode *, CtorType>(node)
446 std::optional<DINodeAttr> DebugImporter::createRecSelf(llvm::DINode *node) {
447 auto recSelfCtor = getRecSelfConstructor(node);
451 // The original node may have already been assigned a recursive ID from
453 DistinctAttr recId = nodeToRecId.lookup(node);
456 nodeToRecId[node] = recId;
486 DIExpressionAttr DebugImporter::translateExpression(llvm::DIExpression *node) {
487 if (!node)
493 for (const llvm::DIExpression::ExprOperand &op : node->expr_ops()) {
505 llvm::DIGlobalVariableExpression *node) {
507 context, translate(node->getVariable()),
508 translateExpression(node->getExpression()));
517 DistinctAttr DebugImporter::getOrCreateDistinctID(llvm::DINode *node) {
518 DistinctAttr &id = nodeToDistinctAttr[node];