Dear Tobias,
On 2011-11-01 22:33, Tobias Burnus wrote:
Regarding the tree-walking issue: I think it is a general issue which could also affect other things. I really wonder why we haven't been bitten by it before. However, it might be that we hit those problems and fixed them by "re"-resolving symbols at later parts. My feeling is that the issue occurs either only with vtab/vtree or at least also due to those functions. However, I might be wrong as I do not quickly see which of the tree-traversal callers can generate new trees.
I don't remember all this very clearly, but I think that the gfc_symbol::tlink field is intended for something like this, even though this is not very clear (at least to me) from the explanatory comment I quoted below. Anyway, I thought I might point this out, as it might help you getting things working since the problem it addresses at least appears similar:
/* Change management fields. Symbols that might be modified by the current statement have the mark member nonzero and are kept in a singly linked list through the tlink field. Of these symbols, symbols with old_symbol equal to NULL are symbols created within the current statement. Otherwise, old_symbol points to a copy of the old symbol. */ struct gfc_symbol *old_symbol, *tlink; Cheers, - Tobi