[flang-commits] [flang] [flang] Retain internal and BIND(C) host procedure link in FIR (PR #87796)
Slava Zakharin via flang-commits
flang-commits at lists.llvm.org
Fri Apr 5 08:59:53 PDT 2024
================
@@ -589,6 +589,21 @@ void Fortran::lower::CalleeInterface::setFuncAttrs(
static void addSymbolAttribute(mlir::func::FuncOp func,
const Fortran::semantics::Symbol &sym,
mlir::MLIRContext &mlirContext) {
+ // The link between an internal procedure and its host procedure is lost
+ // in FIR if the host is BIND(C) since the internal mangling will not
+ // allow retrieving the host bind(C) name, and therefore func.func symbol.
+ // Preserve it as an attribute so that this can be later retrieved.
+ if (sym.owner().kind() == Fortran::semantics::Scope::Kind::Subprogram)
+ if (const Fortran::semantics::Symbol *hostProcedure = sym.owner().symbol())
+ if (Fortran::semantics::IsBindCProcedure(*hostProcedure)) {
----------------
vzakhari wrote:
Just a suggestion: maybe we should just always set it for consistency. I think this should not affect readability of FIR too much.
https://github.com/llvm/llvm-project/pull/87796
More information about the flang-commits
mailing list