diff options
Diffstat (limited to 'flang/lib/Optimizer/Transforms/AddDebugInfo.cpp')
| -rw-r--r-- | flang/lib/Optimizer/Transforms/AddDebugInfo.cpp | 14 |
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. |
