On Wed, 25 May 2011, Tom Tromey wrote: > I believe the bugs referenced here were the problem: > > http://gcc.gnu.org/ml/gcc-patches/2008-03/msg01680.html > > Both these bugs use .INTERMEDIATE in their test cases, but it isn't > clear to me that this is a sufficient condition.
The problem is that the reversion commit (r133652) doesn't mention .INTERMEDIATE or .SECONDARY, so I can't identify the particular feature that's causing the problems. But the problem feature isn't the includes of the dependency files, since the hang still occurs with those includes commented out. I think a new attempt at this should be more incremental: separate pieces might include: * Changes to the names under which files are built (to go in the relevant subdirectories). * Changes to avoid the need for so many compilation rules (setting variables for the relevant targets in one way or another). * Changes to the compilation rules to use $(COMPILE). * Changes to make $(COMPILE) generate automatic dependency files. * Changes to actually use those files. * Changes to ensure that, when the old manual dependencies are removed, generated headers still get built in time. * Changes to remove the old manual dependencies. With each patch tested against the reliable reproducer in <http://gcc.gnu.org/ml/gcc-patches/2008-03/msg01663.html>, it should hopefully be possible to get the benefits of some of the above changes without triggering the bug - and to understand better when the bug appears just what the cause is and whether it can be worked around or not. -- Joseph S. Myers jos...@codesourcery.com