This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: middle-end/6566: sparc64-unknown-netbsd-gcc loops consuming memory
- From: Jan Hubicka <jh at suse dot cz>
- To: davem at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org,hubicka at gcc dot gnu dot org, nobody at gcc dot gnu dot org, thorpej at wasabisystems dot com,gcc-gnats at gcc dot gnu dot org
- Date: Fri, 7 Jun 2002 13:22:22 +0200
- Subject: Re: middle-end/6566: sparc64-unknown-netbsd-gcc loops consuming memory
- References: <20020607083219.20519.qmail@sources.redhat.com>
> Synopsis: sparc64-unknown-netbsd-gcc loops consuming memory
>
> Responsible-Changed-From-To: unassigned->hubicka
> Responsible-Changed-By: davem
> Responsible-Changed-When: Fri Jun 7 01:32:16 2002
> Responsible-Changed-Why:
> Jan can you take a look at this? The problem is
> calculate_global_regs_live() is what is looping.
> Every iteration, right before qhead gets to qtail
> in the main loop, we advance qtail almost through
> the whole queue. This process repeats forever.
> Any target crossed to sparc64-netbsd will be able
> to reproduce this so it should be easy for you to
> work on it.
> Thanks.
> State-Changed-From-To: open->analyzed
> State-Changed-By: davem
> State-Changed-When: Fri Jun 7 01:32:16 2002
> State-Changed-Why:
> calculate_global_regs_live loops forever never making
> forward progress
This has been discussed on the list briefly. The problem is that
iterative dataflow is not guaranteed to terminate when the starting
sollution is not strictly bellow the correct one.
We commonly do that and situation got worse after the renumbering
changes, but really it just makes latent bug to happen more often.
I want to take a look at it today or tomorrow. My plan is to turn
dataflow into hybrid search, as df.c does, so we save some bits and
create extra bitmap for each basic block noting changes in the liveness.
When we change liveness of given pseudo twice, we wipe all the liveness
bits of it and re-start relaxation.
Not perfect sollution, but should work in practice. I am still looking
for hints in the literatue, but most of it does appear to suggest that
inverval analysis is the proper way to go.
Honza
>
> http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=6566