re PR preprocessor/57757 (CPP extra inserted whitespace needs to be reviewed for C++11 user-defined literals)
PR preprocessor/57757 * lex.c (cpp_avoid_paste): Avoid pasting CPP_{,W,UTF8}STRING or CPP_STRING{16,32} with CPP_NAME or SPELL_LITERAL token that starts if a-zA-Z_. * g++.dg/cpp/paste1.C: New test. * g++.dg/cpp/paste2.C: New test. From-SVN: r200875
This commit is contained in:
parent
bb6f2bacbb
commit
87e356bada
@ -1,4 +1,11 @@
|
||||
2013-07-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR preprocessor/57757
|
||||
* g++.dg/cpp/paste1.C: New test.
|
||||
* g++.dg/cpp/paste2.C: New test.
|
||||
|
||||
2013-07-10 Graham Stott <grahams@btinternet.com>
|
||||
|
||||
* gcc.target/mips/mulsize-1.c: New.
|
||||
* gcc.target/mips/mulsize-2.c: New.
|
||||
* gcc.target/mips/mulsize-3.c: New.
|
||||
|
14
gcc/testsuite/g++.dg/cpp/paste1.C
Normal file
14
gcc/testsuite/g++.dg/cpp/paste1.C
Normal file
@ -0,0 +1,14 @@
|
||||
// PR preprocessor/57757
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11" }
|
||||
|
||||
#define S(x) x
|
||||
extern S("C")void exit (int);
|
||||
int
|
||||
main ()
|
||||
{
|
||||
(void) (S("foo")and 0);
|
||||
const wchar_t *p = S(L"foo")L"bar";
|
||||
const char *a = S("foo")R"(bar)";
|
||||
exit (0);
|
||||
}
|
15
gcc/testsuite/g++.dg/cpp/paste2.C
Normal file
15
gcc/testsuite/g++.dg/cpp/paste2.C
Normal file
@ -0,0 +1,15 @@
|
||||
// PR preprocessor/57757
|
||||
// { dg-do compile }
|
||||
// { dg-options "-std=c++11 -save-temps" }
|
||||
// { dg-final cleanup-saved-temps }
|
||||
|
||||
#define S(x) x
|
||||
extern S("C")void exit (int);
|
||||
int
|
||||
main ()
|
||||
{
|
||||
(void) (S("foo")and 0);
|
||||
const wchar_t *p = S(L"foo")L"bar";
|
||||
const char *a = S("foo")R"(bar)";
|
||||
exit (0);
|
||||
}
|
@ -1,3 +1,10 @@
|
||||
2013-07-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR preprocessor/57757
|
||||
* lex.c (cpp_avoid_paste): Avoid pasting CPP_{,W,UTF8}STRING
|
||||
or CPP_STRING{16,32} with CPP_NAME or SPELL_LITERAL token that
|
||||
starts if a-zA-Z_.
|
||||
|
||||
2013-06-28 Ed Smith-Rowland <3dw4rd@verizon.net>
|
||||
|
||||
* lex.c (lex_raw_string(), lex_string()): Constrain suffixes treated
|
||||
|
@ -2767,6 +2767,15 @@ cpp_avoid_paste (cpp_reader *pfile, const cpp_token *token1,
|
||||
|| (CPP_OPTION (pfile, objc)
|
||||
&& token1->val.str.text[0] == '@'
|
||||
&& (b == CPP_NAME || b == CPP_STRING)));
|
||||
case CPP_STRING:
|
||||
case CPP_WSTRING:
|
||||
case CPP_UTF8STRING:
|
||||
case CPP_STRING16:
|
||||
case CPP_STRING32: return (CPP_OPTION (pfile, user_literals)
|
||||
&& (b == CPP_NAME
|
||||
|| (TOKEN_SPELL (token2) == SPELL_LITERAL
|
||||
&& ISIDST (token2->val.str.text[0]))));
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user