This is the mail archive of the
mailing list for the GCC project.
Re: Merging the cxx-conversion branch into trunk
On 8/3/12, Richard Guenther <email@example.com> wrote:
> On Aug 2, 2012 Diego Novillo <firstname.lastname@example.org> 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 merging.
> > 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 ...
> mark_special<symtab_node_base> (base);
The intent was that, for example, the author of a template class
Foo<T> would write a template function mark(Foo<T>&) that called
mark on each of the relevant fields. The overloading and the rest
of gengtype-generated code would do the right thing.
> > 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!)