This is the mail archive of the 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 Thu, Aug 2, 2012 at 8:58 PM, Diego Novillo <> 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

> 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);



> 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://
> $ mkdir bld && cd bld
> $ ../cxx-conversion/configure --enable-languages=all,ada,go && make
> bootstrap && make check
> We welcome any suggestions (and volunteers!)
> Thanks.

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