public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Biener <richard.guenther@gmail.com>
To: Trevor Saunders <tsaunders@mozilla.com>
Cc: Jeff Law <law@redhat.com>, Tom Tromey <tromey@redhat.com>,
		GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH 5/5] add libcc1
Date: Thu, 31 Jul 2014 11:28:00 -0000	[thread overview]
Message-ID: <CAFiYyc1hbN6P_PzkQ5z616x+wvp0Agso2y=-ACL3Xxs4QoaE_w@mail.gmail.com> (raw)
In-Reply-To: <20140731104455.GA29240@tsaunders-iceball.corp.tor1.mozilla.com>

On Thu, Jul 31, 2014 at 12:44 PM, Trevor Saunders <tsaunders@mozilla.com> wrote:
> On Thu, Jul 31, 2014 at 10:01:15AM +0200, Richard Biener wrote:
>> On Thu, Jul 31, 2014 at 6:47 AM, Jeff Law <law@redhat.com> wrote:
>> > On 06/19/14 14:52, Tom Tromey wrote:
>> >>
>> >> Tom> I've edited this one down by removing the auto-generated stuff , and
>> >> Tom> then compressed it.
>> >>
>> >> Here's a new version of patch #5.
>> >> I've removed the generated code; let's see if it gets through without
>> >> compression.
>> >>
>> >> I think this addresses all the reviews:
>> >>
>> >> * It uses gcc-plugin.m4 to disable the plugin
>> >> * It does some configure checks for needed functionality, and disables
>> >>    the plugin if they are not found
>> >> * libcc1 and the plugin now do a protocol version handshake at
>> >>    startup
>> >> * The diagnostic overriding code is now in the plugin, not in gcc proper
>> >> * gdb now tells libcc1 about the target triplet, and libcc1 uses
>> >>    this to invoke the proper GCC.  This is done by (ewww) searching $PATH.
>> >>
>> >> Tom
>> >>
>> >> 2014-06-19  Phil Muldoon  <pmuldoon@redhat.com>
>> >>             Tom Tromey  <tromey@redhat.com>
>> >>
>> >>         * Makefile.def: Add libcc1 to host_modules.
>> >>         * configure.ac (host_tools): Add libcc1.
>> >>         * Makefile.in, configure: Rebuild.
>> >>
>> >> 2014-06-19  Phil Muldoon  <pmuldoon@redhat.com>
>> >>             Jan Kratochvil  <jan.kratochvil@redhat.com>
>> >>             Tom Tromey  <tromey@redhat.com>
>> >>
>> >>         * aclocal.m4: New file.
>> >>         * callbacks.cc: New file.
>> >>         * callbacks.hh: New file.
>> >>         * cc1plugin-config.h.in: New file.
>> >>         * configure: New file.
>> >>         * configure.ac: New file.
>> >>         * connection.cc: New file.
>> >>         * connection.hh: New file.
>> >>         * findcomp.cc: New file.
>> >>         * findcomp.hh: New file.
>> >>         * libcc1.cc: New file.
>> >>         * libcc1plugin.sym: New file.
>> >>         * libcc1.sym: New file.
>> >>         * Makefile.am: New file.
>> >>         * Makefile.in: New file.
>> >>         * marshall.cc: New file.
>> >>         * marshall.hh: New file.
>> >>         * names.cc: New file.
>> >>         * names.hh: New file.
>> >>         * plugin.cc: New file.
>> >>         * rpc.hh: New file.
>> >>         * status.hh: New file.
>> >
>> > So my biggest concern here is long term maintenance -- who's going to own
>> > care and feeding of these bits over time.
>> >
>> > My inclination is to go ahead and approve, but explicitly note that if the
>> > bits do start to rot that we'll be fairly aggressive at disabling/removing
>> > them.
>> >
>> > Now that my position is out there for everyone to see, give the other
>> > maintainers a few days (say until Monday) to chime in with any objections.
>> >
>> > Obviously if there are no objections and you check in the change, please be
>> > on the lookout for any fallout.  I'm particularly concerned about AIX,
>> > Solaris and other non-linux platforms.
>> >
>> > Does this deserve a mention in the news file?
>>
>> Can you briefly elaborate on how this relates to the JIT work from
>> David Malcom?
>
> I don't think the JIT work helps much here because this library wants to
> feed gcc source not IL, so it needs a front end not just the back.

Ah, ok ...

>> Also during the GCC Summit we talked about JIT and plugins and
>> I mentioned that the JIT API is actually a kind of "stable plugin API"
>> for IL creation.
>
> good point.
>
>> We've also elaborated on why the JIT cannot be a "plugin" at the
>> moment - which is at least partly because we cannot have
>> "frontend plugins".  This is because compilation is currently
>> driven by the frontend which "owns" main() even though it immediately
>> calls into the middle-end and only gets control back via langhooks.
>> So a quite obvious cleanup of the program flow of GCC would be
>> to drive things from a middle-end main() - which would allow
>> a plugin to take over the frontend parts (and which would allow
>> making all frontends shared objects, aka "plugins" to a common
>> middle-end "driver").
>
> sounds nice

Actually after looking again I was wrong.  main.c and toplev.c
are the "driver".  So if we can make all frontends shared objects
with their only interface being their lang_hooks that would be nice
(of course the middle-end still needs to make gazillions of symbols
available to that "plugin").

Of course it won't really help libcc1 as libcc1 isn't a frontend
itself.

>> Just throwing in my mental notes from the Summit here.  I really
>> wonder how libcc1 falls in into this picture and if it would stand
>> in the way of re-organizing main program flow and/or making
>> frontends shared objects.
>
> so the interesting bit of libcc1 is just a plugin, which means it won't
> add any extra work past making plugins work.  On the other hand if you
> could load a library that included the driver and front ends then you'd
> basically have a much simpler libcc1, so I think that work would make
> libcc1 a bit nicer.
>
> Trev
>
>>
>> [ideally both frontends and targets would be shared objects, but of
>> course even frontends have target dependencies pulled in via
>> target macros at the moment...]
>>
>> Richard.
>>
>> > Jeff
>> >

  reply	other threads:[~2014-07-31 11:05 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-16 15:26 [PATCH 0/5] let gdb reuse gcc'c C compiler Tom Tromey
2014-05-16 15:26 ` [PATCH 1/5] export finish_bitfield_layout from stor-layout Tom Tromey
2014-05-16 18:27   ` Jeff Law
2014-05-16 15:27 ` [PATCH 4/5] add gcc/gdb interface files Tom Tromey
2014-05-22 12:52   ` Jeff Law
2014-05-22 13:16     ` Jakub Jelinek
2014-05-22 15:13       ` Jeff Law
2014-06-04 20:39       ` Tom Tromey
2014-06-05 19:23         ` Jeff Law
2014-06-05 19:30           ` Jakub Jelinek
2014-06-06  1:54             ` Tom Tromey
2014-06-06  5:35               ` Jakub Jelinek
2014-06-09 17:09               ` Jeff Law
2014-06-19 20:45                 ` Tom Tromey
2014-05-16 15:27 ` [PATCH 3/5] introduce the binding oracle Tom Tromey
2014-05-16 19:12   ` Jeff Law
2014-06-05 15:31     ` Tom Tromey
2014-06-19 20:43     ` Tom Tromey
2014-05-16 15:27 ` [PATCH 2/5] c_diagnostic_ignored_function hack Tom Tromey
2014-05-16 16:05   ` Joseph S. Myers
2014-06-19 20:46     ` Tom Tromey
2014-05-16 18:33   ` Jeff Law
2014-05-16 18:42     ` Tom Tromey
2014-05-16 16:29 ` [PATCH 0/5] let gdb reuse gcc'c C compiler Mike Stump
2014-05-16 18:48 ` [PATCH 5/5] add libcc1 Tom Tromey
2014-05-16 20:29   ` Joseph S. Myers
2014-05-16 21:03     ` Tom Tromey
2014-06-18 21:07     ` Tom Tromey
2014-06-19 20:47     ` Tom Tromey
2014-05-16 21:36   ` Mike Stump
2014-05-16 22:17   ` Mike Stump
2014-06-05 19:34     ` Tom Tromey
2014-06-05 21:35       ` Mike Stump
2014-06-19 20:52   ` Tom Tromey
2014-06-19 21:45     ` Jakub Jelinek
2014-06-19 22:22       ` Tom Tromey
2014-06-20  3:11     ` Trevor Saunders
2014-06-20 15:34       ` Tom Tromey
2014-06-23 19:09         ` Jeff Law
2014-06-24  3:13           ` Trevor Saunders
2014-06-24 17:12             ` Tom Tromey
2014-06-24 18:10               ` Trevor Saunders
2014-07-18 19:00     ` Tom Tromey
2014-07-31  4:49     ` Jeff Law
2014-07-31  8:15       ` Richard Biener
2014-07-31 10:53         ` Trevor Saunders
2014-07-31 11:28           ` Richard Biener [this message]
2014-07-31 15:08             ` Joseph S. Myers
2014-07-31 19:20         ` Tom Tromey
2014-07-31 19:21           ` Jakub Jelinek
2014-07-31 19:51           ` Trevor Saunders
2014-07-31 20:07             ` Tom Tromey
2014-08-01  2:18               ` Trevor Saunders
2014-07-31 21:14       ` Mike Stump
2014-08-04 14:23         ` Tom Tromey
2014-08-05 19:34       ` Tom Tromey
2014-08-08 12:15         ` [PATCH 5/5] add libcc1 [gcc-5/changes.html] Jan Kratochvil
2014-08-31 15:12           ` Gerald Pfeifer
2014-09-14 15:07             ` Manuel López-Ibáñez
2014-09-17 14:14               ` Jan Kratochvil
2014-10-09  9:07       ` [PATCH 5/5] add libcc1 Phil Muldoon
2014-10-09  9:12         ` Jakub Jelinek
2014-10-09  9:18         ` Phil Muldoon
2014-10-10 22:31         ` Jeff Law
2014-10-24  7:43           ` Phil Muldoon
2014-10-24  7:53             ` Jakub Jelinek
2014-10-24 16:47             ` Jeff Law
2014-10-27 20:03               ` Phil Muldoon
2014-10-28 13:29                 ` Joseph S. Myers
2014-10-28 18:00                   ` Phil Muldoon
2014-10-29  3:32                     ` Joseph S. Myers
2014-10-29 10:29                     ` Jakub Jelinek
2014-10-29 10:45                       ` Paolo Bonzini
2014-10-29 10:58                         ` Jakub Jelinek
2014-10-29 10:59                           ` Paolo Bonzini
2014-10-29 11:03                             ` Jakub Jelinek
2014-10-29 15:00                               ` Paolo Bonzini
2014-10-29 11:10                             ` Phil Muldoon
2014-10-29 11:42                             ` Phil Muldoon
2014-10-30  5:37                       ` Jeff Law
2014-06-19 20:42 ` [PATCH 0/5] let gdb reuse gcc'c C compiler Tom Tromey
2014-07-30 16:28   ` Tom Tromey
2014-10-28  3:19 [PATCH 5/5] add libcc1 Dominique Dhumieres
2014-10-28  8:36 ` Jakub Jelinek
2014-10-28  8:46   ` Phil Muldoon
2014-10-28  8:50     ` Christophe Lyon
2014-10-28  9:09     ` Jakub Jelinek
2014-10-28  8:43 Uros Bizjak
2014-10-28  8:55 ` Phil Muldoon
2014-10-28  9:21   ` Uros Bizjak
2014-10-28  9:36 ` Jakub Jelinek
2014-10-28  9:58   ` Uros Bizjak
2014-10-28 10:51     ` Phil Muldoon
2014-10-28 10:56       ` Uros Bizjak
2014-10-28 11:16         ` Phil Muldoon
2014-10-28 11:53         ` Phil Muldoon
2014-10-28 12:24           ` Jakub Jelinek
2014-10-30  5:16             ` Jeff Law
2014-10-30  8:50             ` Thomas Schwinge
2014-10-30  8:56               ` Jakub Jelinek
2014-10-30 10:43                 ` Thomas Schwinge

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='CAFiYyc1hbN6P_PzkQ5z616x+wvp0Agso2y=-ACL3Xxs4QoaE_w@mail.gmail.com' \
    --to=richard.guenther@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=law@redhat.com \
    --cc=tromey@redhat.com \
    --cc=tsaunders@mozilla.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).