summaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-decl.c
diff options
context:
space:
mode:
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2015-11-20 14:50:35 +0000
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2015-11-20 14:50:35 +0000
commitfe9d2f5af8bfc135040406ea88d194b5d88e6c0f (patch)
treef8729d6392d23ecf7ed26cc71ed090142cf675a0 /gcc/fortran/trans-decl.c
parent38f4c9671e70a0759fc63ab579db821d7ab6f704 (diff)
downloadgcc-fe9d2f5af8bfc135040406ea88d194b5d88e6c0f.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230661 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/trans-decl.c')
-rw-r--r--gcc/fortran/trans-decl.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 7e05e673a8c..0e5eecc70e4 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. */