gengtype future directions

Geoffrey Keating geoffk@apple.com
Tue Mar 27 00:31:00 GMT 2007


On 26/03/2007, at 3:12 PM, Zack Weinberg wrote:

> Most of gengtype's hardwired kludges exist because it does not do
> preprocessing, and therefore my recommendation is that we work toward
> a state where gengtype can use libcpp to do that (we already have a
> preprocessor library, let's use it :)  If libcpp is too slow for this
> application that should be dealt with by improvements to libcpp.

I considered doing something like this during the original design of  
gengtype, and rejected it.

I don't see that it's necessarily possible to make libcpp as fast as  
gengtype.  libcpp has to do much more work than gengtype does because  
libcpp processes every token whereas gengtype spends most of its time  
scanning source looking for a few keywords and does not need to  
understand every weird thing that someone might do (like putting a  
GTY marker inside a string).  gengtype does not even need to examine  
every character in its input source files (although I don't know if  
flex is smart enough to do this).

Although it might seem like a benefit that gengtype could deduce  
which types are relevant for GC by itself, the existing GTY(())  
markers actually have a significant documentation use: they inform  
users of the structure that the structure is supposed to be allocated  
in GC-managed memory.  So I would recommend keeping these whether  
they are necessary or not, and if possible verifying that they are  
consistent.

I doubt the remaining benefit of doing this (making some parts of the  
design of gengtype conceptually simpler) exceeds the cost of doing  
the work plus the cost of maintaining the larger gengtype front-end  
plus the cost of maintaining the libcpp changes needed to bend it to  
this fairly unnatural purpose.

If I was writing something like gengtype for any project other than  
GCC, I would do it differently: I would write a tool which read DWARF  
from .o files instead of reading source code directly.  This approach  
would allow use of any part of C or even C++, and would be even  
faster than the existing gengtype.  However, GCC needs to be more  
portable than this would allow.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2462 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20070327/67497c54/attachment.p7s>


More information about the Gcc mailing list