This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
cherry-pick CONST_CAST from gcc-in-cxx tree
- From: Taras Glek <tglek at mozilla dot com>
- To: gcc-patches at gcc dot gnu dot org, tromey at redhat dot com, iant at google dot com
- Date: Wed, 27 May 2009 11:15:22 -0700
- Subject: cherry-pick CONST_CAST from gcc-in-cxx tree
This cast fix allows a c++ plugin to include gimple.h.
gcc/Changelog
2009-05-27 Tom Tromey <tromey@redhat.com>
* system.h (CONST_CAST): Use C++ const_cast when compiled as C++
diff --git a/gcc/system.h b/gcc/system.h
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -786,6 +786,9 @@ extern void fancy_abort (const char *, i
change after the fact). Beyond these uses, most other cases of
using this macro should be viewed with extreme caution. */
+#ifdef __cplusplus
+#define CONST_CAST2(TOTYPE,FROMTYPE,X) (const_cast<TOTYPE> (X))
+#else
#if defined(__GNUC__) && GCC_VERSION > 4000
/* GCC 4.0.x has a bug where it may ICE on this expression,
so does GCC 3.4.x (PR17436). */
@@ -793,6 +796,7 @@ extern void fancy_abort (const char *, i
#else
#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((TOTYPE)(FROMTYPE)(X))
#endif
+#endif
#define CONST_CAST(TYPE,X) CONST_CAST2(TYPE, const TYPE, (X))
#define CONST_CAST_TREE(X) CONST_CAST(union tree_node *, (X))
#define CONST_CAST_RTX(X) CONST_CAST(struct rtx_def *, (X))