summaryrefslogtreecommitdiff
path: root/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'flang/lib/Optimizer/Transforms/AddDebugInfo.cpp')
-rw-r--r--flang/lib/Optimizer/Transforms/AddDebugInfo.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp b/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp
index 3e1209c9ccd5..69915741a88f 100644
--- a/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp
+++ b/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp
@@ -183,15 +183,15 @@ void AddDebugInfoPass::handleDeclareOp(fir::cg::XDeclareOp declOp,
return;
// If this DeclareOp actually represents a global then treat it as such.
- if (auto global = symbolTable->lookup<fir::GlobalOp>(declOp.getUniqName())) {
- handleGlobalOp(global, fileAttr, scopeAttr, typeGen, symbolTable, declOp);
- return;
+ mlir::Operation *defOp = declOp.getMemref().getDefiningOp();
+ if (defOp && llvm::isa<fir::AddrOfOp>(defOp)) {
+ if (auto global =
+ symbolTable->lookup<fir::GlobalOp>(declOp.getUniqName())) {
+ handleGlobalOp(global, fileAttr, scopeAttr, typeGen, symbolTable, declOp);
+ return;
+ }
}
- // Only accept local variables.
- if (result.second.procs.empty())
- return;
-
// FIXME: There may be cases where an argument is processed a bit before
// DeclareOp is generated. In that case, DeclareOp may point to an
// intermediate op and not to BlockArgument.