Hi all, Just a small update, that after some discussions with Joern we think that based on our time constraints and the current state of GCC, instead of trying to push full ICI into GCC we start from the opposite approach: We take all our plugins (support pass selection and reordering from MILEPOST; generic function cloning and fine-grain optimizations from GSOC'09) and trying to see which low-level GCC functionality is missing to support them. Then we provide a few hooks to support them, provide a few small updates to GCC and rewrite our plugins to support low-level plugin system. Joern will continue communicating about a few extensions to the plugin system we need to make it happen.
This is a pragmatic step and should require minimal changes in GCC and will help us already use current plugin system for our work. However, I think there is still a benefit of ICI in separating GCC and plugins when using internal data structures, i.e. currently the referencing of data structures in GCC is hardwired in plugins. If one day these data structures change, we will need to rewrite all plugins. Using referencing mechanism in ICI (data is used in plugins indirectly through parameter registering) allows us to insure plugins compatibility but with the performance degradation. We can discuss that later after GCC 4.5 release and when we get some more experience from the users about plugins ... By the way, due to that, I think that maybe besides documenting all the data structures we should maybe also start providing info if they are used in some plugins. This maybe will help clearning up the internals of the compiler and will prevent careless changes of the data structures in GCC to keep plugins compatible?.. Anyway, Joern will continue communicating about the progress and extensions to the plugin system ... Take care and have a good weekend, Grigori