[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