Hello All,
(I'm replying to Grigori & CC to gcc@ - I suppose every person
interested in plugins is reading the gcc@ list)
Grigori Fursin wrote:
http://gcc-ici.sourceforge.net/papers/mfpp2007.pdf
Thanks for the reference.
By the way, if I am correct, GCC MELT (developed by Basile)
also attempts to address some of these issues with data marshaling
to modularize GCC ...
I won't call it data marshaling (which for me is a synonym of
serialization, pickling, ...., ie machinery to encode/decode data into a
byte stream, e.g. on disk or on the network) in MELT, because there is
no "transmission" (at the lowest level at least).
MELT is only (often, but not always) boxing raw GCC data, into a box or
container. This box is a MELT value containing GCC stuff (like gimple or
tree) which are not values. And the issue is of course to handle unboxed
stuff (like tree-s, gimple-s etc .... in the sense of gcc/tree.h
gcc/gimple.h etc...) and sometimes be able to box them in MELT values. I
won't call that marshalling. Most of MELT dirty tricks are precisely
related to the ability to handle raw GCC stuff which is not boxed in
MELT values.
There is some documentation about that in the gcc/doc/melt.texi file on
the MELT branch.
Marshalling would mean, to me at last, being able to write some internal
GCC representation on a disk and later on being able to read it again
and have GCC handling the data as if it was built by the same process.
Precompiled headers are providing a very limited way of marshalling.
MELT is not (and I am trying hard to avoid to have to write gimple stuff
and to have to read it back; this is a major task).
I would suppose that the LTO branch is marshalling some stuff in DWARF
format, but I understood that for perfomance reasons it is not supposed
to be extensible (so there is no way to add additional data into LTO).
Regards.
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***