This is the mail archive of the
mailing list for the GCC project.
Re: incremental compiler project
- From: David Malcolm <dmalcolm at redhat dot com>
- To: Jeff Law <law at redhat dot com>
- Cc: David Kunsman <dmkunsman at gmail dot com>, Tom Tromey <tom at tromey dot com>, Manuel López-Ibáñez <lopezibanez at gmail dot com>, GCC Development <gcc at gcc dot gnu dot org>
- Date: Fri, 04 Sep 2015 12:51:22 -0400
- Subject: Re: incremental compiler project
- Authentication-results: sourceware.org; auth=none
- References: <CAPVyUPD0eAyAuPOktpjqpY=UKx0t2YEvFQxMUMY2Lv2pwUAjLA at mail dot gmail dot com> <55E87708 dot 7010901 at gmail dot com> <87twrap6c2 dot fsf at tromey dot com> <CAPVyUPDX9YiCSp8WjafmuYpwAqx4jt-2r_7U4XXO4Zg_HmuzgQ at mail dot gmail dot com> <55E9BC4E dot 5040508 at redhat dot com>
On Fri, 2015-09-04 at 09:44 -0600, Jeff Law wrote:
> On 09/04/2015 09:40 AM, David Kunsman wrote:
> > what do you think about the sub project in the wiki:
> > Parallel Compilation:
> > One approach is to make the front end multi-threaded. (I've pretty
> > much abandoned this idea. There are too many mutable tree fields,
> > making this a difficult project. Also, threads do not interact well
> > with fork, which is currently needed by the code generation approach.)
> You should get in contact with David Malcolm as these issues are
> directly related to his JIT work.
> > This will entail removing most global variables, marking some with
> > __thread, and wrapping a few with locks.
> Yes, but that's work that is already in progress. Right now David's got
> a big log and context switch in place, but we really want to drive down
> the amount of stuff in that context switch.
FWIW, grep for "ACQUIRE MUTEX" and "RELEASE MUTEX" within:
I probably should better document what state is guarded by jit_mutex:
basically it's anything within libbackend.a, including anything that
interacts with GTY/ggc. (in fact, it's basically every source file,
apart from libgccjit.c, jit-recording.c, and parts of jit-playback.c).
You may or may not want to read this doc I wrote in 2013:
(Re-reading it now, it's very out-of-date and I no longer agree with
much of what I wrote in that doc, so I don't know if it's useful).