This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Don't require -DIN_GCC while compiling plugins


> OK with gcc-plugin.h including config.h and system.h.

I will commit the attached patch once the tests finish. I think it is
an improvement over the current status, but I still think that we
would be better with a simpler gcc-plugin.h.


2009-05-26  Rafael Avila de Espindola  <espindola@google.com>

	* Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h with
        it.
        * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
        included.
	* gcc-plugin.h: Include config.h and system.h.
	(IN_GCC): Define if not defined.

2009-05-26  Rafael Avila de Espindola  <espindola@google.com>

	* g++.dg/plugin/attribute_plugin.c: Include gcc-plugin.h first.
	* g++.dg/plugin/dumb_plugin.c: Include gcc-plugin.h first.
	* g++.dg/plugin/selfassign.c: Include gcc-plugin.h first.
	* gcc.dg/plugin/selfassign.c: Include gcc-plugin.h first.

>
> Thanks. ÂDiego.
>

Cheers,
-- 
Rafael Avila de Espindola

Google | Gordon House | Barrow Street | Dublin 4 | Ireland
Registered in Dublin, Ireland | Registration Number: 368047
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 63bf744..7bae635 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -884,7 +884,8 @@ EBIMAP_H = ebitmap.h sbitmap.h
 IPA_PROP_H = ipa-prop.h $(TREE_H) vec.h $(CGRAPH_H)
 GSTAB_H = gstab.h stab.def
 BITMAP_H = bitmap.h $(HASHTAB_H) statistics.h
-PLUGIN_H = plugin.h gcc-plugin.h
+GCC_PLUGIN_H = gcc-plugin.h $(CONFIG_H) $(SYSTEM_H)
+PLUGIN_H = plugin.h $(GCC_PLUGIN_H)
 PLUGIN_VERSION_H = plugin-version.h configargs.h
 
 #
@@ -4016,8 +4017,8 @@ installdirs:
 	$(mkinstalldirs) $(DESTDIR)$(man7dir)
 
 PLUGIN_HEADERS = $(TREE_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
-  $(TOPLEV_H) $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_PASS_H) gcc-plugin.h intl.h \
-  $(PLUGIN_VERSION_H)
+  $(TOPLEV_H) $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_PASS_H) $(GCC_PLUGIN_H) \
+  intl.h $(PLUGIN_VERSION_H)
 
 # Install the headers needed to build a plugin.
 install-plugin: installdirs
diff --git a/gcc/doc/plugins.texi b/gcc/doc/plugins.texi
index cf5d2af..d5a6391 100644
--- a/gcc/doc/plugins.texi
+++ b/gcc/doc/plugins.texi
@@ -30,6 +30,8 @@ Plugins are activated by the compiler at specific events as defined in
 call @code{register_callback} specifying the name of the event and
 address of the callback function that will handle that event.
 
+The header @file{gcc-plugin.h} must be the first gcc header to be included.
+
 @subsection Plugin initialization
 
 Every plugin should export a function called @code{plugin_init} that
diff --git a/gcc/gcc-plugin.h b/gcc/gcc-plugin.h
index e788eb7..a59fa42 100644
--- a/gcc/gcc-plugin.h
+++ b/gcc/gcc-plugin.h
@@ -20,6 +20,13 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_PLUGIN_H
 #define GCC_PLUGIN_H
 
+#ifndef IN_GCC
+#define IN_GCC
+#endif
+
+#include "config.h"
+#include "system.h"
+
 /* Event names.  Keep in sync with plugin_event_name[].  */
 enum plugin_event
 {
diff --git a/gcc/testsuite/g++.dg/plugin/attribute_plugin.c b/gcc/testsuite/g++.dg/plugin/attribute_plugin.c
index 2624ea2..16b3496 100644
--- a/gcc/testsuite/g++.dg/plugin/attribute_plugin.c
+++ b/gcc/testsuite/g++.dg/plugin/attribute_plugin.c
@@ -1,5 +1,6 @@
 /* Demonstrates how to add custom attributes */
 
+#include "gcc-plugin.h"
 #include <stdlib.h>
 #include "config.h"
 #include "system.h"
@@ -7,7 +8,6 @@
 #include "tree.h"
 #include "tree-pass.h"
 #include "intl.h"
-#include "gcc-plugin.h"
 
 /* Attribute handler callback */
 
diff --git a/gcc/testsuite/g++.dg/plugin/dumb_plugin.c b/gcc/testsuite/g++.dg/plugin/dumb_plugin.c
index 81e68eb..24da544 100644
--- a/gcc/testsuite/g++.dg/plugin/dumb_plugin.c
+++ b/gcc/testsuite/g++.dg/plugin/dumb_plugin.c
@@ -1,6 +1,7 @@
 /* A trivial (dumb) plugin example that shows how to use the GCC plugin
    mechanism.  */
 
+#include "gcc-plugin.h"
 #include <stdlib.h>
 #include "config.h"
 #include "system.h"
@@ -8,7 +9,6 @@
 #include "tree.h"
 #include "tree-pass.h"
 #include "intl.h"
-#include "gcc-plugin.h"
 
 
 /* Callback function to invoke after GCC finishes parsing a struct.  */
diff --git a/gcc/testsuite/g++.dg/plugin/selfassign.c b/gcc/testsuite/g++.dg/plugin/selfassign.c
index 9e7e84c..2bc1d86 100644
--- a/gcc/testsuite/g++.dg/plugin/selfassign.c
+++ b/gcc/testsuite/g++.dg/plugin/selfassign.c
@@ -2,6 +2,7 @@
    self-assignment statements.  */
 /* { dg-options "-O" } */
 
+#include "gcc-plugin.h"
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
@@ -12,7 +13,6 @@
 #include "tree.h"
 #include "tree-pass.h"
 #include "intl.h"
-#include "gcc-plugin.h"
 
 
 /* Indicate whether to check overloaded operator '=', which is performed by
diff --git a/gcc/testsuite/gcc.dg/plugin/selfassign.c b/gcc/testsuite/gcc.dg/plugin/selfassign.c
index 9e7e84c..2bc1d86 100644
--- a/gcc/testsuite/gcc.dg/plugin/selfassign.c
+++ b/gcc/testsuite/gcc.dg/plugin/selfassign.c
@@ -2,6 +2,7 @@
    self-assignment statements.  */
 /* { dg-options "-O" } */
 
+#include "gcc-plugin.h"
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
@@ -12,7 +13,6 @@
 #include "tree.h"
 #include "tree-pass.h"
 #include "intl.h"
-#include "gcc-plugin.h"
 
 
 /* Indicate whether to check overloaded operator '=', which is performed by

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]