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.

Reply via email to