From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9725 invoked by alias); 7 Jun 2002 11:26:08 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 9706 invoked by uid 71); 7 Jun 2002 11:26:06 -0000 Date: Fri, 07 Jun 2002 04:26:00 -0000 Message-ID: <20020607112606.9705.qmail@sources.redhat.com> To: hubicka@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Jan Hubicka Subject: Re: middle-end/6566: sparc64-unknown-netbsd-gcc loops consuming memory Reply-To: Jan Hubicka X-SW-Source: 2002-06/txt/msg00145.txt.bz2 List-Id: The following reply was made to PR middle-end/6566; it has been noted by GNATS. From: Jan Hubicka To: davem@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, hubicka@gcc.gnu.org, nobody@gcc.gnu.org, thorpej@wasabisystems.com, gcc-gnats@gcc.gnu.org Cc: Subject: Re: middle-end/6566: sparc64-unknown-netbsd-gcc loops consuming memory Date: Fri, 7 Jun 2002 13:22:22 +0200 > 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