aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2019-10-18 17:27:06 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2019-10-18 17:27:06 +0000
commitb941459c5f0931937fe18cb25bdd608a3933ec20 (patch)
treeb4453e7f56b6f0a2c4e0f7e76f6ee722c3a79ae9 /gcc/fortran
parent9e0d2031c32b748eaf3ea89082c0f8658edcbf82 (diff)
downloadgcc-b941459c5f0931937fe18cb25bdd608a3933ec20.zip
gcc-b941459c5f0931937fe18cb25bdd608a3933ec20.tar.gz
gcc-b941459c5f0931937fe18cb25bdd608a3933ec20.tar.bz2
re PR fortran/69455 ([F08] Assembler error(s) when using intrinsic modules in two BLOCK)
2019-10-18 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/69455 * trans-decl.c (generate_local_decl): Avoid misconstructed intrinsic modules in a BLOCK construct. 2019-10-18 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/69455 * gfortran.dg/pr69455_1.f90: New test. * gfortran.dg/pr69455_2.f90: Ditto. From-SVN: r277158
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c9
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 8a1beea..5ba62d2 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2019-10-18 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/69455
+ * trans-decl.c (generate_local_decl): Avoid misconstructed
+ intrinsic modules in a BLOCK construct.
+
2019-10-18 Tobias Burnus <tobias@codesourcery.com>
PR fortran/91586
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 3ad802e..fc295b4 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -5987,7 +5987,14 @@ generate_local_decl (gfc_symbol * sym)
if (sym->ns && sym->ns->construct_entities)
{
- if (sym->attr.referenced)
+ /* Construction of the intrinsic modules within a BLOCK
+ construct, where ONLY and RENAMED entities are included,
+ seems to be bogus. This is a workaround that can be removed
+ if someone ever takes on the task to creating full-fledge
+ modules. See PR 69455. */
+ if (sym->attr.referenced
+ && sym->from_intmod != INTMOD_ISO_C_BINDING
+ && sym->from_intmod != INTMOD_ISO_FORTRAN_ENV)
gfc_get_symbol_decl (sym);
sym->mark = 1;
}