This is the mail archive of the
mailing list for the GCC project.
Re: Merging the cxx-conversion branch into trunk
- From: Richard Guenther <richard dot guenther at gmail dot com>
- To: Diego Novillo <dnovillo at google dot com>
- Cc: gcc <gcc at gcc dot gnu dot org>, Lawrence Crowl <crowl at google dot com>, Michael Matz <matz at suse dot de>
- Date: Fri, 3 Aug 2012 09:55:30 +0200
- Subject: Re: Merging the cxx-conversion branch into trunk
- References: <501ACDBE.firstname.lastname@example.org>
On Thu, Aug 2, 2012 at 8:58 PM, Diego Novillo <email@example.com> wrote:
> We are about ready to have the cxx-conversion branch merged back into trunk.
> This merge will change the following:
> 1- The compiler can only be built with a C++ compiler.
> 2- The tree macros can be called from gdb (when GCC is built with -g3).
> 3- htab and VEC have been converted to use C++ templates. The existing API
> is still present as wrappers that call the new API. We will change this
> after the branch is merged.
> 4- gengtype is now capable of supporting user-defined structure markers.
> This allows users to have structures in GC memory for which gengtype does
> not know how to generate marking code for.
> I am currently debugging this change. After I fix the remaining PCH
> failures, I will send the patch for review.
Please make sure to send a patch doing 4. for review separate of the cxx-branch
> Our immediate plan after we merge the branch into trunk includes:
> - Fix any failures caused by the change.
> - Modifying all the user code for VEC and htab to use the new interfaces.
> - Convert double_int.
> - Convert cgraph.
> - Convert the pass manager.
> - Convert hooks.
> After this round of changes, we are planning to work on more API cleanups
> (e.g., adding the introspection API that would be usable for plugins as we
> discussed in the Plugins BoF in Prague).
Micha worked on the plugin API for some time and I believe has something
ready already (also introspection only).
> I would also like to reduce the amount of code that is being generated by
> gengtype. There is a lot of boilerplate code that could be offloaded to
> user-provided functions. This would reduce the number of GTY markings that
> we need to support. There are other aspects of this that I will include in
> the gengtype patch that I'm finishing up.
Sure, I expect that most of the special GTY annotations should be handled
by user-provided walkers. I suppose it would be useful to allow to specify
that only certain fields of a struct are handled by the user walker? Like
/* Base of all entries in the symbol table.
The symtab_node is inherited by cgraph and varpol nodes. */
struct GTY(()) symtab_node_base
/* Linked list of symbol table entries starting with symtab_nodes. */
symtab_node next GTY((specialized));
symtab_node previous GTY((specialized));
and then have gengtype generate
mark<symtab_node_base> (symtab_node_base *base)
... stuff ...
> We will keep the branch alive to work on bigger scale changes that will not
> be ready for this release (e.g., experimenting with gimple and tree).
> I will split up the merge patch in 4 or 5 chunks to simplify reviews. For
> now, we would appreciate if folks test the branch with:
> $ svn co ssh://gcc.gnu.org/svn/gcc/branches/cxx-conversion
> $ mkdir bld && cd bld
> $ ../cxx-conversion/configure --enable-languages=all,ada,go && make
> bootstrap && make check
> We welcome any suggestions (and volunteers!)