aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-decl.cc
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2024-09-05 21:30:25 +0200
committerHarald Anlauf <anlauf@gmx.de>2024-09-05 21:30:25 +0200
commit1f462b5072a5e82c35921f7e3bdf3959c4a49dc9 (patch)
tree32b2cd2d5fd6cdcab09a9eb9bc768c5cd79b93d6 /gcc/fortran/trans-decl.cc
parentd9d34f9a91371dea4bab0b54b2d7f762a6cc23e0 (diff)
downloadgcc-1f462b5072a5e82c35921f7e3bdf3959c4a49dc9.zip
gcc-1f462b5072a5e82c35921f7e3bdf3959c4a49dc9.tar.gz
gcc-1f462b5072a5e82c35921f7e3bdf3959c4a49dc9.tar.bz2
Fortran: fix ICE in gfc_create_module_variable [PR100273]
gcc/fortran/ChangeLog: PR fortran/100273 * trans-decl.cc (gfc_create_module_variable): Handle module variable also when it is needed for the result specification of a contained function. gcc/testsuite/ChangeLog: PR fortran/100273 * gfortran.dg/pr100273.f90: New test.
Diffstat (limited to 'gcc/fortran/trans-decl.cc')
-rw-r--r--gcc/fortran/trans-decl.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc
index 6692ac7..ee41d66 100644
--- a/gcc/fortran/trans-decl.cc
+++ b/gcc/fortran/trans-decl.cc
@@ -5540,7 +5540,8 @@ gfc_create_module_variable (gfc_symbol * sym)
/* Create the variable. */
pushdecl (decl);
gcc_assert (sym->ns->proc_name->attr.flavor == FL_MODULE
- || (sym->ns->parent->proc_name->attr.flavor == FL_MODULE
+ || ((sym->ns->parent->proc_name->attr.flavor == FL_MODULE
+ || sym->ns->parent->proc_name->attr.flavor == FL_PROCEDURE)
&& sym->fn_result_spec));
DECL_CONTEXT (decl) = sym->ns->proc_name->backend_decl;
rest_of_decl_compilation (decl, 1, 0);