+2002-04-21 Neil Booth <neil@daikokuya.demon.co.uk>
+
+ * cppmacro.c (funlike_invocation_p): Don't step back
+ over CPP_EOF.
+
2002-04-21 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/rs6000.c (output_profile_hook): Do not increment
return collect_args (pfile, node);
}
- /* Back up. We may have skipped padding, in which case backing up
- more than one token when expanding macros is in general too
- difficult. We re-insert it in its own context. */
- _cpp_backup_tokens (pfile, 1);
- if (padding)
- push_token_context (pfile, NULL, padding, 1);
+ /* CPP_EOF can be the end of macro arguments, or the end of the
+ file. We mustn't back up over the latter. Ugh. */
+ if (token->type != CPP_EOF || token == &pfile->eof)
+ {
+ /* Back up. We may have skipped padding, in which case backing
+ up more than one token when expanding macros is in general
+ too difficult. We re-insert it in its own context. */
+ _cpp_backup_tokens (pfile, 1);
+ if (padding)
+ push_token_context (pfile, NULL, padding, 1);
+ }
return NULL;
}
+2002-04-21 Neil Booth <neil@daikokuya.demon.co.uk>
+
+ * gcc.dg/cpp/endif.h, gcc.dg/cpp/endif.c: New tests.
+
2002-04-21 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* gcc.c-torture/execute/20000906-1.x: Delete.
--- /dev/null
+/* Copyright (C) 2002 Free Software Foundation, Inc. */
+
+/* { dg-do preprocess } */
+
+/* Test case for PR preprocessor/6386 by Andreas Schwab. We'd back up
+ over the CPP_EOF token (indicating not a funlike macro invocation)
+ in the header file, which would then be passed through as a real
+ EOF, leading to an early exit (and therefore bogus complaint about
+ unterminated #if). */
+
+#define S(x)
+#if 1
+#include "endif.h"
+#endif