[Bug fortran/58007] [OOP] ICE in free_pi_tree(): Unresolved fixup - resolve_fixups does not fixup component of __class_bsr_Bsr_matrix

mikael at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Aug 13 11:47:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58007

Mikael Morin <mikael at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mikael at gcc dot gnu.org

--- Comment #5 from Mikael Morin <mikael at gcc dot gnu.org> ---
I suppose the following is happening (based on Janus' test):

 - At the time bsr is use-associated we see references to
matrix::sparse_matrix, but as the type has already been loaded, we redirect
references to matrix::sparse_matrix to the one already loaded.  See
read_module, the code that comes after the comment:
      /* See if the symbol has already been loaded by a previous module.
     If so, we reference the existing symbol and prevent it from
     being loaded again.  This should not happen if the symbol being
     read is an index for an assumed shape dummy array (ns != 1).  */

 - Normally, mio_component (called from mio_component_list, from mio_symbol)
associates a component pointer to the corresponding pointer id so that it can
be referenced in expressions for example.  As the type is not loaded from file
(see above) the association isn't done either.

 - get_neighbors contains an expression (in the result's array spec)
referencing max_degree, one of matrix::sparse_matrix's components.  Because of
the above, the reference is not associated with the corresponding component
pointer, and it leads to the internal error.



More information about the Gcc-bugs mailing list