diff options
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/c-common.c | 5 | ||||
-rw-r--r-- | gcc/c-common.h | 5 | ||||
-rw-r--r-- | gcc/c-opts.c | 1 | ||||
-rw-r--r-- | gcc/c.opt | 4 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/no-write-strings.C | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/write-strings-default.C | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/write-strings.C | 7 |
10 files changed, 43 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 18ea30d7b34..e5fa4c25b6d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2006-02-12 Gabriel Dos Reis <gdr@integrable-solutions.net> + + * doc/invoke.texi (-Write-strings): Document that it is enabled by + default. + * c.opt (-Wwrite-strings): Declare variable warn_write_strings. + Clarify documentation. + * c-common.h (warn_write_strings): Remove. + * c-common.c (warn_write_strings): Likewise. + * c-opts.c (c_common_init_options): Enable -Wwrite-strings by + default for C++. + 2006-02-12 Roger Sayle <roger@eyesopen.com> PR middle-end/25724 diff --git a/gcc/c-common.c b/gcc/c-common.c index 4c10bf4dd81..759a68ce44e 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -265,11 +265,6 @@ int flag_no_asm; int flag_signed_bitfields = 1; -/* Nonzero means warn about deprecated conversion from string constant to - `char *'. */ - -int warn_write_strings; - /* Warn about #pragma directives that are not recognized. */ int warn_unknown_pragmas; /* Tri state variable. */ diff --git a/gcc/c-common.h b/gcc/c-common.h index ba7dc5cf6e8..6498255aff8 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -406,11 +406,6 @@ extern int flag_const_strings; extern int flag_signed_bitfields; -/* Nonzero means warn about deprecated conversion from string constant to - `char *'. */ - -extern int warn_write_strings; - /* Warn about #pragma directives that are not recognized. */ extern int warn_unknown_pragmas; /* Tri state variable. */ diff --git a/gcc/c-opts.c b/gcc/c-opts.c index 90862f6b0bb..00a8631e544 100644 --- a/gcc/c-opts.c +++ b/gcc/c-opts.c @@ -227,6 +227,7 @@ c_common_init_options (unsigned int argc, const char **argv) flag_exceptions = c_dialect_cxx (); warn_pointer_arith = c_dialect_cxx (); + warn_write_strings = c_dialect_cxx(); deferred_opts = XNEWVEC (struct deferred_opt, argc); diff --git a/gcc/c.opt b/gcc/c.opt index 34739c63c06..8f58d3dca7e 100644 --- a/gcc/c.opt +++ b/gcc/c.opt @@ -420,8 +420,8 @@ C ObjC C++ ObjC++ Do not warn about using variadic macros when -pedantic Wwrite-strings -C ObjC C++ ObjC++ -Give strings the type \"array of char\" +C ObjC C++ ObjC++ Var(warn_write_strings) +In C++, nonzero means warn about deprecated conversion from string literals to `char *'. In C, similar warning, except that the conversion is of course not deprecated by the ISO C standard. Wpointer-sign C ObjC Var(warn_pointer_sign) Init(-1) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 1384562b985..6fb86e314e8 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -3065,7 +3065,8 @@ When compiling C, give string constants the type @code{const char[@var{length}]} so that copying the address of one into a non-@code{const} @code{char *} pointer will get a warning; when compiling C++, warn about the -deprecated conversion from string constants to @code{char *}. +deprecated conversion from string literals to @code{char *}. This +warning, by default, is enabled for C++ programs. These warnings will help you find at compile time code that can try to write into a string constant, but only if you have been very careful about using @code{const} in diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 845090db732..686a2234ede 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2006-02-12 Gabriel Dos Reis <gdr@integrable-solutions.net> + + * g++.dg/warn/no-write-strings.C: New test. + * g++.dg/warn/write-strings.C: Likewise. + * g++.dg/warn/write-strings-default.C: Likewise. + 2006-02-12 Erik Edelmann <eedelman@gcc.gnu.org> PR fortran/25806 diff --git a/gcc/testsuite/g++.dg/warn/no-write-strings.C b/gcc/testsuite/g++.dg/warn/no-write-strings.C new file mode 100644 index 00000000000..c5d48de37aa --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/no-write-strings.C @@ -0,0 +1,7 @@ +// { dg-do compile } +// { dg-options -Wno-write-strings } + +int main() +{ + char* p = "Asgaard"; +} diff --git a/gcc/testsuite/g++.dg/warn/write-strings-default.C b/gcc/testsuite/g++.dg/warn/write-strings-default.C new file mode 100644 index 00000000000..234c473801b --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/write-strings-default.C @@ -0,0 +1,7 @@ +// { dg-do compile } +// Test the default for -Wwrite-strings + +int main() +{ + char* p = "Asgaard"; // { dg-warning "warning:.*deprecated.*" } +} diff --git a/gcc/testsuite/g++.dg/warn/write-strings.C b/gcc/testsuite/g++.dg/warn/write-strings.C new file mode 100644 index 00000000000..38233e0e1d9 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/write-strings.C @@ -0,0 +1,7 @@ +// { dg-do compile } +// { dg-options -Wwrite-strings } + +int main() +{ + char* p = "Asgaard"; // { dg-warning "warning:.*deprecated.*" } +} |