From 21fcf6749fe413f9a2aec8cdc6d2d988cfa5b2fb Mon Sep 17 00:00:00 2001
From: ghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 17 Apr 2000 14:48:13 +0000
Subject: [PATCH]         * symcat.h: Honor autoconf macro HAVE_STRINGIZE.  Add
         comments/caveats with regard to traditional C behavior.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33209 138bc75d-0d04-0410-961f-82ee72b054a4
---
 include/ChangeLog |  5 +++++
 include/symcat.h  | 11 ++++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/include/ChangeLog b/include/ChangeLog
index e2bf4c15cbef..4be8ffb7c95f 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2000-04-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+	* symcat.h: Honor autoconf macro HAVE_STRINGIZE.  Add
+	comments/caveats with regard to traditional C behavior.
+
 2000-04-05  Richard Henderson  <rth@cygnus.com>
 
 	* splay-tree.h (splay_tree_remove): Declare.
diff --git a/include/symcat.h b/include/symcat.h
index 3e27162b2649..41589d42add5 100644
--- a/include/symcat.h
+++ b/include/symcat.h
@@ -19,12 +19,16 @@
 #ifndef SYM_CAT_H
 #define SYM_CAT_H
 
-#if defined (__STDC__) || defined (ALMOST_STDC)
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
 #define CONCAT2(a,b)	 a##b
 #define CONCAT3(a,b,c)	 a##b##c
 #define CONCAT4(a,b,c,d) a##b##c##d
 #define STRINGX(s) #s
 #else
+/* Note one should never pass extra whitespace to the CONCATn macros,
+   e.g. CONCAT2(foo, bar) because traditonal C will keep the space between
+   the two labels instead of concatenating them.  Instead, make sure to
+   write CONCAT2(foo,bar).  */
 #define CONCAT2(a,b)	 a/**/b
 #define CONCAT3(a,b,c)	 a/**/b/**/c
 #define CONCAT4(a,b,c,d) a/**/b/**/c/**/d
@@ -35,6 +39,11 @@
 #define XCONCAT3(a,b,c)   CONCAT3(a,b,c)
 #define XCONCAT4(a,b,c,d) CONCAT4(a,b,c,d)
 
+/* Note the layer of indirection here is typically used to allow
+   stringification of the expansion of macros.  I.e. "#define foo
+   bar", "XSTRING(foo)", to yield "bar".  Be aware that this only
+   works for __STDC__, not for traditional C which will still resolve
+   to "foo".  */
 #define XSTRING(s) STRINGX(s) 
 
 #endif SYM_CAT_H
-- 
GitLab