2009/4/19 Jan Hubicka <hubi...@ucw.cz>:
>> 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? :)

Well ... in this case it's likely the problem that propagate_with_phi is
inlined (single-use static function) and maybe other helpers of it too.
Maybe we should instead throttle inlining into functions that recurse? ;)

Richard.

>
> Honza
>

Reply via email to