--- /dev/null
+/* PR preprocessor/30805 - ICE while token pasting. */
+/* { dg-do preprocess } */
+
+#define A(x,...) x##,##__VA_ARGS__
+A(1)
+2007-11-01 Tom Tromey <tromey@redhat.com>
+
+ PR preprocessor/30805:
+ * macro.c (paste_tokens): Handle padding token.
+ (paste_tokens): Don't abort unless padding has PASTE_LEFT flag.
+
2007-10-31 Tom Tromey <tromey@redhat.com>
PR preprocessor/30786:
false doesn't work, since we want to clear the PASTE_LEFT flag. */
if ((*plhs)->type == CPP_DIV && rhs->type != CPP_EQ)
*end++ = ' ';
- end = cpp_spell_token (pfile, rhs, end, false);
+ /* In one obscure case we might see padding here. */
+ if (rhs->type != CPP_PADDING)
+ end = cpp_spell_token (pfile, rhs, end, false);
*end = '\n';
cpp_push_buffer (pfile, buf, end - buf, /* from_stage3 */ true);
rhs = *FIRST (context).ptoken++;
if (rhs->type == CPP_PADDING)
- abort ();
-
+ {
+ if (rhs->flags & PASTE_LEFT)
+ abort ();
+ }
if (!paste_tokens (pfile, &lhs, rhs))
break;
}