summaryrefslogtreecommitdiff
path: root/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp
diff options
context:
space:
mode:
authormingmingl <mingmingl@google.com>2025-02-04 11:11:14 -0800
committermingmingl <mingmingl@google.com>2025-02-04 11:11:14 -0800
commite91747a92d27ecf799427bf563f9f64f7c4d2447 (patch)
tree7aa5a8a9170deec293e152bdf2be804399dcd612 /flang/lib/Optimizer/Transforms/AddDebugInfo.cpp
parent3a8d9337d816aef41c3ca1484be8b933a71a3c46 (diff)
parent53d6e59b594639417cdbfcfa2d18cea64acb4009 (diff)
Merge branch 'main' into users/mingmingl-llvm/spr/sdpglobalvariableusers/mingmingl-llvm/spr/sdpglobalvariable
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.