Commit 4a792f9b by Paolo Carlini Committed by Paolo Carlini

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
parent b4922105
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
......
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
......
...@@ -370,7 +370,6 @@ c_common_handle_option (size_t scode, const char *arg, int value, ...@@ -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, ...@@ -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
{ {
......
...@@ -3090,7 +3090,7 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}. ...@@ -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}. ...@@ -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 @};
......
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
......
// 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 };
// 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" }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment