aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoseph Myers <jsm28@cam.ac.uk>2000-09-24 10:52:53 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2000-09-24 10:52:53 +0100
commitc5412f0646a072dde262a8643ee2494fd55884eb (patch)
treef7852db366acf162e789914802615e9d69b86606 /gcc
parent1c44c45dbf3b62c14bcd2916365ce090d3af531a (diff)
downloadgcc-c5412f0646a072dde262a8643ee2494fd55884eb.zip
gcc-c5412f0646a072dde262a8643ee2494fd55884eb.tar.gz
gcc-c5412f0646a072dde262a8643ee2494fd55884eb.tar.bz2
c-common.c (check_format_info): Warn for a wide character string used as a non-wide format argument.
* c-common.c (check_format_info): Warn for a wide character string used as a non-wide format argument. testsuite: * gcc.dg/c90-printf-1.c: Add test for wide string format. From-SVN: r36586
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c-common.c5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/c90-printf-1.c1
4 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9fb5b7a..55bdbc6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2000-09-24 Joseph S. Myers <jsm28@cam.ac.uk>
+ * c-common.c (check_format_info): Warn for a wide character string
+ used as a non-wide format argument.
+
+2000-09-24 Joseph S. Myers <jsm28@cam.ac.uk>
+
* builtins.def (BUILT_IN_LLABS): Add.
* builtins.c (expand_builtin): Also abort on BUILT_IN_LLABS.
* c-common.c (c_common_nodes_builtins): Create builtin functions
diff --git a/gcc/c-common.c b/gcc/c-common.c
index d72c45b..79fef42 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -2040,6 +2040,11 @@ check_format_info (status, info, params)
status_warning (status, "format not a string literal, argument types not checked");
return;
}
+ if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (format_tree))) != char_type_node)
+ {
+ status_warning (status, "format is a wide character string");
+ return;
+ }
format_chars = TREE_STRING_POINTER (format_tree);
format_length = TREE_STRING_LENGTH (format_tree);
if (format_length <= 1)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1de5ac8..46ab73b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2000-09-24 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * gcc.dg/c90-printf-1.c: Add test for wide string format.
+
2000-09-22 Geoff Keating <geoffk@cygnus.com>
* gcc.c-torture/compile/20000922-1.c: New file.
diff --git a/gcc/testsuite/gcc.dg/c90-printf-1.c b/gcc/testsuite/gcc.dg/c90-printf-1.c
index ad8adb0..4c5a6e3 100644
--- a/gcc/testsuite/gcc.dg/c90-printf-1.c
+++ b/gcc/testsuite/gcc.dg/c90-printf-1.c
@@ -243,5 +243,6 @@ foo (int i, int i1, int i2, unsigned int u, double d, char *s, void *p,
printf ("%"); /* { dg-warning "trailing" "trailing % warning" } */
printf ("%++d", i); /* { dg-warning "repeated" "repeated flag warning" } */
printf ("%n", cn); /* { dg-warning "constant" "%n with const" } */
+ printf ((const char *)L"foo"); /* { dg-warning "wide" "wide string" } */
/* Can we test for the warning for unterminated string formats? */
}