Hi!

The utf-array.c testcase FAILs e.g. on i686-linux or powerpc-linux,
the problem is that wchar_t there isn't int, but long int.
grep shows that WCHAR_TYPE is one of
int
short int
long int
unsigned int
short unsigned int
long unsigned int
depending on exact target and options.

The following patch accepts them all, ok for trunk?

2019-01-18  Jakub Jelinek  <ja...@redhat.com>

        * gcc.dg/utf-array.c: Allow wchar_t to be printed as
        {long ,short ,}{unsigned ,}int.

--- gcc/testsuite/gcc.dg/utf-array.c.jj 2019-01-18 00:33:20.867980701 +0100
+++ gcc/testsuite/gcc.dg/utf-array.c    2019-01-18 23:32:57.086524528 +0100
@@ -12,13 +12,13 @@ typedef __CHAR32_TYPE__     char32_t;
 const char     s_0[]   = "ab";
 const char     s_1[]   = u"ab";        /* { dg-error "from a string literal 
with type array of" } */
 const char     s_2[]   = U"ab";        /* { dg-error "from a string literal 
with type array of" } */
-const char     s_3[]   = L"ab";        /* { dg-error "from a string literal 
with type array of .int." } */
+const char     s_3[]   = L"ab";        /* { dg-error "from a string literal 
with type array of .(long |short )?(unsigned )?int." } */
 const char     s_4[]   = u8"ab";
 
 const char16_t s16_0[] = "ab";         /* { dg-error "from a string literal 
with type array of .char." } */
 const char16_t s16_1[] = u"ab";
 const char16_t s16_2[] = U"ab";        /* { dg-error "from a string literal 
with type array of" } */
-const char16_t s16_3[] = L"ab";        /* { dg-error "from a string literal 
with type array of .int." "" { target { ! wchar_t_char16_t_compatible } } } */
+const char16_t s16_3[] = L"ab";        /* { dg-error "from a string literal 
with type array of .(long |short )?(unsigned )?int." "" { target { ! 
wchar_t_char16_t_compatible } } } */
 const char16_t s16_4[] = u8"ab";       /* { dg-error "from a string literal 
with type array of .char." } */
 
 const char16_t s16_5[0] = u"ab";       /* { dg-warning "chars is too long" } */
@@ -30,7 +30,7 @@ const char16_t        s16_9[4] = u"ab";
 const char32_t s32_0[] = "ab";         /* { dg-error "from a string literal 
with type array of .char." } */
 const char32_t s32_1[] = u"ab";        /* { dg-error "from a string literal 
with type array of" } */
 const char32_t s32_2[] = U"ab";
-const char32_t s32_3[] = L"ab";        /* { dg-error "from a string literal 
with type array of .int." "" { target { ! wchar_t_char32_t_compatible } } } */
+const char32_t s32_3[] = L"ab";        /* { dg-error "from a string literal 
with type array of .(long |short )?(unsigned )?int." "" { target { ! 
wchar_t_char32_t_compatible } } } */
 const char32_t s32_4[] = u8"ab";       /* { dg-error "from a string literal 
with type array of .char." } */
 
 const char32_t s32_5[0] = U"ab";       /* { dg-warning "chars is too long" } */

        Jakub

Reply via email to