diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2015-11-20 14:50:35 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2015-11-20 14:50:35 +0000 |
commit | cded791923589322b993c18c19179d601943df87 (patch) | |
tree | f8729d6392d23ecf7ed26cc71ed090142cf675a0 /gcc/fortran | |
parent | 3be962317494f61771391c828558a240e3f37e19 (diff) | |
download | gcc-cded791923589322b993c18c19179d601943df87.zip gcc-cded791923589322b993c18c19179d601943df87.tar.gz gcc-cded791923589322b993c18c19179d601943df87.tar.bz2 |
[multiple changes]
2015-11-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/68237
* decl.c (gfc_match_submod_proc): Test the interface symbol
before accessing its attributes.
2015-11-20 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/66762
(gfc_get_symbol_decl): Test for attr.used_in_submodule as well
as attr.use_assoc (twice).
(gfc_create_module_variable): Ditto.
2015-11-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/68237
* gfortran.dg/submodule_12.f90: New test
PR fortran/66762
* gfortran.dg/submodule_6.f90: Add compile option -flto.
From-SVN: r230661
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/fortran/decl.c | 2 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 7 |
3 files changed, 19 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 3bd9743..1c38f95 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,16 @@ +2015-11-20 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/68237 + * decl.c (gfc_match_submod_proc): Test the interface symbol + before accessing its attributes. + +2015-11-20 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66762 + (gfc_get_symbol_decl): Test for attr.used_in_submodule as well + as attr.use_assoc (twice). + (gfc_create_module_variable): Ditto. + 2015-11-18 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/59910 @@ -7,7 +20,7 @@ 2015-11-18 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/43996 - * simplify.c (gfc_simplify_spread): Issue error for too large array + * simplify.c (gfc_simplify_spread): Issue error for too large array constructor in a PARAMETER statement. 2015-11-17 Steven G. Kargl <kargl@gcc.gnu.org> diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 6d76a7f..c4ce18b 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -7666,7 +7666,7 @@ gfc_match_submod_proc (void) /* Make sure that the result field is appropriately filled, even though the result symbol will be replaced later on. */ - if (sym->ts.interface->attr.function) + if (sym->ts.interface && sym->ts.interface->attr.function) { if (sym->ts.interface->result && sym->ts.interface->result != sym->ts.interface) diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 7e05e67..0e5eecc 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1497,7 +1497,7 @@ gfc_get_symbol_decl (gfc_symbol * sym) declaration. */ if ((sym->attr.flavor == FL_VARIABLE || sym->attr.flavor == FL_PARAMETER) - && sym->attr.use_assoc + && (sym->attr.use_assoc || sym->attr.used_in_submodule) && !intrinsic_array_parameter && sym->module && gfc_get_module_backend_decl (sym)) @@ -4499,7 +4499,7 @@ gfc_create_module_variable (gfc_symbol * sym) decl = sym->backend_decl; gcc_assert (sym->ns->proc_name->attr.flavor == FL_MODULE); - if (!sym->attr.use_assoc) + if (!sym->attr.use_assoc && !sym->attr.used_in_submodule) { gcc_assert (TYPE_CONTEXT (decl) == NULL_TREE || TYPE_CONTEXT (decl) == sym->ns->proc_name->backend_decl); @@ -4531,7 +4531,8 @@ gfc_create_module_variable (gfc_symbol * sym) /* Don't generate variables from other modules. Variables from COMMONs and Cray pointees will already have been generated. */ - if (sym->attr.use_assoc || sym->attr.in_common || sym->attr.cray_pointee) + if (sym->attr.use_assoc || sym->attr.used_in_submodule + || sym->attr.in_common || sym->attr.cray_pointee) return; /* Equivalenced variables arrive here after creation. */ |