Module Name:    src
Committed By:   apb
Date:           Sat Nov 24 09:07:44 UTC 2012

Modified Files:
        src/gnu/dist/gcc4/libcpp: init.c macro.c
        src/gnu/dist/gcc4/libcpp/include: cpplib.h

Log Message:
Teach gcc4.1's cpp about the magic __COUNTER__ macro,
which returns a unique integer each time it is expanded.
This code was written without reference to any other
implementation of the same feature.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/gnu/dist/gcc4/libcpp/init.c
cvs rdiff -u -r1.3 -r1.4 src/gnu/dist/gcc4/libcpp/macro.c
cvs rdiff -u -r1.2 -r1.3 src/gnu/dist/gcc4/libcpp/include/cpplib.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/gnu/dist/gcc4/libcpp/init.c
diff -u src/gnu/dist/gcc4/libcpp/init.c:1.2 src/gnu/dist/gcc4/libcpp/init.c:1.3
--- src/gnu/dist/gcc4/libcpp/init.c:1.2	Fri May 12 00:24:43 2006
+++ src/gnu/dist/gcc4/libcpp/init.c	Sat Nov 24 09:07:44 2012
@@ -309,6 +309,7 @@ static const struct builtin builtin_arra
   B("__BASE_FILE__",	 BT_BASE_FILE),
   B("__LINE__",		 BT_SPECLINE),
   B("__INCLUDE_LEVEL__", BT_INCLUDE_LEVEL),
+  B("__COUNTER__",	 BT_COUNTER),
   /* Keep builtins not used for -traditional-cpp at the end, and
      update init_builtins() if any more are added.  */
   B("_Pragma",		 BT_PRAGMA),

Index: src/gnu/dist/gcc4/libcpp/macro.c
diff -u src/gnu/dist/gcc4/libcpp/macro.c:1.3 src/gnu/dist/gcc4/libcpp/macro.c:1.4
--- src/gnu/dist/gcc4/libcpp/macro.c:1.3	Wed Nov 11 19:03:52 2009
+++ src/gnu/dist/gcc4/libcpp/macro.c	Sat Nov 24 09:07:44 2012
@@ -284,6 +284,14 @@ _cpp_builtin_macro_text (cpp_reader *pfi
       else
 	result = pfile->time;
       break;
+
+    case BT_COUNTER:
+      {
+	static unsigned int counter = 0;
+
+	number = counter++;
+      }
+      break;
     }
 
   if (result == NULL)

Index: src/gnu/dist/gcc4/libcpp/include/cpplib.h
diff -u src/gnu/dist/gcc4/libcpp/include/cpplib.h:1.2 src/gnu/dist/gcc4/libcpp/include/cpplib.h:1.3
--- src/gnu/dist/gcc4/libcpp/include/cpplib.h:1.2	Wed Nov 11 19:03:52 2009
+++ src/gnu/dist/gcc4/libcpp/include/cpplib.h	Sat Nov 24 09:07:44 2012
@@ -551,6 +551,7 @@ enum builtin_type
   BT_BASE_FILE,			/* `__BASE_FILE__' */
   BT_INCLUDE_LEVEL,		/* `__INCLUDE_LEVEL__' */
   BT_TIME,			/* `__TIME__' */
+  BT_COUNTER,			/* `__COUNTER__' */
   BT_STDC,			/* `__STDC__' */
   BT_PRAGMA			/* `_Pragma' operator */
 };

Reply via email to