+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.
--- /dev/null
+// 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);
+}
--- /dev/null
+// 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);
+}
+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
|| (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;
}