Commit 61949153 by Paolo Carlini

cpplib.h (enum c_lang): Add CLK_GNUCXX1Y and CLK_CXX1Y.

/libcpp
2013-04-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/cpplib.h (enum c_lang): Add CLK_GNUCXX1Y and CLK_CXX1Y.
	* init.c (lang_defaults): Add defaults for the latter.
	(cpp_init_builtins): Define __cplusplus as 201300L for the latter.
	* lex.c (_cpp_lex_direct): Update.

/gcc/c-family
2013-04-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* c-opts.c (set_std_cxx11): Use CLK_CXX1Y and CLK_GNUCXX1Y.

/gcc/testsuite
2013-04-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/cpp1y/cplusplus.C: New.

From-SVN: r198261
parent 5576178b
2013-04-24 Paolo Carlini <paolo.carlini@oracle.com> 2013-04-24 Paolo Carlini <paolo.carlini@oracle.com>
* c-opts.c (set_std_cxx11): Use CLK_CXX1Y and CLK_GNUCXX1Y.
2013-04-24 Paolo Carlini <paolo.carlini@oracle.com>
* c-cppbuiltin.c (c_cpp_builtins): Do not define * c-cppbuiltin.c (c_cpp_builtins): Do not define
__GXX_EXPERIMENTAL_CXX1Y__. __GXX_EXPERIMENTAL_CXX1Y__.
......
...@@ -1471,7 +1471,7 @@ set_std_cxx11 (int iso) ...@@ -1471,7 +1471,7 @@ set_std_cxx11 (int iso)
static void static void
set_std_cxx1y (int iso) set_std_cxx1y (int iso)
{ {
cpp_set_lang (parse_in, iso ? CLK_CXX11: CLK_GNUCXX11); cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
flag_no_gnu_keywords = iso; flag_no_gnu_keywords = iso;
flag_no_nonansi_builtin = iso; flag_no_nonansi_builtin = iso;
flag_iso = iso; flag_iso = iso;
......
2013-04-24 Paolo Carlini <paolo.carlini@oracle.com> 2013-04-24 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/cpp1y/cplusplus.C: New.
2013-04-24 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/cpp1y/cxx1y_macro.C: Remove. * g++.dg/cpp1y/cxx1y_macro.C: Remove.
2013-04-24 Paolo Carlini <paolo.carlini@oracle.com> 2013-04-24 Paolo Carlini <paolo.carlini@oracle.com>
......
// { dg-options "-std=c++1y" }
#if __cplusplus <= 201103L
#error
#endif
2013-04-24 Paolo Carlini <paolo.carlini@oracle.com>
* include/cpplib.h (enum c_lang): Add CLK_GNUCXX1Y and CLK_CXX1Y.
* init.c (lang_defaults): Add defaults for the latter.
(cpp_init_builtins): Define __cplusplus as 201300L for the latter.
* lex.c (_cpp_lex_direct): Update.
2013-04-03 Sebastian Huber <sebastian.huber@embedded-brains.de> 2013-04-03 Sebastian Huber <sebastian.huber@embedded-brains.de>
PR target/56771 PR target/56771
...@@ -46,7 +53,7 @@ ...@@ -46,7 +53,7 @@
2013-02-13 Ed Smith-Rowland <3dw4rd@verizon.net> 2013-02-13 Ed Smith-Rowland <3dw4rd@verizon.net>
PR c++/55582 PR c++/55582
* libcpp/lex.c (lex_raw_string): Allow string literal with suffix * lex.c (lex_raw_string): Allow string literal with suffix
beginning with 's' to be parsed as a C++11 user-defined literal. beginning with 's' to be parsed as a C++11 user-defined literal.
2013-01-14 Richard Sandiford <rdsandiford@googlemail.com> 2013-01-14 Richard Sandiford <rdsandiford@googlemail.com>
......
...@@ -165,7 +165,8 @@ enum cpp_ttype ...@@ -165,7 +165,8 @@ enum cpp_ttype
/* C language kind, used when calling cpp_create_reader. */ /* C language kind, used when calling cpp_create_reader. */
enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11, enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11,
CLK_STDC89, CLK_STDC94, CLK_STDC99, CLK_STDC11, CLK_STDC89, CLK_STDC94, CLK_STDC99, CLK_STDC11,
CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX11, CLK_CXX11, CLK_ASM}; CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX11, CLK_CXX11,
CLK_GNUCXX1Y, CLK_CXX1Y, CLK_ASM};
/* Payload of a NUMBER, STRING, CHAR or COMMENT token. */ /* Payload of a NUMBER, STRING, CHAR or COMMENT token. */
struct GTY(()) cpp_string { struct GTY(()) cpp_string {
......
...@@ -98,11 +98,13 @@ static const struct lang_flags lang_defaults[] = ...@@ -98,11 +98,13 @@ static const struct lang_flags lang_defaults[] =
/* CXX98 */ { 0, 1, 1, 0, 1, 1, 1, 0, 0, 0 }, /* CXX98 */ { 0, 1, 1, 0, 1, 1, 1, 0, 0, 0 },
/* GNUCXX11 */ { 1, 1, 1, 0, 0, 1, 1, 1, 1, 1 }, /* GNUCXX11 */ { 1, 1, 1, 0, 0, 1, 1, 1, 1, 1 },
/* CXX11 */ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1 }, /* CXX11 */ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1 },
/* GNUCXX1Y */ { 1, 1, 1, 0, 0, 1, 1, 1, 1, 1 },
/* CXX1Y */ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1 },
/* ASM */ { 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 } /* ASM */ { 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 }
/* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX11, and /* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX11, CXX11,
CXX11 when no longer experimental (when all uses of identifiers GNUCXX1Y, and CXX1Y when no longer experimental (when all uses of
in the compiler have been audited for correct handling of identifiers in the compiler have been audited for correct handling
extended identifiers). */ of extended identifiers). */
}; };
/* Sets internal flags correctly for a given language. */ /* Sets internal flags correctly for a given language. */
...@@ -476,8 +478,11 @@ cpp_init_builtins (cpp_reader *pfile, int hosted) ...@@ -476,8 +478,11 @@ cpp_init_builtins (cpp_reader *pfile, int hosted)
if (CPP_OPTION (pfile, cplusplus)) if (CPP_OPTION (pfile, cplusplus))
{ {
if (CPP_OPTION (pfile, lang) == CLK_CXX11 if (CPP_OPTION (pfile, lang) == CLK_CXX1Y
|| CPP_OPTION (pfile, lang) == CLK_GNUCXX11) || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Y)
_cpp_define_builtin (pfile, "__cplusplus 201300L");
else if (CPP_OPTION (pfile, lang) == CLK_CXX11
|| CPP_OPTION (pfile, lang) == CLK_GNUCXX11)
_cpp_define_builtin (pfile, "__cplusplus 201103L"); _cpp_define_builtin (pfile, "__cplusplus 201103L");
else else
_cpp_define_builtin (pfile, "__cplusplus 199711L"); _cpp_define_builtin (pfile, "__cplusplus 199711L");
......
...@@ -2298,8 +2298,8 @@ _cpp_lex_direct (cpp_reader *pfile) ...@@ -2298,8 +2298,8 @@ _cpp_lex_direct (cpp_reader *pfile)
is neither : nor >, the < is treated as a preprocessor is neither : nor >, the < is treated as a preprocessor
token by itself". */ token by itself". */
if (CPP_OPTION (pfile, cplusplus) if (CPP_OPTION (pfile, cplusplus)
&& (CPP_OPTION (pfile, lang) == CLK_CXX11 && CPP_OPTION (pfile, lang) != CLK_CXX98
|| CPP_OPTION (pfile, lang) == CLK_GNUCXX11) && CPP_OPTION (pfile, lang) != CLK_GNUCXX
&& buffer->cur[1] == ':' && buffer->cur[1] == ':'
&& buffer->cur[2] != ':' && buffer->cur[2] != '>') && buffer->cur[2] != ':' && buffer->cur[2] != '>')
break; break;
......
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