This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Merging the cxx-conversion branch into trunk


On 8/3/12, Richard Guenther <richard.guenther@gmail.com> wrote:
> On Aug 2, 2012 Diego Novillo <dnovillo@google.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 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!)

-- 
Lawrence Crowl


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]