diff options
author | Arnaud Charlet <charlet@adacore.com> | 2009-11-20 08:18:16 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-11-20 09:18:16 +0100 |
commit | 3de8a540d8905f8820166960754bb6bb39bfbb44 (patch) | |
tree | d1a4b34f3473096402637027d37a05d9064c3507 /libcpp | |
parent | 9f29c05e324de7a69a317e3f5ce2b1e214652dca (diff) | |
download | gcc-3de8a540d8905f8820166960754bb6bb39bfbb44.zip gcc-3de8a540d8905f8820166960754bb6bb39bfbb44.tar.gz gcc-3de8a540d8905f8820166960754bb6bb39bfbb44.tar.bz2 |
macro.c (enter_macro_context): Call cb.used callback if defined.
* macro.c (enter_macro_context): Call cb.used callback if defined.
* directives.c (do_idef, do_ifndef): Ditto.
* include/cpplib.h (struct cpp_callbacks): Add used callback.
From-SVN: r154359
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/ChangeLog | 6 | ||||
-rw-r--r-- | libcpp/directives.c | 4 | ||||
-rw-r--r-- | libcpp/include/cpplib.h | 3 | ||||
-rw-r--r-- | libcpp/macro.c | 3 |
4 files changed, 16 insertions, 0 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index c842e80..af05ca3 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,9 @@ +2009-11-20 Arnaud Charlet <charlet@adacore.com> + + * macro.c (enter_macro_context): Call cb.used callback if defined. + * directives.c (do_idef, do_ifndef): Ditto. + * include/cpplib.h (struct cpp_callbacks): Add used callback. + 2009-11-11 Kai Tietz <kai.tietz@onevision.com> * directives.c (do_pragma_push_macro): New pragma handler. diff --git a/libcpp/directives.c b/libcpp/directives.c index aed940e..409d908 100644 --- a/libcpp/directives.c +++ b/libcpp/directives.c @@ -1808,6 +1808,8 @@ do_ifdef (cpp_reader *pfile) pfile->cb.used_undef (pfile, pfile->directive_line, node); } } + if (pfile->cb.used) + pfile->cb.used (pfile, pfile->directive_line, node); check_eol (pfile, false); } } @@ -1844,6 +1846,8 @@ do_ifndef (cpp_reader *pfile) pfile->cb.used_undef (pfile, pfile->directive_line, node); } } + if (pfile->cb.used) + pfile->cb.used (pfile, pfile->directive_line, node); check_eol (pfile, false); } } diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index e95f01a..6175bbc 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -508,6 +508,9 @@ 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. + Second argument is the location of the start of the current expansion. */ + void (*used) (cpp_reader *, source_location, cpp_hashnode *); }; #ifdef VMS diff --git a/libcpp/macro.c b/libcpp/macro.c index 1d284cf..6647db5 100644 --- a/libcpp/macro.c +++ b/libcpp/macro.c @@ -885,6 +885,9 @@ enter_macro_context (cpp_reader *pfile, cpp_hashnode *node, pfile->cb.used_define (pfile, pfile->directive_line, node); } + if (pfile->cb.used) + pfile->cb.used (pfile, result->src_loc, node); + macro->used = 1; if (macro->paramc == 0) |