mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-02 05:50:26 +08:00
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
This commit is contained in:
parent
71b1071304
commit
1b829d45a8
@ -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
|
||||
|
@ -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";
|
||||
|
@ -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];
|
||||
}]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user