c-opts.c: Include plugin.h.
authorBasile Starynkevitch <basile@starynkevitch.net>
Tue, 19 Nov 2013 16:26:52 +0000 (16:26 +0000)
committerBasile Starynkevitch <bstarynk@gcc.gnu.org>
Tue, 19 Nov 2013 16:26:52 +0000 (16:26 +0000)
[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

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-opts.c
gcc/plugin.def

index b2d761aba91d81da73f6ab09aa0eaf0d37e4033e..d76c2a30268f9ec536f68ac2c4e040f2ebe6df7c 100644 (file)
@@ -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
index 599c024c9b04e58e86db5d0260d2228446f00b0e..5bbd5f5c5efd3e20cbc24c392e0efc78b8020fec 100644 (file)
@@ -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
index 34fe94de34b3d8c9630a2af23d42ee2fdb21827a..f368cab289f804036919b12f95b378f53dd8d5e7 100644 (file)
@@ -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 ();
index c4ca61be14ab3ea031067eaf6b13ab08a976435f..25a645854a76f20c1b81b873be7c20189c15ca56 100644 (file)
@@ -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.  */