changeset 188:df98fb0378c7

[project @ 2002-11-22 13:37:52 by bellard] further parse optimizations
author bellard
date Fri, 22 Nov 2002 13:37:52 +0000
parents 8fb3e7898629
children bfde9349a2a3
files tcc.c
diffstat 1 files changed, 18 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/tcc.c	Wed Nov 20 00:29:04 2002 +0000
+++ b/tcc.c	Fri Nov 22 13:37:52 2002 +0000
@@ -2675,14 +2675,21 @@
     char *q;
     TokenSym *ts;
 
-    /* skip spaces */
-    while(1) {
-        while (ch == '\n') {
-            /* during preprocessor parsing, '\n' is a token */
-            if (return_linefeed) {
-                tok = TOK_LINEFEED;
-                return;
-            }
+ redo_no_start:
+    switch(ch) {
+    case ' ':
+    case '\t':
+    case '\f':
+    case '\v':
+    case '\r':
+        cinp();
+        goto redo_no_start;
+        
+    case '\n':
+        if (return_linefeed) {
+            /* XXX: should eat token ? */
+            tok = TOK_LINEFEED;
+        } else {
             cinp();
             skip_spaces();
             if (ch == '#') {
@@ -2690,12 +2697,9 @@
                    spaces */
                 preprocess();
             }
-        }
-        if (!is_space(ch))
-            break;
-        cinp();
-    }
-    switch(ch) {
+            goto redo_no_start;
+        }
+        break;
 
     case '#':
         tok = ch;