aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-09-17 18:05:11 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2008-09-17 18:05:11 +0200
commit1b829d45a824ffabbc1e0cd6b3999d64bd783a17 (patch)
tree29f85dfecd5ae18c466e99d1adceadb929068aa7 /gcc/testsuite
parent71b10713042adcba36768039d3f0d5231b34f90a (diff)
downloadgcc-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/ChangeLog10
-rw-r--r--gcc/testsuite/gcc.dg/utf-array.c12
-rw-r--r--gcc/testsuite/lib/target-supports.exp20
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];
+ }]
+}