[Mlir-commits] [mlir] [MLIR][LLVM] Support Recursive DITypes (PR #80251)
Tobias Gysi
llvmlistbot at llvm.org
Tue Mar 12 23:27:03 PDT 2024
================
@@ -201,22 +214,71 @@ DebugTranslation::translateImpl(DIGlobalVariableAttr attr) {
attr.getIsDefined(), nullptr, nullptr, attr.getAlignInBits(), nullptr);
}
+llvm::DIType *
+DebugTranslation::translateRecursive(DIRecursiveTypeAttrInterface attr) {
+ DistinctAttr recursiveId = attr.getRecId();
+ if (attr.isRecSelf()) {
+ auto *iter = recursiveTypeMap.find(recursiveId);
+ assert(iter != recursiveTypeMap.end() && "unbound DI recursive self type");
+ return iter->second;
+ }
+
+ auto setRecursivePlaceholder = [&](llvm::DIType *placeholder) {
+ auto [iter, inserted] =
+ recursiveTypeMap.try_emplace(recursiveId, placeholder);
+ assert(inserted && "illegal reuse of recursive id");
+ };
+
+ llvm::DIType *result =
+ TypeSwitch<DIRecursiveTypeAttrInterface, llvm::DIType *>(attr)
+ .Case<DICompositeTypeAttr>([&](auto attr) {
+ auto *placeholder = translateImplGetPlaceholder(attr);
----------------
gysit wrote:
Ah sure didn't get that :). Will do another review tonight!
https://github.com/llvm/llvm-project/pull/80251
More information about the Mlir-commits
mailing list