diff options
author | Basile Starynkevitch <basile@starynkevitch.net> | 2013-11-19 16:26:52 +0000 |
---|---|---|
committer | Basile Starynkevitch <bstarynk@gcc.gnu.org> | 2013-11-19 16:26:52 +0000 |
commit | b826515a45a10ae7ee9c0979f7093694669bb034 (patch) | |
tree | 8ef75029296d8398d750c46c5848160b18bbabfd /gcc | |
parent | 8f1d13170012b27de493699999dc362e8b18f826 (diff) | |
download | gcc-b826515a45a10ae7ee9c0979f7093694669bb034.zip gcc-b826515a45a10ae7ee9c0979f7093694669bb034.tar.gz gcc-b826515a45a10ae7ee9c0979f7093694669bb034.tar.bz2 |
c-opts.c: Include plugin.h.
[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.
From-SVN: r205038
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 b2d761a..d76c2a30 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 599c024..5bbd5f5 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 34fe94d..f368cab 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 c4ca61b..25a6458 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. */ |