"Joseph S. Myers" wrote:

> As I understand it, there is an alternative - put all the shared code in a
> DLL on Windows if configuring with plugins enabled, and link both the
> plugins and cc1, cc1plus etc. with that DLL.  If people wish to enable
The problem with that approach is that people have so far said they want
access to every aspect of the compiler from within the plugin, i.e. to
poke and prod at the full symbol table, without being tied down by a
limited, designated access route of a plugin API.  This means you'd have
to move essentially everything into this mega-DLL, leaving cc1 and
friends as merely stubs that set a flag and then call into the DLL never
to return, since anything left in cc1 would not be accessible from the
plugin.

That would present a problem to packagers.  Since the code for all the
language backends would be in this one mega-DLL, it would be impossible
to install one language's compiler without installing all of them. 
Sure, you could still split it up into separate packages for the sake of
the other runtime library support components and headers, but the user
would still be paying the price in terms of disk and memory consumption
of this mega-DLL that supports all languages when only using one of
them.

Of course this would only happen if you enabled plugin support, but from
the standpoint of the packager/disto role you wouldn't want to ship a
plugin-disabled gcc because then your users would have to go to the
trouble of building gcc themselves from source if they wanted to try a
plugin.  Not having to do that is supposed to be one of the major
reasons for developing plugins in the first place.  So you end up with
all users paying the cost of the entire compiler suite condensed into
this monolithic chunk even if only a small fraction of users are
interested in trying a plugin.

Brian

Reply via email to