On Thu, Aug 2, 2012 at 8:58 PM, 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); } ? Richard. > 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!) > > > Thanks.