OSDN Git Service

Fix cpp_peek_token behaviour (PR bootstrap/50778)
authordodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Oct 2011 17:49:18 +0000 (17:49 +0000)
committerdodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Oct 2011 17:49:18 +0000 (17:49 +0000)
libcpp/

* include/internal.h (_cpp_remaining_tokens_num_in_context): Take the
context to act upon.
* lex.c (_cpp_remaining_tokens_num_in_context): Likewise.  Update
comment.
(cpp_token_from_context_at): Likewise.
(cpp_peek_token): Use the context to peek tokens from.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180328 138bc75d-0d04-0410-961f-82ee72b054a4

libcpp/ChangeLog
libcpp/internal.h
libcpp/lex.c

index 128d3e1..3c47795 100644 (file)
@@ -1,3 +1,13 @@
+2011-10-22  Dodji Seketeli  <dodji@redhat.com>
+
+       PR bootstrap/50778
+       * include/internal.h (_cpp_remaining_tokens_num_in_context): Take the
+       context to act upon.
+       * lex.c (_cpp_remaining_tokens_num_in_context): Likewise.  Update
+       comment.
+       (cpp_token_from_context_at): Likewise.
+       (cpp_peek_token): Use the context to peek tokens from.
+
 2011-10-20  Dodji Seketeli  <dodji@redhat.com>
 
        PR bootstrap/50801
index 6fb2606..e60330d 100644 (file)
@@ -652,7 +652,7 @@ extern cpp_token *_cpp_lex_direct (cpp_reader *);
 extern int _cpp_equiv_tokens (const cpp_token *, const cpp_token *);
 extern void _cpp_init_tokenrun (tokenrun *, unsigned int);
 extern cpp_hashnode *_cpp_lex_identifier (cpp_reader *, const char *);
-extern int _cpp_remaining_tokens_num_in_context (cpp_reader *);
+extern int _cpp_remaining_tokens_num_in_context (cpp_context *);
 
 /* In init.c.  */
 extern void _cpp_maybe_push_include_file (cpp_reader *);
index 527368b..896a3be 100644 (file)
@@ -1703,12 +1703,11 @@ next_tokenrun (tokenrun *run)
   return run->next;
 }
 
-/* Return the number of not yet processed token in the the current
+/* Return the number of not yet processed token in a given
    context.  */
 int
-_cpp_remaining_tokens_num_in_context (cpp_reader *pfile)
+_cpp_remaining_tokens_num_in_context (cpp_context *context)
 {
-  cpp_context *context = pfile->context;
   if (context->tokens_kind == TOKENS_KIND_DIRECT)
     return (LAST (context).token - FIRST (context).token);
   else if (context->tokens_kind == TOKENS_KIND_INDIRECT
@@ -1718,12 +1717,11 @@ _cpp_remaining_tokens_num_in_context (cpp_reader *pfile)
       abort ();
 }
 
-/* Returns the token present at index INDEX in the current context.
-   If INDEX is zero, the next token to be processed is returned.  */
+/* Returns the token present at index INDEX in a given context.  If
+   INDEX is zero, the next token to be processed is returned.  */
 static const cpp_token*
-_cpp_token_from_context_at (cpp_reader *pfile, int index)
+_cpp_token_from_context_at (cpp_context *context, int index)
 {
-  cpp_context *context = pfile->context;
   if (context->tokens_kind == TOKENS_KIND_DIRECT)
     return &(FIRST (context).token[index]);
   else if (context->tokens_kind == TOKENS_KIND_INDIRECT
@@ -1744,10 +1742,10 @@ cpp_peek_token (cpp_reader *pfile, int index)
   /* First, scan through any pending cpp_context objects.  */
   while (context->prev)
     {
-      ptrdiff_t sz = _cpp_remaining_tokens_num_in_context (pfile);
+      ptrdiff_t sz = _cpp_remaining_tokens_num_in_context (context);
 
       if (index < (int) sz)
-        return _cpp_token_from_context_at (pfile, index);
+        return _cpp_token_from_context_at (context, index);
       index -= (int) sz;
       context = context->prev;
     }