public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Steven Bosscher <stevenb.gcc@gmail.com>
To: Jeff Law <law@redhat.com>
Cc: Laurynas Biveinis <laurynas.biveinis@gmail.com>, gcc-patches@gcc.gnu.org
Subject: Re: [gc-improv] Permanent vs function RTL obstack fix
Date: Sat, 09 Apr 2011 10:34:00 -0000	[thread overview]
Message-ID: <BANLkTi=FrbJbzkma-ySCbgGypM=wojJy4Q@mail.gmail.com> (raw)
In-Reply-To: <4D9F1D63.9010509@redhat.com>

On Fri, Apr 8, 2011 at 4:36 PM, Jeff Law <law@redhat.com> wrote:
>>> Perhaps a third, per-translation-unit obstack is necessary?
>>
>> Perhaps. After I finish with permanent rtl obstack, I will measure how
>> large it gets and if it's worthwhile to split out
>> per-translation-obstack out of it.
> And then you'll want a per-statement obstack, then per-expression
> obstack, and before you know it, GCC looks much like it did 20 years ago.

I don't think that's a fair comment, or a real concern. Unlike 20
years ago, GCC now has a reasonable idea of how long RTX objects live.
I can think of only four states for RTX in memory:

1. RTL that lives throughout the compilation, things like shared
constants. RTX objects in this group are only in GC memory now because
one RTX object on GC-memory cannot point to a non-GC RTX object (the
mark-and-sweep process expects all objects to be in GC memory).

2. RTL from back-end (re-)initialization. Stuff in this group should
go on a permanent obstack that is only removed if the back end is
re-initialized (e.g. for the MIPS back end, or for future multi-target
support).

3. RTL per translation unit. I am not sure what falls in this class.
Things like RTL for global variables maybe? RTL that may escape from
functions? Apparently the latter happens with labels, I hope it only
happens with nested functions, really. Got some insights to share
here? ;-)

4. RTL per function. GCC expands one GIMPLE function at a time, and
the idea is to initialize the RTL obstack once when expanding starts,
let it grow until final, and blow it away after final. Unlike 20 years
ago, this obstack is never rolled back during RTL passes. This relies
on generating not too much garbage, but memory for per-function RTL
should be dwarfed by per-translation unit GIMPLE anyway.

Jeff, few people from 20 years ago are still around, so perhaps you
can help a bit to help make things are going in the right direction.
;-)

Ciao!
Steven

  parent reply	other threads:[~2011-04-09 10:34 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-07  6:17 Laurynas Biveinis
2011-04-07 21:33 ` Steven Bosscher
2011-04-08 13:22   ` Laurynas Biveinis
2011-04-08 14:36     ` Jeff Law
2011-04-08 14:39       ` Richard Guenther
2011-04-08 14:42         ` Jeff Law
2011-04-09 10:34       ` Steven Bosscher [this message]
2011-04-10 18:27         ` Laurynas Biveinis
2011-04-10 18:49           ` Basile Starynkevitch
2011-04-11 20:03           ` Jeff Law
2011-04-12  0:22             ` Mike Stump
2011-04-12  2:54               ` Jeff Law
2011-04-12  6:34                 ` Steven Bosscher
2011-04-12  7:01                   ` Jakub Jelinek
2011-04-12  8:45                     ` Steven Bosscher
2011-04-12 10:44                       ` Mike Stump
2011-04-12 10:49                         ` Steven Bosscher
2011-04-12 15:02                       ` Jeff Law
2011-04-12 11:56             ` Bernd Schmidt
2011-04-12 15:31               ` Jeff Law
2011-04-10 18:23       ` Laurynas Biveinis
2011-04-10 22:33         ` Steven Bosscher
2011-04-11 20:08         ` Jeff Law
2011-04-12 11:43           ` Laurynas Biveinis
2011-04-12 11:46             ` Laurynas Biveinis
2011-04-12 17:25               ` Mike Stump

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='BANLkTi=FrbJbzkma-ySCbgGypM=wojJy4Q@mail.gmail.com' \
    --to=stevenb.gcc@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=laurynas.biveinis@gmail.com \
    --cc=law@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).