mirror of git://gcc.gnu.org/git/gcc.git
PR c++/54526 (again)
/libcpp 2013-01-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/54526 (again) * lex.c (_cpp_lex_direct): In C++11 mode, implement 2.5 p3, bullet 2. /gcc/cp 2013-01-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/54526 (again) * parser.c (cp_parser_template_id): Revert core of previous change (keep adjusted inform message). /gcc/testsuite 2013-01-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/54526 (again) * g++.dg/cpp0x/parse2.C: Extend. * g++.old-deja/g++.other/crash28.C: Adjust. From-SVN: r194909
This commit is contained in:
parent
361618ec53
commit
1582c67762
|
|
@ -1,3 +1,9 @@
|
||||||
|
2013-01-04 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
PR c++/54526 (again)
|
||||||
|
* parser.c (cp_parser_template_id): Revert core of previous change
|
||||||
|
(keep adjusted inform message).
|
||||||
|
|
||||||
2013-01-03 Jason Merrill <jason@redhat.com>
|
2013-01-03 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/55419
|
PR c++/55419
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
/* C++ Parser.
|
/* C++ Parser.
|
||||||
Copyright (C) 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
2005, 2007-2013 Free Software Foundation, Inc.
|
||||||
Written by Mark Mitchell <mark@codesourcery.com>.
|
Written by Mark Mitchell <mark@codesourcery.com>.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
|
@ -12655,11 +12655,9 @@ cp_parser_template_id (cp_parser *parser,
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
/* Otherwise, emit an error about the invalid digraph, but continue
|
/* Otherwise, emit an error about the invalid digraph, but continue
|
||||||
parsing because we got our argument list. In C++11 do not emit
|
parsing because we got our argument list. */
|
||||||
any error, per 2.5/3. */
|
if (permerror (next_token->location,
|
||||||
if (cxx_dialect < cxx0x
|
"%<<::%> cannot begin a template-argument list"))
|
||||||
&& permerror (next_token->location,
|
|
||||||
"%<<::%> cannot begin a template-argument list"))
|
|
||||||
{
|
{
|
||||||
static bool hint = false;
|
static bool hint = false;
|
||||||
inform (next_token->location,
|
inform (next_token->location,
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,9 @@
|
||||||
|
2013-01-04 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
PR c++/54526 (again)
|
||||||
|
* g++.dg/cpp0x/parse2.C: Extend.
|
||||||
|
* g++.old-deja/g++.other/crash28.C: Adjust.
|
||||||
|
|
||||||
2013-01-04 Richard Biener <rguenther@suse.de>
|
2013-01-04 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/55862
|
PR tree-optimization/55862
|
||||||
|
|
|
||||||
|
|
@ -10,3 +10,6 @@ int main()
|
||||||
{
|
{
|
||||||
X<::A> x;
|
X<::A> x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int a;
|
||||||
|
bool b = 0<::a;
|
||||||
|
|
|
||||||
|
|
@ -31,5 +31,5 @@ public:
|
||||||
};
|
};
|
||||||
void foo::x() throw(bar)
|
void foo::x() throw(bar)
|
||||||
{
|
{
|
||||||
if (!b) throw bar (static_cast<::N::X*>(this)); // { dg-error "lambda expressions|expected" } parse error
|
if (!b) throw bar (static_cast<::N::X*>(this)); // { dg-error "lambda expressions|expected|invalid" } parse error
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2013-01-04 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
PR c++/54526 (again)
|
||||||
|
* lex.c (_cpp_lex_direct): In C++11 mode, implement 2.5 p3, bullet 2.
|
||||||
|
|
||||||
2013-01-03 Marc Glisse <marc.glisse@inria.fr>
|
2013-01-03 Marc Glisse <marc.glisse@inria.fr>
|
||||||
|
|
||||||
PR bootstrap/50177
|
PR bootstrap/50177
|
||||||
|
|
|
||||||
15
libcpp/lex.c
15
libcpp/lex.c
|
|
@ -1,6 +1,6 @@
|
||||||
/* CPP Library - lexical analysis.
|
/* CPP Library - lexical analysis.
|
||||||
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010,
|
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007-2013
|
||||||
2011, 2012 Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Contributed by Per Bothner, 1994-95.
|
Contributed by Per Bothner, 1994-95.
|
||||||
Based on CCCP program by Paul Rubin, June 1986
|
Based on CCCP program by Paul Rubin, June 1986
|
||||||
Adapted to ANSI C, Richard Stallman, Jan 1987
|
Adapted to ANSI C, Richard Stallman, Jan 1987
|
||||||
|
|
@ -2290,6 +2290,17 @@ _cpp_lex_direct (cpp_reader *pfile)
|
||||||
{
|
{
|
||||||
if (*buffer->cur == ':')
|
if (*buffer->cur == ':')
|
||||||
{
|
{
|
||||||
|
/* C++11 [2.5/3 lex.pptoken], "Otherwise, if the next
|
||||||
|
three characters are <:: and the subsequent character
|
||||||
|
is neither : nor >, the < is treated as a preprocessor
|
||||||
|
token by itself". */
|
||||||
|
if (CPP_OPTION (pfile, cplusplus)
|
||||||
|
&& (CPP_OPTION (pfile, lang) == CLK_CXX11
|
||||||
|
|| CPP_OPTION (pfile, lang) == CLK_GNUCXX11)
|
||||||
|
&& buffer->cur[1] == ':'
|
||||||
|
&& buffer->cur[2] != ':' && buffer->cur[2] != '>')
|
||||||
|
break;
|
||||||
|
|
||||||
buffer->cur++;
|
buffer->cur++;
|
||||||
result->flags |= DIGRAPH;
|
result->flags |= DIGRAPH;
|
||||||
result->type = CPP_OPEN_SQUARE;
|
result->type = CPP_OPEN_SQUARE;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue