diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-11-19 16:26:52 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-11-19 16:26:52 +0000 |
commit | 0391a567ca45fa55a6284ef05eeaca0b67593df3 (patch) | |
tree | 8ef75029296d8398d750c46c5848160b18bbabfd /gcc | |
parent | c41f78ca4d41d7cd5d281d36ca169724d6a257ca (diff) | |
download | gcc-0391a567ca45fa55a6284ef05eeaca0b67593df3.tar.gz |
[gcc/c-family]
2013-11-19 Basile Starynkevitch <basile@starynkevitch.net>
* c-opts.c: Include plugin.h.
(cb_file_change): Invoke plugin event PLUGIN_INCLUDE_FILE.
[gcc/]
2013-11-19 Basile Starynkevitch <basile@starynkevitch.net>
* plugin.def (PLUGIN_INCLUDE_FILE): New event, invoked in
cb_file_change.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205038 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c-opts.c | 12 | ||||
-rw-r--r-- | gcc/plugin.def | 6 |
4 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b2d761aba91..d76c2a30268 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-11-19 Basile Starynkevitch <basile@starynkevitch.net> + + * plugin.def (PLUGIN_INCLUDE_FILE): New event, invoked in + cb_file_change. + 2013-11-19 Peter Bergner <bergner@vnet.ibm.com> * loop-doloop.c (doloop_optimize_loops): Remove unused diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 599c024c9b0..5bbd5f5c5ef 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2013-11-19 Basile Starynkevitch <basile@starynkevitch.net> + + * c-opts.c: Include plugin.h. + (cb_file_change): Invoke plugin event PLUGIN_INCLUDE_FILE. + 2013-11-19 Marek Polacek <polacek@redhat.com> * c-ubsan.c (ubsan_instrument_division): Adjust ubsan_create_data diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c index 34fe94de34b..f368cab289f 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c @@ -34,6 +34,7 @@ along with GCC; see the file COPYING3. If not see #include "debug.h" /* For debug_hooks. */ #include "opts.h" #include "options.h" +#include "plugin.h" /* For PLUGIN_INCLUDE_FILE event. */ #include "mkdeps.h" #include "c-target.h" #include "tm.h" /* For BYTES_BIG_ENDIAN, @@ -1397,6 +1398,17 @@ cb_file_change (cpp_reader * ARG_UNUSED (pfile), else fe_file_change (new_map); + if (new_map + && (new_map->reason == LC_ENTER || new_map->reason == LC_RENAME)) + { + /* Signal to plugins that a file is included. This could happen + several times with the same file path, e.g. because of + several '#include' or '#line' directives... */ + invoke_plugin_callbacks + (PLUGIN_INCLUDE_FILE, + const_cast<char*> (ORDINARY_MAP_FILE_NAME (new_map))); + } + if (new_map == 0 || (new_map->reason == LC_LEAVE && MAIN_FILE_P (new_map))) { pch_cpp_save_state (); diff --git a/gcc/plugin.def b/gcc/plugin.def index c4ca61be14a..25a645854a7 100644 --- a/gcc/plugin.def +++ b/gcc/plugin.def @@ -92,6 +92,12 @@ DEFEVENT (PLUGIN_EARLY_GIMPLE_PASSES_END) /* Called when a pass is first instantiated. */ DEFEVENT (PLUGIN_NEW_PASS) +/* Called when a file is #include-d or given thru #line directive. + Could happen many times. The event data is the included file path, + as a const char* pointer. */ +DEFEVENT (PLUGIN_INCLUDE_FILE) + + /* After the hard-coded events above, plugins can dynamically allocate events at run time. PLUGIN_EVENT_FIRST_DYNAMIC only appears as last enum element. */ |