mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
re PR preprocessor/30805 (Internal compiler error when using "x##,##__VA_ARGS__" in macro)
libcpp PR preprocessor/30805: * macro.c (paste_tokens): Handle padding token. (paste_tokens): Don't abort unless padding has PASTE_LEFT flag. gcc/testsuite PR preprocessor/30805: * gcc.dg/cpp/pr30805.c: New file. From-SVN: r129827
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2007-11-01 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR preprocessor/30805:
|
||||
* gcc.dg/cpp/pr30805.c: New file.
|
||||
|
||||
2007-11-01 Janis Johnson <janis187@us.ibm.com>
|
||||
|
||||
PR testsuite/25352
|
||||
|
||||
5
gcc/testsuite/gcc.dg/cpp/pr30805.c
Normal file
5
gcc/testsuite/gcc.dg/cpp/pr30805.c
Normal file
@@ -0,0 +1,5 @@
|
||||
/* PR preprocessor/30805 - ICE while token pasting. */
|
||||
/* { dg-do preprocess } */
|
||||
|
||||
#define A(x,...) x##,##__VA_ARGS__
|
||||
A(1)
|
||||
@@ -1,3 +1,9 @@
|
||||
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:
|
||||
|
||||
@@ -451,7 +451,9 @@ paste_tokens (cpp_reader *pfile, const cpp_token **plhs, const cpp_token *rhs)
|
||||
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);
|
||||
@@ -514,8 +516,10 @@ paste_all_tokens (cpp_reader *pfile, const cpp_token *lhs)
|
||||
rhs = *FIRST (context).ptoken++;
|
||||
|
||||
if (rhs->type == CPP_PADDING)
|
||||
abort ();
|
||||
|
||||
{
|
||||
if (rhs->flags & PASTE_LEFT)
|
||||
abort ();
|
||||
}
|
||||
if (!paste_tokens (pfile, &lhs, rhs))
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user