[Bug c++/2972] -Wuninitialized could warn about uninitialized member variable usage in constructors
redi at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Jun 3 01:14:00 GMT 2010
------- Comment #9 from redi at gcc dot gnu dot org 2010-06-03 01:13 -------
I've been experimenting with this patch, which warns if there is a missing
mem-initializer for a scalar.
It gives a false positive for cases were the member is assigned to in the
constructor body, or otherwise initialized before use, but it's a start, and
has already helped me find some missing mem-initializers in real code.
--- c.opt.orig 2010-06-02 13:47:02.120129255 +0000
+++ c.opt 2010-06-02 13:07:51.944440072 +0000
@@ -304,6 +304,10 @@
C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning
Warn about suspicious declarations of \"main\"
+Wmeminit
+C++ Var(warn_meminit) Init(-1) Warning
+Warn about POD members which are not initialized in a constructor
initialization list
+
Wmissing-braces
C ObjC C++ ObjC++ Var(warn_missing_braces) Warning
Warn about possibly missing braces around initializers
--- c-opts.c.orig 2010-06-02 13:46:49.774040694 +0000
+++ c-opts.c 2010-06-02 13:11:57.829233564 +0000
@@ -492,6 +492,10 @@
cpp_opts->warn_invalid_pch = value;
break;
+ case OPT_Wmeminit:
+ warn_meminit = value;
+ break;
+
case OPT_Wmissing_include_dirs:
cpp_opts->warn_missing_include_dirs = value;
break;
--- cp/init.c.orig 2010-06-02 13:46:31.125713124 +0000
+++ cp/init.c 2010-06-02 13:21:01.473640135 +0000
@@ -424,6 +424,12 @@
tree decl;
tree type = TREE_TYPE (member);
+ /* warn if there is no initializer for a POD member */
+ if (warn_meminit && init == NULL_TREE && layout_pod_type_p
(strip_array_types (type)))
+ warning_at (DECL_SOURCE_LOCATION (current_function_decl), OPT_Wmeminit,
+ "%qD is not initialized in the member initialization list",
+ member);
+
/* Effective C++ rule 12 requires that all data members be
initialized. */
if (warn_ecpp && init == NULL_TREE && TREE_CODE (type) != ARRAY_TYPE)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=2972
More information about the Gcc-bugs
mailing list