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.