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