summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-25 22:39:51 +0000
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-25 22:39:51 +0000
commitf0495c2c8e7c3c66271599323d04046d84dbae04 (patch)
treebb49ba90782584c23f6bca3a21e6dfbc631dc1a3
parent524f0c4019266cde4fb5b6aaf008576e4e266a1c (diff)
downloadppe42-gcc-f0495c2c8e7c3c66271599323d04046d84dbae04.tar.gz
ppe42-gcc-f0495c2c8e7c3c66271599323d04046d84dbae04.zip
* cpplex.c (save_comment): Only store the initial '/'
now. (lex_token): Combine handling of the two comment types. Pass everything but the initial '/' to save_comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36635 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cpplex.c82
2 files changed, 42 insertions, 47 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 17a33151f94..c8898da0c69 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+Mon 25-Sep-2000 23:38:27 BST Neil Booth <neilb@earthling.net>
+
+ * cpplex.c (save_comment): Only store the initial '/'
+ now.
+ (lex_token): Combine handling of the two comment types.
+ Pass everything but the initial '/' to save_comment.
+
Mon 25-Sep-2000 23:31:45 BST Neil Booth <neilb@earthling.net>
* cpphash.h (_cpp_digraph_spellings, _cpp_process_directive,
diff --git a/gcc/cpplex.c b/gcc/cpplex.c
index c07c721bc08..0c31560fd8f 100644
--- a/gcc/cpplex.c
+++ b/gcc/cpplex.c
@@ -947,8 +947,7 @@ save_comment (pfile, token, from)
unsigned int len;
cpp_toklist *list = &pfile->token_list;
-#define COMMENT_START_LEN 2
- len = pfile->buffer->cur - from + COMMENT_START_LEN;
+ len = pfile->buffer->cur - from + 1; /* + 1 for the initial '/'. */
_cpp_reserve_name_space (list, len);
buffer = list->namebuf + list->name_used;
list->name_used += len;
@@ -957,10 +956,8 @@ save_comment (pfile, token, from)
token->val.str.len = len;
token->val.str.text = buffer;
- /* from[-1] is '/' or '*' depending on the comment type. */
- *buffer++ = '/';
- *buffer++ = from[-1];
- memcpy (buffer, from, len - COMMENT_START_LEN);
+ buffer[0] = '/';
+ memcpy (buffer + 1, from, len - 1);
}
/* Subroutine of lex_token to handle '%'. A little tricky, since we
@@ -1187,65 +1184,56 @@ lex_token (pfile, result)
break;
case '/':
+ /* A potential block or line comment. */
+ comment_start = buffer->cur;
result->type = CPP_DIV;
c = get_effective_char (buffer);
if (c == '=')
ACCEPT_CHAR (CPP_DIV_EQ);
- else if (c == '*')
- {
- comment_start = buffer->cur;
+ if (c != '/' && c != '*')
+ break;
- /* Skip_block_comment updates buffer->read_ahead. */
+ if (c == '*')
+ {
if (skip_block_comment (pfile))
cpp_error_with_line (pfile, result->line, result->col,
"unterminated comment");
- if (!pfile->state.save_comments)
- {
- result->flags |= PREV_WHITE;
- goto next_char;
- }
-
- /* Save the comment as a token in its own right. */
- save_comment (pfile, result, comment_start);
}
- else if (c == '/')
+ else
{
+ if (!CPP_OPTION (pfile, cplusplus_comments)
+ && !CPP_IN_SYSTEM_HEADER (pfile))
+ break;
+
/* We silently allow C++ comments in system headers,
irrespective of conformance mode, because lots of
broken systems do that and trying to clean it up in
fixincludes is a nightmare. */
- if (CPP_IN_SYSTEM_HEADER (pfile))
- goto do_line_comment;
- if (CPP_OPTION (pfile, cplusplus_comments))
+ if (!CPP_IN_SYSTEM_HEADER (pfile)
+ && CPP_OPTION (pfile, c89) && CPP_PEDANTIC (pfile)
+ && !buffer->warned_cplusplus_comments)
{
- if (CPP_OPTION (pfile, c89) && CPP_PEDANTIC (pfile)
- && ! buffer->warned_cplusplus_comments)
- {
- cpp_pedwarn (pfile,
- "C++ style comments are not allowed in ISO C89");
- cpp_pedwarn (pfile,
- "(this will be reported only once per input file)");
- buffer->warned_cplusplus_comments = 1;
- }
-
- do_line_comment:
- comment_start = buffer->cur;
-
- /* Skip_line_comment updates buffer->read_ahead. */
- if (skip_line_comment (pfile))
- cpp_warning_with_line (pfile, result->line, result->col,
- "multi-line comment");
+ cpp_pedwarn (pfile,
+ "C++ style comments are not allowed in ISO C89");
+ cpp_pedwarn (pfile,
+ "(this will be reported only once per input file)");
+ buffer->warned_cplusplus_comments = 1;
+ }
- if (!pfile->state.save_comments)
- {
- result->flags |= PREV_WHITE;
- goto next_char;
- }
+ if (skip_line_comment (pfile))
+ cpp_warning_with_line (pfile, result->line, result->col,
+ "multi-line comment");
+ }
- /* Save the comment as a token in its own right. */
- save_comment (pfile, result, comment_start);
- }
+ /* Skipping the comment has updated buffer->read_ahead. */
+ if (!pfile->state.save_comments)
+ {
+ result->flags |= PREV_WHITE;
+ goto next_char;
}
+
+ /* Save the comment as a token in its own right. */
+ save_comment (pfile, result, comment_start);
break;
case '<':
OpenPOWER on IntegriCloud