From: Jerry DeLisle Date: Sat, 11 Jul 2026 04:47:59 +0000 (-0700) Subject: fortran: [PR78718] ICE in gfc_get_symbol_decl, at fortran/trans-decl.c X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b2c44478da133c8ac81bf3fdb67c1fdd8e38d61a;p=thirdparty%2Fgcc.git fortran: [PR78718] ICE in gfc_get_symbol_decl, at fortran/trans-decl.c PR fortran/78718 gcc/fortran/ChangeLog: * resolve.cc (was_declared): Recognize the RESULT attribute so a function's result variable is not mistaken for a host-associated symbol of the same name. gcc/testsuite/ChangeLog: * gfortran.dg/func_result_8.f90: New test. --- diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 5f3edb37aa4..036da9a939e 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -1655,7 +1655,7 @@ was_declared (gfc_symbol *sym) if (a.allocatable || a.dimension || a.dummy || a.external || a.intrinsic || a.optional || a.pointer || a.save || a.target || a.volatile_ || a.value || a.access != ACCESS_UNKNOWN || a.intent != INTENT_UNKNOWN - || a.asynchronous || a.codimension || a.subroutine) + || a.asynchronous || a.codimension || a.subroutine || a.result) return 1; return 0; diff --git a/gcc/testsuite/gfortran.dg/func_result_8.f90 b/gcc/testsuite/gfortran.dg/func_result_8.f90 new file mode 100644 index 00000000000..bbe0b25395c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/func_result_8.f90 @@ -0,0 +1,17 @@ +! { dg-do run } +! +! PR fortran/78718 +program p + integer :: n, m + n = 1 + if (f() /= 1) stop 1 +contains + function f() result(m) + call s(n, m) + end function +end program + +subroutine s(a, b) + integer :: a, b + b = a +end subroutine