From c449ee3da770a4f00beb847f28833614a3c31e2c Mon Sep 17 00:00:00 2001
From: neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Sat, 28 Jun 2003 15:16:10 +0000
Subject: [PATCH] 	* cpptrad.c (skip_macro_block_comment): New. 
 (copy_comment): Use it if appropriate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68641 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog |  5 +++++
 gcc/cpptrad.c | 25 ++++++++++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5d0ffcfae33..d2c9163617a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-06-28  Neil Booth  <neil@daikokuya.co.uk>
+
+	* cpptrad.c (skip_macro_block_comment): New.
+	(copy_comment): Use it if appropriate.
+
 2003-06-28  Kazu Hirata  <kazu@cs.umass.edu>
 
 	* gcse.c (compute_ld_motion_mems): Use INSN_P instead of its
diff --git a/gcc/cpptrad.c b/gcc/cpptrad.c
index 0e4b2314bb4..9b08e31138f 100644
--- a/gcc/cpptrad.c
+++ b/gcc/cpptrad.c
@@ -116,6 +116,25 @@ check_output_buffer (cpp_reader *pfile, size_t n)
     }
 }
 
+/* Skip a C-style block comment in a macro as a result of -CC.
+   Buffer->cur points to the initial asterisk of the comment.  */
+static void
+skip_macro_block_comment (cpp_reader *pfile)
+{
+  const uchar *cur = pfile->buffer->cur;
+
+  cur++;
+  if (*cur == '/')
+    cur++;
+
+  /* People like decorating comments with '*', so check for '/'
+     instead for efficiency.  */
+  while(! (*cur++ == '/' && cur[-2] == '*') )
+    ;
+
+  pfile->buffer->cur = cur;
+}
+
 /* CUR points to the asterisk introducing a comment in the current
    context.  IN_DEFINE is true if we are in the replacement text of a
    macro.
@@ -136,7 +155,11 @@ copy_comment (cpp_reader *pfile, const uchar *cur, int in_define)
   cpp_buffer *buffer = pfile->buffer;
 
   buffer->cur = cur;
-  unterminated = _cpp_skip_block_comment (pfile);
+  if (pfile->context->prev)
+    unterminated = false, skip_macro_block_comment (pfile);
+  else
+    unterminated = _cpp_skip_block_comment (pfile);
+    
   if (unterminated)
     cpp_error_with_line (pfile, DL_ERROR, from_line, 0,
 			 "unterminated comment");
-- 
GitLab