diff options
author | Kaveh R. Ghazi <ghazi@caip.rutgers.edu> | 2005-11-29 05:17:20 +0000 |
---|---|---|
committer | Kaveh Ghazi <ghazi@gcc.gnu.org> | 2005-11-29 05:17:20 +0000 |
commit | 000ba23d0465bedacdce9c33274da8b498c2222c (patch) | |
tree | 06742bbf23f884a91f39fba3c642b62451a1d03a /gcc/testsuite | |
parent | 8fdb0857e96aee3af730b7d12be80cb50aabb24d (diff) | |
download | gcc-000ba23d0465bedacdce9c33274da8b498c2222c.zip gcc-000ba23d0465bedacdce9c33274da8b498c2222c.tar.gz gcc-000ba23d0465bedacdce9c33274da8b498c2222c.tar.bz2 |
re PR middle-end/20109 (printf optimizations and non-ASCII character sets)
PR middle-end/20109
PR middle-end/25120
* builtins.c (init_target_chars): New.
(expand_builtin_printf, expand_builtin_fprintf,
expand_builtin_sprintf, fold_builtin_sprintf,
maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
fold_builtin_snprintf_chk, fold_builtin_printf,
fold_builtin_fprintf): Check for matching format strings using
the target charset.
testsuite:
* gcc.dg/charset/builtin2.c: New test.
From-SVN: r107652
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/charset/builtin2.c | 32 |
2 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5a6f240..fc737a8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-11-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * gcc.dg/charset/builtin2.c: New test. + 2005-11-28 Jakub Jelinek <jakub@redhat.com> * gcc.dg/compat/struct-layout-1_generate.c: Add -w option diff --git a/gcc/testsuite/gcc.dg/charset/builtin2.c b/gcc/testsuite/gcc.dg/charset/builtin2.c new file mode 100644 index 0000000..bfe9a20 --- /dev/null +++ b/gcc/testsuite/gcc.dg/charset/builtin2.c @@ -0,0 +1,32 @@ +/* Ensure that transformations of *printf are performed correctly + regardless of -fexec-charset. See PR 25120. */ + +/* { dg-do compile } */ +/* { dg-require-iconv "IBM1047" } */ +/* { dg-options "-O2 -fexec-charset=IBM1047" } */ +/* { dg-final { scan-assembler-not "printf" } } */ +/* { dg-final { scan-assembler-not "fprintf" } } */ +/* { dg-final { scan-assembler-not "sprintf" } } */ + +#include <stdio.h> + +void foo (char *dst, const char *src) +{ + printf ("\n"); + printf ("hello world\n"); + printf ("%s", "\n"); + printf ("%s", "hello world\n"); + printf ("%c", '\n'); + printf ("%s\n", "hello world"); + printf ("%s\n", src); + + fprintf (stdout, "\n"); + fprintf (stdout, "hello world\n"); + fprintf (stdout, "%s", "\n"); + fprintf (stdout, "%s", "hello world\n"); + fprintf (stdout, "%c", '\n'); + fprintf (stdout, "%s", src); + + sprintf (dst, "hello world\n"); + sprintf (dst, "%s", src); +} |