From 7fb3df5ef09e0da3963aa888584f6f7524e13b07 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Thu, 26 Jun 2014 14:15:42 -0400 Subject: [PATCH] parser.c (cp_parser_for_init_statement): Change range-for error to pedwarn. * parser.c (cp_parser_for_init_statement): Change range-for error to pedwarn. From-SVN: r212044 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/parser.c | 6 +++--- gcc/testsuite/g++.dg/cpp0x/range-for9.C | 3 +-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 669e7144f686..6fbd27afd501 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2014-06-26 Jason Merrill + * parser.c (cp_parser_for_init_statement): Change range-for error + to pedwarn. + N3994 Ranged-based for-loops: The Next Generation * parser.c (cp_lexer_nth_token_is): New. (cp_parser_for_init_statement): Allow "for (id : init)". diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 426dca439de4..a7edd4181ae1 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -10647,9 +10647,9 @@ cp_parser_for_init_statement (cp_parser* parser, tree *decl) is_range_for = true; if (cxx_dialect < cxx11) { - error_at (cp_lexer_peek_token (parser->lexer)->location, - "range-based % loops are not allowed " - "in C++98 mode"); + pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0, + "range-based % loops only available with " + "-std=c++11 or -std=gnu++11"); *decl = error_mark_node; } } diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for9.C b/gcc/testsuite/g++.dg/cpp0x/range-for9.C index c51cbf994698..6a50ec36c141 100644 --- a/gcc/testsuite/g++.dg/cpp0x/range-for9.C +++ b/gcc/testsuite/g++.dg/cpp0x/range-for9.C @@ -1,7 +1,6 @@ // Test for range-based for loop error in C++98 mode -// { dg-do compile } -// { dg-options "-std=c++98" } +// { dg-do compile { target { ! c++11 } } } void test() { -- 2.47.2