This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [libcpp] patch: add used callback


Arnaud Charlet wrote:

BTW, here is an updated patch, using the proper source location for the macro reference (use pfile->invocation_location instead of pfile->directive_line which gives the line of the last cpp directive, not very useful in this context).
I would still like a plugin hook here.

Maybe I could make it clearer that this callback does not get called
for define/undef in the cpplib.h comment?
Yes please


What about this patch?


--
Index: macro.c
===================================================================
--- macro.c (revision 153897)
+++ macro.c (working copy)
@@ -885,6 +885,9 @@ enter_macro_context (cpp_reader *pfile, pfile->cb.used_define (pfile, pfile->directive_line, node);
}
+ if (pfile->cb.used)
+ pfile->cb.used (pfile, pfile->invocation_location, node);
+
macro->used = 1;

Perhaps something like invoke_plugin_callbacks (PLUGIN_EXPAND_MACRO, node); would be useful at this place (e.g. for a plugin doing metrics on macro expansions)? [I am not sure to get it right; I don't understand a lot libcpp]

if (macro->paramc == 0)
Index: include/cpplib.h
===================================================================
--- include/cpplib.h (revision 153897)
+++ include/cpplib.h (working copy)
@@ -508,6 +508,10 @@ struct cpp_callbacks
/* Called before #define and #undef or other macro definition
changes are processed. */
void (*before_define) (cpp_reader *);
+ /* Called whenever a macro is expanded or tested.
+ Note: this callback is not called when a #define/#undef directive is
+ processed, consider used_define or used_undef instead. */
+ void (*used) (cpp_reader *, unsigned int, cpp_hashnode *);
};

If a plugin event gets added for macro expansions, please add a comment refering to it here.


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} ***


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]