On Tue, 2013-11-19 at 20:33 +0100, Dominique Dhumieres wrote: > > Thanks: Committed revision 205038. > > This seems to break several g++ tests: see > http://gcc.gnu.org/ml/gcc-testresults/2013-11/msg01482.html > On x86_64-apple-darwin13, the ICE is > > cc1: error: cannot load plugin ./one_time_plugin.so
Actually, when we add hard coded plugin events we should never forget, like I just did, to edit invoke_plugin_callbacks_full. Diego and all, can I add the following patch to the trunk. One is just a comment inside plugin.def to recall that invoke_plugin_callbacks_full should be edited, and another is the tiny fix on that function in plugin.c ### gcc/ChangeLog entry 2013-11-19 Basile Starynkevitch <bas...@starynkevitch.net> * plugin.def: Add comment about register_callback and invoke_plugin_callbacks_full. * plugin.c (register_callback, invoke_plugin_callbacks_full): Handle PLUGIN_INCLUDE_FILE event. ### Apologies for my mistake. Hope this will be approved quickly before 4.9 stage 3! (I will later submit a documentation patch) BTW, I am not very happy about some events in plugin.def not being real events. IMHO I would prefer that PLUGIN_PASS_MANAGER_SETUP, PLUGIN_REGISTER_GGC_ROOTS, PLUGIN_REGISTER_GGC_CACHES be removed, because they are not real events (and they should have their own public functions in plugin.h, e.g. add functions like plugin_pass_manager_setup, plugin_register_ggc_roots, plugin_register_ggc_caches in gcc/gcc-plugin.h). Unfortunately, we don't have time for such an improvement for 4.9 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 mine, sont seulement les miennes} ***
Index: gcc/plugin.c =================================================================== --- gcc/plugin.c (revision 205052) +++ gcc/plugin.c (working copy) @@ -452,6 +452,7 @@ register_callback (const char *plugin_name, case PLUGIN_EARLY_GIMPLE_PASSES_START: case PLUGIN_EARLY_GIMPLE_PASSES_END: case PLUGIN_NEW_PASS: + case PLUGIN_INCLUDE_FILE: { struct callback_info *new_callback; if (!callback) @@ -529,6 +530,7 @@ invoke_plugin_callbacks_full (int event, void *gcc case PLUGIN_EARLY_GIMPLE_PASSES_START: case PLUGIN_EARLY_GIMPLE_PASSES_END: case PLUGIN_NEW_PASS: + case PLUGIN_INCLUDE_FILE: { /* Iterate over every callback registered with this event and call it. */ Index: gcc/plugin.def =================================================================== --- gcc/plugin.def (revision 205052) +++ gcc/plugin.def (working copy) @@ -97,6 +97,9 @@ DEFEVENT (PLUGIN_NEW_PASS) as a const char* pointer. */ DEFEVENT (PLUGIN_INCLUDE_FILE) +/* When adding a new hard-coded plugin event, don't forget to edit in + file plugin.c the functions register_callback and + invoke_plugin_callbacks_full accordingly! */ /* After the hard-coded events above, plugins can dynamically allocate events at run time.