From a3af5087d9b0e120764cb3852da73149be17dfac Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 4 May 2009 13:23:50 +0100 Subject: intl.c (locale_encoding, [...]): New. * intl.c (locale_encoding, locale_utf8): New. (gcc_init_libintl): Initialize locale_encoding and locale_utf8. * intl.h (locale_encoding, locale_utf8): Declare. * pretty-print.c: Include ggc.h. Include iconv.h if HAVE_ICONV. (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale): New. * pretty-print.h (pp_identifier): Call identifier_to_locale on ID argument. (pp_tree_identifier): Define to call pp_base_tree_identifier. (pp_base_tree_identifier): Declare as function. (identifier_to_locale): Declare. * Makefile.in (pretty-print.o): Update dependencies. * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics. testsuite: * gcc.dg/attr-alias-5.c, gcc.dg/ucnid-7.c: New tests. From-SVN: r147096 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/attr-alias-5.c | 12 ++++++++++++ gcc/testsuite/gcc.dg/ucnid-7.c | 7 +++++++ 3 files changed, 23 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/attr-alias-5.c create mode 100644 gcc/testsuite/gcc.dg/ucnid-7.c (limited to 'gcc/testsuite') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8e85e53..9fa40cb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2009-05-04 Joseph Myers + + * gcc.dg/attr-alias-5.c, gcc.dg/ucnid-7.c: New tests. + 2009-05-03 Eric Botcazou * gcc.target/sparc/fpmul-2.c: Replace final_cleanup with optimized. diff --git a/gcc/testsuite/gcc.dg/attr-alias-5.c b/gcc/testsuite/gcc.dg/attr-alias-5.c new file mode 100644 index 0000000..554668d --- /dev/null +++ b/gcc/testsuite/gcc.dg/attr-alias-5.c @@ -0,0 +1,12 @@ +/* Verify diagnostics for aliases to strings containing extended + identifiers or bad characters. */ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99" } */ +/* { dg-require-alias "" } */ + +void f0 (void) __attribute__((alias("\xa1"))); /* { dg-error "undefined symbol '\\\\241'" } */ +void f1 (void) __attribute__((alias("\u00e9"))); /* { dg-error "undefined symbol '\\\\U000000e9'" } */ +void f2 (void) __attribute__((alias("\uffff"))); /* { dg-error "undefined symbol '\\\\U0000ffff'" } */ +void f3 (void) __attribute__((alias("\U000fffff"))); /* { dg-error "undefined symbol '\\\\U000fffff'" } */ +void f4 (void) __attribute__((alias("\U00ffffff"))); /* { dg-error "undefined symbol '\\\\U00ffffff'" } */ +void f5 (void) __attribute__((alias("\U0fffffff"))); /* { dg-error "undefined symbol '\\\\U0fffffff'" } */ diff --git a/gcc/testsuite/gcc.dg/ucnid-7.c b/gcc/testsuite/gcc.dg/ucnid-7.c new file mode 100644 index 0000000..fe53a49 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ucnid-7.c @@ -0,0 +1,7 @@ +/* Verify diagnostics for extended identifiers refer to UCNs (in the C + locale). */ +/* { dg-do compile } */ +/* { dg-options "-std=c99 -fextended-identifiers" } */ + +void *p = &\u00e9; /* { dg-error "'\\\\U000000e9' undeclared" } */ +void *q = &\u1e00; /* { dg-error "'\\\\U00001e00' undeclared" } */ -- cgit v1.1