From fd00010ba21c04bddb20aef52f62de5636075067 Mon Sep 17 00:00:00 2001 From: Thomas Koenig Date: Sat, 15 Feb 2025 11:38:05 +0100 Subject: Fix PR 118884, Lapack build failure. The fix for PR 118845 introduced new checks, which in turn exposed a case where the typespec information on a symbol generated symbol was not set. This led to an apparent type of BT_UNKNOWN, and hence an error. Fixed as obvoius and simple. gcc/fortran/ChangeLog: * frontend-passes.cc (check_externals_procedure): Copy typespec from old to new symbol. gcc/testsuite/ChangeLog: * gfortran.dg/interface_54.f90: New test. --- gcc/fortran/frontend-passes.cc | 1 + gcc/testsuite/gfortran.dg/interface_54.f90 | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/interface_54.f90 (limited to 'gcc') diff --git a/gcc/fortran/frontend-passes.cc b/gcc/fortran/frontend-passes.cc index 6b470b8..20bf6e1 100644 --- a/gcc/fortran/frontend-passes.cc +++ b/gcc/fortran/frontend-passes.cc @@ -5727,6 +5727,7 @@ check_externals_procedure (gfc_symbol *sym, locus *loc, gcc_assert (new_sym); new_sym->attr = sym->attr; new_sym->attr.if_source = IFSRC_DECL; + new_sym->ts = sym->ts; gfc_current_ns = gsym->ns; gfc_get_formal_from_actual_arglist (new_sym, actual); diff --git a/gcc/testsuite/gfortran.dg/interface_54.f90 b/gcc/testsuite/gfortran.dg/interface_54.f90 new file mode 100644 index 0000000..98318ca --- /dev/null +++ b/gcc/testsuite/gfortran.dg/interface_54.f90 @@ -0,0 +1,12 @@ +! { dg-do compile } +! PR 118884 - this used to be rejected due to confused interface +! checking. + +subroutine cget24 + external cslect + logical cslect + + call cgeesx(cslect) + if( cslect() ) print *,"foo" + call cgeesx(cslect) +end subroutine cget24 -- cgit v1.1