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