On 05/31/2010 06:26 PM, Basile Starynkevitch wrote:
On Mon, 2010-05-31 at 08:53 -0700, Mark Mitchell wrote:
There's no reason to get into these kinds of questions at this point.
The goal is not to reimplement GCC from the ground up using modern
OO/C++ techniques.  The goal is simply to permit ourselves to use C++
features where appropriate in the codebase.

Except that perhaps these questions are important for any gengtype
enhancement. In particular, one could consider that marking a GTY-ed
data would be done by a virtual method (generated by gengtype), and then
having every GTY-ed data inheriting from an abstract class providing
this method will make both gengtype&  ggc*.c simpler.

The same can be said about PCH serialization, or debug dumping.

I'm not sure. Virtual methods have the overhead of a pointer in the object, while gengtype does 100% static typing so it doesn't need a virtual method.

Also, in general compiler IRs are used in so many places that a "pattern matching" style (similar to ML) actually works better than a "class hierarchy" style. In other words, I doubt that C++ would remove many of the switch statements we have in the code. With respect to this, I'm curious about Ian's experience with gccgo.

Adjusting RTL and trees involve a huge rewrite effort, as pointed out elsewhere in the thread, and in the end our own DSL would probably suit the task just as well (or better). In particular, our trees have a kind of multiple inheritance.

Personally, the first place where I'd start using C++ is the pass manager. Even then, I'm wary about the compile-time cost of passing "this" around all the time.

But then I have no time for anything of this, so I can just as well shut up.

Paolo

Reply via email to