// PR preprocessor/57620
// { dg-do run }
// { dg-require-effective-target wchar }
// { dg-options "-std=gnu99 -Wno-c++-compat -Wtrigraphs" { target c } }
// { dg-options "-std=gnu++11 -Wtrigraphs" { target c++ } }

#ifndef __cplusplus
#include <wchar.h>

typedef __CHAR16_TYPE__	char16_t;
typedef __CHAR32_TYPE__ char32_t;
#endif

#define R
#define u
#define uR
#define U
#define UR
#define u8
#define u8R
#define L
#define LR

const char s00[] = R"??=??(??<??>??)??'??!??-\
(a)#[{}]^|~";
)??=??";
const char s01[] = R"a(
)\
a"
)a";
const char s02[] = R"a(
)a\
"
)a";
const char s03[] = R"ab(
)a\
b"
)ab";
const char s04[] = R"a??/(x)a??/";
const char s05[] = R"abcdefghijklmn??(abc)abcdefghijklmn??";
const char s06[] = R"abcdefghijklm??/(abc)abcdefghijklm??/";
const char s07[] = R"abc(??)\
abc";)abc";
const char s08[] = R"def(de)\
def";)def";
const char s09[] = R"a(??)\
a"
)a";
const char s10[] = R"a(??)a\
"
)a";
const char s11[] = R"ab(??)a\
b"
)ab";
const char s12[] = R"a#(a#)a??=)a#";
const char s13[] = R"a#(??)a??=??)a#";
const char s14[] = R"??/(x)??/
";)??/";
const char s15[] = R"??/(??)??/
";)??/";
const char s16[] = R"??(??)??";
const char s17[] = R"?(?)??)?";
const char s18[] = R"??(??)??)??)??";

const char u800[] = u8R"??=??(??<??>??)??'??!??-\
(a)#[{}]^|~";
)??=??";
const char u801[] = u8R"a(
)\
a"
)a";
const char u802[] = u8R"a(
)a\
"
)a";
const char u803[] = u8R"ab(
)a\
b"
)ab";
const char u804[] = u8R"a??/(x)a??/";
const char u805[] = u8R"abcdefghijklmn??(abc)abcdefghijklmn??";
const char u806[] = u8R"abcdefghijklm??/(abc)abcdefghijklm??/";
const char u807[] = u8R"abc(??)\
abc";)abc";
const char u808[] = u8R"def(de)\
def";)def";
const char u809[] = u8R"a(??)\
a"
)a";
const char u810[] = u8R"a(??)a\
"
)a";
const char u811[] = u8R"ab(??)a\
b"
)ab";
const char u812[] = u8R"a#(a#)a??=)a#";
const char u813[] = u8R"a#(??)a??=??)a#";
const char u814[] = u8R"??/(x)??/
";)??/";
const char u815[] = u8R"??/(??)??/
";)??/";
const char u816[] = u8R"??(??)??";
const char u817[] = u8R"?(?)??)?";
const char u818[] = u8R"??(??)??)??)??";

const char16_t u00[] = uR"??=??(??<??>??)??'??!??-\
(a)#[{}]^|~";
)??=??";
const char16_t u01[] = uR"a(
)\
a"
)a";
const char16_t u02[] = uR"a(
)a\
"
)a";
const char16_t u03[] = uR"ab(
)a\
b"
)ab";
const char16_t u04[] = uR"a??/(x)a??/";
const char16_t u05[] = uR"abcdefghijklmn??(abc)abcdefghijklmn??";
const char16_t u06[] = uR"abcdefghijklm??/(abc)abcdefghijklm??/";
const char16_t u07[] = uR"abc(??)\
abc";)abc";
const char16_t u08[] = uR"def(de)\
def";)def";
const char16_t u09[] = uR"a(??)\
a"
)a";
const char16_t u10[] = uR"a(??)a\
"
)a";
const char16_t u11[] = uR"ab(??)a\
b"
)ab";
const char16_t u12[] = uR"a#(a#)a??=)a#";
const char16_t u13[] = uR"a#(??)a??=??)a#";
const char16_t u14[] = uR"??/(x)??/
";)??/";
const char16_t u15[] = uR"??/(??)??/
";)??/";
const char16_t u16[] = uR"??(??)??";
const char16_t u17[] = uR"?(?)??)?";
const char16_t u18[] = uR"??(??)??)??)??";

const char32_t U00[] = UR"??=??(??<??>??)??'??!??-\
(a)#[{}]^|~";
)??=??";
const char32_t U01[] = UR"a(
)\
a"
)a";
const char32_t U02[] = UR"a(
)a\
"
)a";
const char32_t U03[] = UR"ab(
)a\
b"
)ab";
const char32_t U04[] = UR"a??/(x)a??/";
const char32_t U05[] = UR"abcdefghijklmn??(abc)abcdefghijklmn??";
const char32_t U06[] = UR"abcdefghijklm??/(abc)abcdefghijklm??/";
const char32_t U07[] = UR"abc(??)\
abc";)abc";
const char32_t U08[] = UR"def(de)\
def";)def";
const char32_t U09[] = UR"a(??)\
a"
)a";
const char32_t U10[] = UR"a(??)a\
"
)a";
const char32_t U11[] = UR"ab(??)a\
b"
)ab";
const char32_t U12[] = UR"a#(a#)a??=)a#";
const char32_t U13[] = UR"a#(??)a??=??)a#";
const char32_t U14[] = UR"??/(x)??/
";)??/";
const char32_t U15[] = UR"??/(??)??/
";)??/";
const char32_t U16[] = UR"??(??)??";
const char32_t U17[] = UR"?(?)??)?";
const char32_t U18[] = UR"??(??)??)??)??";

const wchar_t L00[] = LR"??=??(??<??>??)??'??!??-\
(a)#[{}]^|~";
)??=??";
const wchar_t L01[] = LR"a(
)\
a"
)a";
const wchar_t L02[] = LR"a(
)a\
"
)a";
const wchar_t L03[] = LR"ab(
)a\
b"
)ab";
const wchar_t L04[] = LR"a??/(x)a??/";
const wchar_t L05[] = LR"abcdefghijklmn??(abc)abcdefghijklmn??";
const wchar_t L06[] = LR"abcdefghijklm??/(abc)abcdefghijklm??/";
const wchar_t L07[] = LR"abc(??)\
abc";)abc";
const wchar_t L08[] = LR"def(de)\
def";)def";
const wchar_t L09[] = LR"a(??)\
a"
)a";
const wchar_t L10[] = LR"a(??)a\
"
)a";
const wchar_t L11[] = LR"ab(??)a\
b"
)ab";
const wchar_t L12[] = LR"a#(a#)a??=)a#";
const wchar_t L13[] = LR"a#(??)a??=??)a#";
const wchar_t L14[] = LR"??/(x)??/
";)??/";
const wchar_t L15[] = LR"??/(??)??/
";)??/";
const wchar_t L16[] = LR"??(??)??";
const wchar_t L17[] = LR"?(?)??)?";
const wchar_t L18[] = LR"??(??)??)??)??";

int
main (void)
{
#define TEST(str, val) \
  if (sizeof (str) != sizeof (val) \
      || __builtin_memcmp (str, val, sizeof (str)) != 0) \
    __builtin_abort ()
  TEST (s00, "??""<??"">??"")??""'??""!??""-\\\n(a)#[{}]^|~\";\n");
  TEST (s01, "\n)\\\na\"\n");
  TEST (s02, "\n)a\\\n\"\n");
  TEST (s03, "\n)a\\\nb\"\n");
  TEST (s04, "x");
  TEST (s05, "abc");
  TEST (s06, "abc");
  TEST (s07, "??"")\\\nabc\";");
  TEST (s08, "de)\\\ndef\";");
  TEST (s09, "??"")\\\na\"\n");
  TEST (s10, "??"")a\\\n\"\n");
  TEST (s11, "??"")a\\\nb\"\n");
  TEST (s12, "a#)a??""=");
  TEST (s13, "??"")a??""=??");
  TEST (s14, "x)??""/\n\";");
  TEST (s15, "??"")??""/\n\";");
  TEST (s16, "??");
  TEST (s17, "?)??");
  TEST (s18, "??"")??"")??");
  TEST (u800, u8"??""<??"">??"")??""'??""!??""-\\\n(a)#[{}]^|~\";\n");
  TEST (u801, u8"\n)\\\na\"\n");
  TEST (u802, u8"\n)a\\\n\"\n");
  TEST (u803, u8"\n)a\\\nb\"\n");
  TEST (u804, u8"x");
  TEST (u805, u8"abc");
  TEST (u806, u8"abc");
  TEST (u807, u8"??"")\\\nabc\";");
  TEST (u808, u8"de)\\\ndef\";");
  TEST (u809, u8"??"")\\\na\"\n");
  TEST (u810, u8"??"")a\\\n\"\n");
  TEST (u811, u8"??"")a\\\nb\"\n");
  TEST (u812, u8"a#)a??""=");
  TEST (u813, u8"??"")a??""=??");
  TEST (u814, u8"x)??""/\n\";");
  TEST (u815, u8"??"")??""/\n\";");
  TEST (u816, u8"??");
  TEST (u817, u8"?)??");
  TEST (u818, u8"??"")??"")??");
  TEST (u00, u"??""<??"">??"")??""'??""!??""-\\\n(a)#[{}]^|~\";\n");
  TEST (u01, u"\n)\\\na\"\n");
  TEST (u02, u"\n)a\\\n\"\n");
  TEST (u03, u"\n)a\\\nb\"\n");
  TEST (u04, u"x");
  TEST (u05, u"abc");
  TEST (u06, u"abc");
  TEST (u07, u"??"")\\\nabc\";");
  TEST (u08, u"de)\\\ndef\";");
  TEST (u09, u"??"")\\\na\"\n");
  TEST (u10, u"??"")a\\\n\"\n");
  TEST (u11, u"??"")a\\\nb\"\n");
  TEST (u12, u"a#)a??""=");
  TEST (u13, u"??"")a??""=??");
  TEST (u14, u"x)??""/\n\";");
  TEST (u15, u"??"")??""/\n\";");
  TEST (u16, u"??");
  TEST (u17, u"?)??");
  TEST (u18, u"??"")??"")??");
  TEST (U00, U"??""<??"">??"")??""'??""!??""-\\\n(a)#[{}]^|~\";\n");
  TEST (U01, U"\n)\\\na\"\n");
  TEST (U02, U"\n)a\\\n\"\n");
  TEST (U03, U"\n)a\\\nb\"\n");
  TEST (U04, U"x");
  TEST (U05, U"abc");
  TEST (U06, U"abc");
  TEST (U07, U"??"")\\\nabc\";");
  TEST (U08, U"de)\\\ndef\";");
  TEST (U09, U"??"")\\\na\"\n");
  TEST (U10, U"??"")a\\\n\"\n");
  TEST (U11, U"??"")a\\\nb\"\n");
  TEST (U12, U"a#)a??""=");
  TEST (U13, U"??"")a??""=??");
  TEST (U14, U"x)??""/\n\";");
  TEST (U15, U"??"")??""/\n\";");
  TEST (U16, U"??");
  TEST (U17, U"?)??");
  TEST (U18, U"??"")??"")??");
  TEST (L00, L"??""<??"">??"")??""'??""!??""-\\\n(a)#[{}]^|~\";\n");
  TEST (L01, L"\n)\\\na\"\n");
  TEST (L02, L"\n)a\\\n\"\n");
  TEST (L03, L"\n)a\\\nb\"\n");
  TEST (L04, L"x");
  TEST (L05, L"abc");
  TEST (L06, L"abc");
  TEST (L07, L"??"")\\\nabc\";");
  TEST (L08, L"de)\\\ndef\";");
  TEST (L09, L"??"")\\\na\"\n");
  TEST (L10, L"??"")a\\\n\"\n");
  TEST (L11, L"??"")a\\\nb\"\n");
  TEST (L12, L"a#)a??""=");
  TEST (L13, L"??"")a??""=??");
  TEST (L14, L"x)??""/\n\";");
  TEST (L15, L"??"")??""/\n\";");
  TEST (L16, L"??");
  TEST (L17, L"?)??");
  TEST (L18, L"??"")??"")??");
  return 0;
}
