summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/c-common.c5
-rw-r--r--gcc/c-common.h5
-rw-r--r--gcc/c-opts.c1
-rw-r--r--gcc/c.opt4
-rw-r--r--gcc/doc/invoke.texi3
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/warn/no-write-strings.C7
-rw-r--r--gcc/testsuite/g++.dg/warn/write-strings-default.C7
-rw-r--r--gcc/testsuite/g++.dg/warn/write-strings.C7
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.*" }
+}