[Mlir-commits] [mlir] [MLIR] Improve translation of DISubrange. (PR #93689)
Tobias Gysi
llvmlistbot at llvm.org
Fri May 31 11:04:48 PDT 2024
================
@@ -217,21 +217,32 @@ DISubprogramAttr DebugImporter::translateImpl(llvm::DISubprogram *node) {
}
DISubrangeAttr DebugImporter::translateImpl(llvm::DISubrange *node) {
- auto getIntegerAttrOrNull = [&](llvm::DISubrange::BoundType data) {
- if (auto *constInt = llvm::dyn_cast_or_null<llvm::ConstantInt *>(data))
+ auto getAttrOrNull = [&](llvm::DISubrange::BoundType data) -> Attribute {
+ if (data.isNull())
+ return nullptr;
+ if (auto *constInt = dyn_cast<llvm::ConstantInt *>(data))
return IntegerAttr::get(IntegerType::get(context, 64),
constInt->getSExtValue());
- return IntegerAttr();
+ if (auto *expr = dyn_cast<llvm::DIExpression *>(data))
+ return translateExpression(expr);
+ if (auto *var = dyn_cast<llvm::DIVariable *>(data)) {
+ if (auto *local = dyn_cast<llvm::DILocalVariable>(var))
+ return translate(local);
+ if (auto *global = dyn_cast<llvm::DIGlobalVariable>(var))
+ return translate(global);
+ return nullptr;
+ }
+ return nullptr;
};
- IntegerAttr count = getIntegerAttrOrNull(node->getCount());
- IntegerAttr upperBound = getIntegerAttrOrNull(node->getUpperBound());
+ mlir::Attribute count = getAttrOrNull(node->getCount());
+ mlir::Attribute upperBound = getAttrOrNull(node->getUpperBound());
----------------
gysit wrote:
```suggestion
Attribute count = getAttrOrNull(node->getCount());
Attribute upperBound = getAttrOrNull(node->getUpperBound());
```
nit: the mlir namespace is not necessary.
https://github.com/llvm/llvm-project/pull/93689
More information about the Mlir-commits
mailing list