diff mbox

patch PLUGIN_HEADER_FILE event for tracing of header inclusions.

Message ID 1384801563.26782.20.camel@glinka.lesours
State New
Headers show

Commit Message

Basile Starynkevitch Nov. 18, 2013, 7:06 p.m. UTC
Hello All

After http://gcc.gnu.org/ml/gcc/2013-11/msg00360.html &
http://gcc.gnu.org/ml/gcc/2013-11/msg00361.html  &
http://gcc.gnu.org/ml/gcc/2013-11/msg00347.html I am proposing the
following patch



############## patch
       pch_cpp_save_state ();
########################################### gcc/ChangeLog entry

2013-11-18  Basile Starynkevitch  <basile@starynkevitch.net>
	* plugins.def (PLUGIN_INCLUDE_FILE): New event.

########################################### gcc/c-family/ChangeLog entry

2013-11-18  Basile Starynkevitch  <basile@starynkevitch.net>
	* c-opts.c: Include plugin.h header.
	(cb_file_change): Sent plugin event PLUGIN_INCLUDE_FILE.

########################################### 

Ok for trunk?


Regards.

Comments

Joseph Myers Nov. 18, 2013, 10:50 p.m. UTC | #1
On Mon, 18 Nov 2013, Basile Starynkevitch wrote:

> @@ -43,6 +44,7 @@
>  				   TARGET_OPTF.  */
>  #include "tm_p.h"		/* For C_COMMON_OVERRIDE_OPTIONS.  */
>  
> +
>  #ifndef DOLLARS_IN_IDENTIFIERS
>  # define DOLLARS_IN_IDENTIFIERS true
>  #endif

This is a spurious diff hunk that should not be in this patch.

> Ok for trunk?

OK minus the spurious change in the absence of objections from the plugin 
maintainers within 48 hours (or in the presence of approval from either of 
them).
diff mbox

Patch

Index: gcc/plugin.def
===================================================================
--- gcc/plugin.def	(revision 204976)
+++ gcc/plugin.def	(working copy)
@@ -92,6 +92,10 @@ 
 /* Called when a pass is first instantiated.  */
 DEFEVENT (PLUGIN_NEW_PASS)
 
+/* Called when a file is #include-d or given thru #line directive.  */
+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.  */
Index: gcc/c-family/c-opts.c
===================================================================
--- gcc/c-family/c-opts.c	(revision 204976)
+++ gcc/c-family/c-opts.c	(working copy)
@@ -34,6 +34,7 @@ 
 #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,
@@ -43,6 +44,7 @@ 
 				   TARGET_OPTF.  */
 #include "tm_p.h"		/* For C_COMMON_OVERRIDE_OPTIONS.  */
 
+
 #ifndef DOLLARS_IN_IDENTIFIERS
 # define DOLLARS_IN_IDENTIFIERS true
 #endif
@@ -1397,6 +1399,16 @@ 
   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.  */
+      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)))
     {