> On Sat, Apr 18, 2009 at 7:01 PM, Dave Korn > <dave.korn.cyg...@googlemail.com> wrote: > > > > Hi, > > > > I'm getting a stack overflow caused by *very* deep recursion while trying > > to > > build gnu/javax/swing/text/html/parser/HTML_401F.o in libjava, bootstrapping > > HEAD on i686-pc-cygwin. > > > > With the default per-thread stack size of 2MB, it crashes in > > tree_ssa_phiprop_1(), which by the time of the crash has recursed to a depth > > that I can actually honestly describe as "OVER 9000"! If I boost the stack > > to > > 4MB, I find that the recursion does actually bottom out at some point, since > > the compile completes, but I tested at 3MB and it crashed at a recursion > > depth > > of 13924. > > > > I know that boostrapping libjava is a tough job and pretty intensive on > > memory demands, but is this level of nesting actually to be expected, or has > > something gone astray? > > Well, this is one of the usual ways of iterating over the CFG, so this > is certainly > not unexpected. Maybe for some reason gsi is not scalarized and stack usage > of that function is unusually high?
There used to be rule that we should not expect CFG walk to fit in stack. I.e. all CFG walking needs to be written with explicit worklist/stack instead of using recursion. Perhaps it should enforce it here too? :) Honza