re PR c++/25137 (Warning "missing braces around initializer" causing problems with tr1::array)

/c-family
2012-05-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/25137
	* c-opts.c (c_common_handle_option): For C++ -Wall doesn't enable
	-Wmissing_braces.

2012-05-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/25137
	* doc/invoke.texi: Document -Wmissing-braces not enabled by -Wall
	for C++.

/testsuite
2012-05-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/25137
	* g++.dg/warn/Wbraces3.C: New.
	* g++.dg/warn/Wbraces4.C: Likewise.

From-SVN: r187937
This commit is contained in:
Paolo Carlini 2012-05-28 17:42:29 +00:00 committed by Paolo Carlini
parent b492210558
commit 4a792f9b95
7 changed files with 91 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2012-05-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/25137
* doc/invoke.texi: Document -Wmissing-braces not enabled by -Wall
for C++.
2012-05-28 Hans-Peter Nilsson <hp@axis.com> 2012-05-28 Hans-Peter Nilsson <hp@axis.com>
* doc/md.texi (stack_protect_test): Remove negation of branch to * doc/md.texi (stack_protect_test): Remove negation of branch to

View File

@ -1,3 +1,9 @@
2012-05-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/25137
* c-opts.c (c_common_handle_option): For C++ -Wall doesn't enable
-Wmissing_braces.
2012-05-22 Dodji Seketeli <dodji@redhat.com> 2012-05-22 Dodji Seketeli <dodji@redhat.com>
PR c++/53322 PR c++/53322

View File

@ -370,7 +370,6 @@ c_common_handle_option (size_t scode, const char *arg, int value,
c_family_lang_mask, kind, loc, c_family_lang_mask, kind, loc,
handlers, global_dc); handlers, global_dc);
warn_char_subscripts = value; warn_char_subscripts = value;
warn_missing_braces = value;
warn_parentheses = value; warn_parentheses = value;
warn_return_type = value; warn_return_type = value;
warn_sequence_point = value; /* Was C only. */ warn_sequence_point = value; /* Was C only. */
@ -402,6 +401,8 @@ c_common_handle_option (size_t scode, const char *arg, int value,
done in c_common_post_options. */ done in c_common_post_options. */
if (warn_enum_compare == -1) if (warn_enum_compare == -1)
warn_enum_compare = value; warn_enum_compare = value;
warn_missing_braces = value;
} }
else else
{ {

View File

@ -3090,7 +3090,7 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
-Wformat @gol -Wformat @gol
-Wmain @r{(only for C/ObjC and unless} @option{-ffreestanding}@r{)} @gol -Wmain @r{(only for C/ObjC and unless} @option{-ffreestanding}@r{)} @gol
-Wmaybe-uninitialized @gol -Wmaybe-uninitialized @gol
-Wmissing-braces @gol -Wmissing-braces @r{(only for C/ObjC)} @gol
-Wnonnull @gol -Wnonnull @gol
-Wparentheses @gol -Wparentheses @gol
-Wpointer-sign @gol -Wpointer-sign @gol
@ -3401,7 +3401,8 @@ or @option{-Wpedantic}.
@opindex Wno-missing-braces @opindex Wno-missing-braces
Warn if an aggregate or union initializer is not fully bracketed. In Warn if an aggregate or union initializer is not fully bracketed. In
the following example, the initializer for @samp{a} is not fully the following example, the initializer for @samp{a} is not fully
bracketed, but that for @samp{b} is fully bracketed. bracketed, but that for @samp{b} is fully bracketed. This warning is
enabled by @option{-Wall} in C.
@smallexample @smallexample
int a[2][2] = @{ 0, 1, 2, 3 @}; int a[2][2] = @{ 0, 1, 2, 3 @};

View File

@ -1,3 +1,9 @@
2012-05-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/25137
* g++.dg/warn/Wbraces3.C: New.
* g++.dg/warn/Wbraces4.C: Likewise.
2012-05-28 Jakub Jelinek <jakub@redhat.com> 2012-05-28 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/53505 PR tree-optimization/53505

View File

@ -0,0 +1,34 @@
// PR c++/25137
// { dg-options "-Wall" }
struct S { int s[3]; };
S s1 = { 1, 1, 1 };
struct S1 { int s[3]; };
struct S2 { struct S1 a; };
S2 s21 = { 1, 1, 1 };
struct S3 { int s[3]; };
struct S4 { struct S3 a; int b; };
S4 s41 = { 1, 1, 1, 1 };
struct S5 { int s[3]; };
struct S6 { struct S5 a; int b; };
S6 s61 = { { 1, 1, 1 }, 1 };
struct S7 { int s[3]; };
struct S8 { int a; struct S7 b; };
S8 s81 = { 1, { 1, 1, 1 } };
struct S9 { int s[2]; };
struct S10 { struct S9 a; struct S9 b; };
S10 s101 = { { 1, 1 }, 1, 1 };
struct S11 { int s[2]; };
struct S12 { struct S11 a; struct S11 b; };
S12 s121 = { { 1, 1 }, { 1, 1 } };
struct S13 { int i; };
struct S14 { struct S13 a; };
struct S15 { struct S14 b; };
S15 s151 = { 1 };

View File

@ -0,0 +1,34 @@
// PR c++/25137
// { dg-options "-Wmissing-braces" }
struct S { int s[3]; };
S s1 = { 1, 1, 1 }; // { dg-warning "missing braces" }
struct S1 { int s[3]; };
struct S2 { struct S1 a; };
S2 s21 = { 1, 1, 1 }; // { dg-warning "missing braces" }
struct S3 { int s[3]; };
struct S4 { struct S3 a; int b; };
S4 s41 = { 1, 1, 1, 1 }; // { dg-warning "missing braces" }
struct S5 { int s[3]; };
struct S6 { struct S5 a; int b; };
S6 s61 = { { 1, 1, 1 }, 1 }; // { dg-warning "missing braces" }
struct S7 { int s[3]; };
struct S8 { int a; struct S7 b; };
S8 s81 = { 1, { 1, 1, 1 } }; // { dg-warning "missing braces" }
struct S9 { int s[2]; };
struct S10 { struct S9 a; struct S9 b; };
S10 s101 = { { 1, 1 }, 1, 1 }; // { dg-warning "missing braces" }
struct S11 { int s[2]; };
struct S12 { struct S11 a; struct S11 b; };
S12 s121 = { { 1, 1 }, { 1, 1 } }; // { dg-warning "missing braces" }
struct S13 { int i; };
struct S14 { struct S13 a; };
struct S15 { struct S14 b; };
S15 s151 = { 1 }; // { dg-warning "missing braces" }