[gcc r16-8060] Fortran: [PR121743] ICE in build_function_decl.
Jerry DeLisle
jvdelisle@gcc.gnu.org
Thu Mar 12 20:08:29 GMT 2026
https://gcc.gnu.org/g:89efa006922c80b8e9164cf593e0135df08a56a4
commit r16-8060-g89efa006922c80b8e9164cf593e0135df08a56a4
Author: Jerry DeLisle <jvdelisle@gcc.gnu.org>
Date: Thu Mar 12 10:23:47 2026 -0700
Fortran: [PR121743] ICE in build_function_decl.
PR fortran/121743
gcc/fortran/ChangeLog:
* trans-decl.cc (build_function_decl): Adjust the
gcc_assert condition to avoid the ICE.
gcc/testsuite/ChangeLog:
* gfortran.dg/pr121743.f90: New test.
Co-Authored-By: Gilles Gouaillardet <gilles.gouaillardet@gmail.com>
Diff:
---
gcc/fortran/trans-decl.cc | 2 ++
gcc/testsuite/gfortran.dg/pr121743.f90 | 11 +++++++++++
2 files changed, 13 insertions(+)
diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc
index 8649d0fbc819..0080e83fc369 100644
--- a/gcc/fortran/trans-decl.cc
+++ b/gcc/fortran/trans-decl.cc
@@ -2550,6 +2550,8 @@ build_function_decl (gfc_symbol * sym, bool global)
/* Allow only one nesting level. Allow public declarations. */
gcc_assert (current_function_decl == NULL_TREE
|| DECL_FILE_SCOPE_P (current_function_decl)
+ || (TREE_CODE (DECL_CONTEXT (current_function_decl))
+ == FUNCTION_DECL)
|| (TREE_CODE (DECL_CONTEXT (current_function_decl))
== NAMESPACE_DECL));
diff --git a/gcc/testsuite/gfortran.dg/pr121743.f90 b/gcc/testsuite/gfortran.dg/pr121743.f90
new file mode 100644
index 000000000000..29a1cdec2ac5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr121743.f90
@@ -0,0 +1,11 @@
+! PR fortran/121743
+! { dg-do compile }
+! { dg-options "-fcoarray=lib" }
+
+program pr121743
+end program pr121743
+subroutine foo ()
+ integer, allocatable, dimension(:), codimension[:] :: s
+ integer :: i
+ i = s(1)[1]
+end
More information about the Gcc-cvs
mailing list