Using C++ in GCC is OK

Jakub Jelinek jakub@redhat.com
Wed Jun 2 17:52:00 GMT 2010


On Wed, Jun 02, 2010 at 06:17:25PM +0100, Richard Earnshaw wrote:
> 
> On Mon, 2010-05-31 at 10:02 -0700, Mark Mitchell wrote:
> > I think virtual functions are on the edge; quite useful, but do result
> > in the compiler adding a pointer to data objects and in uninlinable
> > indirect calls at run-time.  Therefore, I would avoid them in the
> > initial subset of C++ used in GCC.
> 
> We do, of course, have one very big 'virtual function' table in gcc --
> namely the target hooks.  It would be a shame if that couldn't be made
> into a proper class with virtual functions by some arbitrary rule --
> it's a perfect example of when they should be considered.

And the advantage would be?

Currently targetm is a struct with function pointers, so calling
targetm.hook_xyz ();
means reading a pointer from &targetm + off, then calling it.
If you make it a class with virtual functions and targetm
would be an object of that class, then
targetm.hook_xyz ();
call means reading pointer from &targetm (the vtable pointer), followed
by reading the function pointer from the virtual table, then calling it.
One extra memory read for hook call.

	Jakub



More information about the Gcc mailing list