[RFA] statement before variable declaration in cp_parser_initializer_list.

Submitted by Joel Brobecker on Jan. 3, 2013, 12:30 p.m.

Details

Message ID 1357216224-513-1-git-send-email-brobecker@adacore.com
State New
Headers show

Commit Message

Joel Brobecker Jan. 3, 2013, 12:30 p.m.
Hello,

I happened to notice a warning while compiling GCC, and it seemed
like an easy fix...

gcc/cp/ChangeLog:

        * parser.c (cp_parser_initializer_list): Move declaration
        of variable non_const to start of lexical block.

Tested against x86_64-linux, no regression.
OK to commit? (obvious?)

Thanks,

Comments

Richard Guenther Jan. 3, 2013, 12:32 p.m.
On Thu, Jan 3, 2013 at 1:30 PM, Joel Brobecker <brobecker@adacore.com> wrote:
> Hello,
>
> I happened to notice a warning while compiling GCC, and it seemed
> like an easy fix...
>
> gcc/cp/ChangeLog:
>
>         * parser.c (cp_parser_initializer_list): Move declaration
>         of variable non_const to start of lexical block.
>
> Tested against x86_64-linux, no regression.
> OK to commit? (obvious?)

Hmm?  We compile with a C++ compiler where this is perfectly valid ...

Richard.

> Thanks,
> --
> Joel
>
> ---
>  gcc/cp/parser.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
> index 3dc2ec6..61d93f8 100644
> --- a/gcc/cp/parser.c
> +++ b/gcc/cp/parser.c
> @@ -17932,9 +17932,10 @@ cp_parser_initializer_list (cp_parser* parser, bool* non_constant_p)
>                && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE))
>         {
>           /* In C++11, [ could start a lambda-introducer.  */
> +         bool non_const = false;
> +
>           cp_parser_parse_tentatively (parser);
>           cp_lexer_consume_token (parser->lexer);
> -         bool non_const = false;
>           designator = cp_parser_constant_expression (parser, true, &non_const);
>           cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE);
>           cp_parser_require (parser, CPP_EQ, RT_EQ);
> --
> 1.7.0.4
>
Joel Brobecker Jan. 3, 2013, 12:37 p.m.
> > Tested against x86_64-linux, no regression.
> > OK to commit? (obvious?)
> 
> Hmm?  We compile with a C++ compiler where this is perfectly valid ...

I was compiling with GCC 4.7 where it gave me a warning... I don't know
much about C++ anymore, so I didn't know. Oh well!
Eric Botcazou Jan. 3, 2013, 12:55 p.m.
> Hmm?  We compile with a C++ compiler where this is perfectly valid ...

Not on earlier branches though, e.g. the 4.7 branch.  So I would install it 
everywhere to avoid gratuitous differences.
Richard Guenther Jan. 3, 2013, 12:57 p.m.
On Thu, Jan 3, 2013 at 1:37 PM, Joel Brobecker <brobecker@adacore.com> wrote:
>> > Tested against x86_64-linux, no regression.
>> > OK to commit? (obvious?)
>>
>> Hmm?  We compile with a C++ compiler where this is perfectly valid ...
>
> I was compiling with GCC 4.7 where it gave me a warning... I don't know
> much about C++ anymore, so I didn't know. Oh well!

Ah, for the 4.7 branch yes.

Thanks,
Richard.

> --
> Joel
Joel Brobecker Jan. 8, 2013, 11:37 a.m.
Hi Richard,

> >> Hmm?  We compile with a C++ compiler where this is perfectly valid ...
> >
> > I was compiling with GCC 4.7 where it gave me a warning... I don't know
> > much about C++ anymore, so I didn't know. Oh well!
> 
> Ah, for the 4.7 branch yes.

Eric Botcazou asked that we have the same code for both 4.7 and HEAD.
Would it be OK to apply it to both? It's not really strictly
necessary for the HEAD, but I don't see it as being harmful either.

Thank you!
Richard Guenther Jan. 8, 2013, 11:51 a.m.
On Tue, Jan 8, 2013 at 12:37 PM, Joel Brobecker <brobecker@adacore.com> wrote:
> Hi Richard,
>
>> >> Hmm?  We compile with a C++ compiler where this is perfectly valid ...
>> >
>> > I was compiling with GCC 4.7 where it gave me a warning... I don't know
>> > much about C++ anymore, so I didn't know. Oh well!
>>
>> Ah, for the 4.7 branch yes.
>
> Eric Botcazou asked that we have the same code for both 4.7 and HEAD.
> Would it be OK to apply it to both? It's not really strictly
> necessary for the HEAD, but I don't see it as being harmful either.

Sure.

Richard.

> Thank you!
> --
> Joel
Joel Brobecker Jan. 8, 2013, 12:36 p.m.
> > Eric Botcazou asked that we have the same code for both 4.7 and HEAD.
> > Would it be OK to apply it to both? It's not really strictly
> > necessary for the HEAD, but I don't see it as being harmful either.
> 
> Sure.

Thank you! Now checked in.

Patch hide | download patch | download mbox

diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 3dc2ec6..61d93f8 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -17932,9 +17932,10 @@  cp_parser_initializer_list (cp_parser* parser, bool* non_constant_p)
 	       && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE))
 	{
 	  /* In C++11, [ could start a lambda-introducer.  */
+	  bool non_const = false;
+
 	  cp_parser_parse_tentatively (parser);
 	  cp_lexer_consume_token (parser->lexer);
-	  bool non_const = false;
 	  designator = cp_parser_constant_expression (parser, true, &non_const);
 	  cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE);
 	  cp_parser_require (parser, CPP_EQ, RT_EQ);