diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-09-17 18:05:11 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-09-17 18:05:11 +0200 |
commit | 1b829d45a824ffabbc1e0cd6b3999d64bd783a17 (patch) | |
tree | 29f85dfecd5ae18c466e99d1adceadb929068aa7 /gcc/testsuite | |
parent | 71b10713042adcba36768039d3f0d5231b34f90a (diff) | |
download | gcc-1b829d45a824ffabbc1e0cd6b3999d64bd783a17.zip gcc-1b829d45a824ffabbc1e0cd6b3999d64bd783a17.tar.gz gcc-1b829d45a824ffabbc1e0cd6b3999d64bd783a17.tar.bz2 |
re PR preprocessor/37324 (FAIL: gcc.dg/utf-array.c (test for errors))
PR preprocessor/37324
* lib/target-supports.exp
(check_effective_target_wchar_t_char16_t_compatible,
check_effective_target_wchar_t_char32_t_compatible): New.
* gcc.dg/utf-array.c: Use __CHAR{16,32}_TYPE__ macros in typedefs.
Only require from incompatible errors for char{16,32}_t vs. wchar_t
initializations if those types are indeed incompatible.
From-SVN: r140421
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/utf-array.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/lib/target-supports.exp | 20 |
3 files changed, 36 insertions, 6 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 849db2e..f62304e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2008-09-17 Jakub Jelinek <jakub@redhat.com> + + PR preprocessor/37324 + * lib/target-supports.exp + (check_effective_target_wchar_t_char16_t_compatible, + check_effective_target_wchar_t_char32_t_compatible): New. + * gcc.dg/utf-array.c: Use __CHAR{16,32}_TYPE__ macros in typedefs. + Only require from incompatible errors for char{16,32}_t vs. wchar_t + initializations if those types are indeed incompatible. + 2008-09-16 Janis Johnson <janis187@us.ibm.com> PR testsuite/25241 diff --git a/gcc/testsuite/gcc.dg/utf-array.c b/gcc/testsuite/gcc.dg/utf-array.c index 50a29fe..2db8e51 100644 --- a/gcc/testsuite/gcc.dg/utf-array.c +++ b/gcc/testsuite/gcc.dg/utf-array.c @@ -5,8 +5,8 @@ #include <wchar.h> -typedef short unsigned int char16_t; -typedef unsigned int char32_t; +typedef __CHAR16_TYPE__ char16_t; +typedef __CHAR32_TYPE__ char32_t; const char s_0[] = "ab"; const char s_1[] = u"ab"; /* { dg-error "from wide string" } */ @@ -16,7 +16,7 @@ const char s_3[] = L"ab"; /* { dg-error "from wide string" } */ const char16_t s16_0[] = "ab"; /* { dg-error "from non-wide" } */ const char16_t s16_1[] = u"ab"; const char16_t s16_2[] = U"ab"; /* { dg-error "from incompatible" } */ -const char16_t s16_3[] = L"ab"; /* { dg-error "from incompatible" } */ +const char16_t s16_3[] = L"ab"; /* { dg-error "from incompatible" { target !wchar_t_char16_t_compatible } } */ const char16_t s16_4[0] = u"ab"; /* { dg-warning "chars is too long" } */ const char16_t s16_5[1] = u"ab"; /* { dg-warning "chars is too long" } */ @@ -27,7 +27,7 @@ const char16_t s16_8[4] = u"ab"; const char32_t s32_0[] = "ab"; /* { dg-error "from non-wide" } */ const char32_t s32_1[] = u"ab"; /* { dg-error "from incompatible" } */ const char32_t s32_2[] = U"ab"; -const char32_t s32_3[] = L"ab"; /* { dg-error "from incompatible" } */ +const char32_t s32_3[] = L"ab"; /* { dg-error "from incompatible" { target !wchar_t_char32_t_compatible } } */ const char32_t s32_4[0] = U"ab"; /* { dg-warning "chars is too long" } */ const char32_t s32_5[1] = U"ab"; /* { dg-warning "chars is too long" } */ @@ -36,6 +36,6 @@ const char32_t s32_7[3] = U"ab"; const char32_t s32_8[4] = U"ab"; const wchar_t sw_0[] = "ab"; /* { dg-error "from non-wide" } */ -const wchar_t sw_1[] = u"ab"; /* { dg-error "from incompatible" } */ -const wchar_t sw_2[] = U"ab"; /* { dg-error "from incompatible" } */ +const wchar_t sw_1[] = u"ab"; /* { dg-error "from incompatible" { target !wchar_t_char16_t_compatible } } */ +const wchar_t sw_2[] = U"ab"; /* { dg-error "from incompatible" { target !wchar_t_char32_t_compatible } } */ const wchar_t sw_3[] = L"ab"; diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 2965064..72117c6 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -2592,3 +2592,23 @@ proc check_effective_target_avx { } { } } "-O2 -mavx" ] } + +# Return 1 if C wchar_t type is compatible with char16_t. + +proc check_effective_target_wchar_t_char16_t_compatible { } { + return [check_no_compiler_messages wchar_t_char16_t object { + __WCHAR_TYPE__ wc; + __CHAR16_TYPE__ *p16 = &wc; + char t[(((__CHAR16_TYPE__) -1) < 0 == ((__WCHAR_TYPE__) -1) < 0) ? 1 : -1]; + }] +} + +# Return 1 if C wchar_t type is compatible with char32_t. + +proc check_effective_target_wchar_t_char32_t_compatible { } { + return [check_no_compiler_messages wchar_t_char32_t object { + __WCHAR_TYPE__ wc; + __CHAR32_TYPE__ *p32 = &wc; + char t[(((__CHAR32_TYPE__) -1) < 0 == ((__WCHAR_TYPE__) -1) < 0) ? 1 : -1]; + }] +} |