[Bug fortran/45187] ICE with CRAY pointer in module
fxcoudert at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Jun 8 15:59:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45187
Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |fxcoudert at gcc dot gnu.org
Summary|ICE with CRAY pointer in |ICE with CRAY pointer in
|module depending on |module
|variable name |
--- Comment #2 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Confirm on current trunk. Also, I have an idea why it depends on the variable
name :)
The ICE is observed with any variable name that is lexicographically smaller
than "c_" (i.e., that sorts before "c_" in alphabetical order). I suppose we're
trying to create backend decls for the POINTER in this order, and it fails when
the variable has already been created before it.
Since the error is a "checking" in gfc_create_module_variable(), and we
probably simply need to bail out if the symbol is a Cray-pointee, here's a
suggested patch:
Index: trans-decl.c
===================================================================
--- trans-decl.c (revision 211315)
+++ trans-decl.c (working copy)
@@ -4282,6 +4282,10 @@ gfc_create_module_variable (gfc_symbol *
if (sym->attr.use_assoc || sym->attr.in_common)
return;
+ /* Cray pointees will be created elsewhere. */
+ if (sym->attr.cray_pointee)
+ return;
+
/* Equivalenced variables arrive here after creation. */
if (sym->backend_decl
&& (sym->equiv_built || sym->attr.in_equivalence))
More information about the Gcc-bugs
mailing list