diff --git a/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp b/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp index 3a437c7a0f013..a8e9d198ccb97 100644 --- a/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp +++ b/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp @@ -121,9 +121,9 @@ void AddDebugInfoPass::handleDeclareOp(fir::cg::XDeclareOp declOp, // constant attribute of [hl]fir.declare/fircg.ext_declare operation that has // a dummy_scope operand). unsigned argNo = 0; - if (fir::isDummyArgument(declOp.getMemref())) { - auto arg = llvm::cast(declOp.getMemref()); - argNo = arg.getArgNumber() + 1; + if (declOp.getDummyScope()) { + if (auto arg = llvm::dyn_cast(declOp.getMemref())) + argNo = arg.getArgNumber() + 1; } auto tyAttr = typeGen.convertType(fir::unwrapRefType(declOp.getType()), diff --git a/flang/test/Integration/debug-116525.f90 b/flang/test/Integration/debug-116525.f90 new file mode 100644 index 0000000000000..1916a34df4c12 --- /dev/null +++ b/flang/test/Integration/debug-116525.f90 @@ -0,0 +1,12 @@ +! RUN: %flang_fc1 -fopenmp -emit-llvm -debug-info-kind=standalone %s -o - + +! Test that this does not cause build failure. +function s(x) + character(len=2) :: x, s, ss + + s = x + + entry ss() + +end function s +