From 67b8719a740421cb528d9266ac5a0782d15a8fdf Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Mon, 14 Feb 2000 06:31:20 +0000 Subject: cppfiles.c (read_and_prescan): When emitting deferred newlines... 2000-02-13 Neil Booth * cppfiles.c (read_and_prescan): When emitting deferred newlines, test speccase[] again instead of checking each possible whitespace character in turn. When we encounter \r, look behind for \n first, then ahead. From-SVN: r31963 --- gcc/cppfiles.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'gcc/cppfiles.c') diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c index a00fb89..592cb6b 100644 --- a/gcc/cppfiles.c +++ b/gcc/cppfiles.c @@ -904,8 +904,9 @@ read_and_prescan (pfile, fp, desc, len) memcpy (op, ip, span); op += span; ip += span; - if (*ip == '\n' || *ip == '\t' - || *ip == ' ' || *ip == ' ') + /* If ip[0] is SPECCASE_EMPTY, we have hit white space. + Dump out the remaining deferred \-newlines. */ + if (speccase[ip[0]] == SPECCASE_EMPTY) while (deferred_newlines) deferred_newlines--, *op++ = '\r'; span = 0; @@ -924,15 +925,15 @@ read_and_prescan (pfile, fp, desc, len) goto read_next; case SPECCASE_CR: /* \r */ - if (*ip == '\n') + if (ip[-2] == '\n') + continue; + else if (*ip == '\n') ip++; else if (*ip == '\0') { *--ibase = '\r'; goto read_next; } - else if (ip[-2] == '\n') - continue; *op++ = '\n'; break; -- cgit v1.1