This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: patch PLUGIN_HEADER_FILE event for tracing of header inclusions.
- From: Basile Starynkevitch <basile at starynkevitch dot net>
- To: Dominique Dhumieres <dominiq at lps dot ens dot fr>, dnovillo at google dot com
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 19 Nov 2013 22:57:41 +0100
- Subject: Re: patch PLUGIN_HEADER_FILE event for tracing of header inclusions.
- Authentication-results: sourceware.org; auth=none
- References: <20131119193335 dot 40A88104 at mailhost dot lps dot ens dot fr>
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 <basile@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.