[Bug fortran/51727] Changing module files
simonb at google dot com
gcc-bugzilla@gcc.gnu.org
Sat Oct 13 08:08:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51727
--- Comment #16 from Simon Baldwin <simonb at google dot com> 2012-10-13 08:08:30 UTC ---
(In reply to comment #15)
> ...
> This has not been the case since 2007, even though it appears to make a lot of
> sense...
I noticed the same thing while investigating this. write_symbol1 visits every
node and writes all unwritten ones, marking them written. Because writing a
node may add new nodes, write_symbol1's caller iterates it until no more writes
occur.
Before reporting the issue I tried several speculative solutions, with no real
success. I experimented with the two-step mechanism you mention, but could not
convince myself that it would solve the problem. A full tree built before
really writing any node still seemed to leave something ordered by
(unpredictable) pointer and with integer "tags" that are partially a function
of the pointers they represent. I'm not quite seeing how your patch fixes
this; it orders writes by tag *within* write_symbol1 calls, but not *across*
them.
It is hard to reproduce this problem at all. I see it in only one of multiple
gcc configurations. It is also hard to evaluate possible solutions -- adding a
failed "non-solution" can change the relationship between pointers enough to
make the symptoms disappear while not solving the actual problem.
More information about the Gcc-bugs
mailing list