From 1638c736c1a99cc0a108d3f3e54f84510911206b Mon Sep 17 00:00:00 2001 From: paolo Date: Wed, 24 Apr 2013 19:33:54 +0000 Subject: /libcpp 2013-04-24 Paolo Carlini * 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 * c-opts.c (set_std_cxx11): Use CLK_CXX1Y and CLK_GNUCXX1Y. /gcc/testsuite 2013-04-24 Paolo Carlini * g++.dg/cpp1y/cplusplus.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198261 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/c-family/ChangeLog | 4 ++++ gcc/c-family/c-opts.c | 2 +- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.dg/cpp1y/cplusplus.C | 5 +++++ libcpp/ChangeLog | 9 ++++++++- libcpp/include/cpplib.h | 3 ++- libcpp/init.c | 17 +++++++++++------ libcpp/lex.c | 4 ++-- 8 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp1y/cplusplus.C diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index b246b2be45d..39390db6bbf 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,7 @@ +2013-04-24 Paolo Carlini + + * c-opts.c (set_std_cxx11): Use CLK_CXX1Y and CLK_GNUCXX1Y. + 2013-04-24 Paolo Carlini * c-cppbuiltin.c (c_cpp_builtins): Do not define diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c index 4b6990a60c1..ea5a605891c 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c @@ -1471,7 +1471,7 @@ set_std_cxx11 (int iso) static void 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_nonansi_builtin = iso; flag_iso = iso; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b199baaa171..e3b4a56f73a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-04-24 Paolo Carlini + + * g++.dg/cpp1y/cplusplus.C: New. + 2013-04-24 Paolo Carlini * g++.dg/cpp1y/cxx1y_macro.C: Remove. diff --git a/gcc/testsuite/g++.dg/cpp1y/cplusplus.C b/gcc/testsuite/g++.dg/cpp1y/cplusplus.C new file mode 100644 index 00000000000..0b695932df6 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/cplusplus.C @@ -0,0 +1,5 @@ +// { dg-options "-std=c++1y" } + +#if __cplusplus <= 201103L +#error +#endif diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 8ec815dcd35..329f5e0b938 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,10 @@ +2013-04-24 Paolo Carlini + + * 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 PR target/56771 @@ -46,7 +53,7 @@ 2013-02-13 Ed Smith-Rowland <3dw4rd@verizon.net> 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. 2013-01-14 Richard Sandiford diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index a48ac877e03..3084a11a853 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -165,7 +165,8 @@ enum cpp_ttype /* C language kind, used when calling cpp_create_reader. */ enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11, 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. */ struct GTY(()) cpp_string { diff --git a/libcpp/init.c b/libcpp/init.c index 3037ecd9ba6..c3fa4af178b 100644 --- a/libcpp/init.c +++ b/libcpp/init.c @@ -98,11 +98,13 @@ static const struct lang_flags lang_defaults[] = /* CXX98 */ { 0, 1, 1, 0, 1, 1, 1, 0, 0, 0 }, /* GNUCXX11 */ { 1, 1, 1, 0, 0, 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 } - /* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX11, and - CXX11 when no longer experimental (when all uses of identifiers - in the compiler have been audited for correct handling of - extended identifiers). */ + /* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX11, CXX11, + GNUCXX1Y, and CXX1Y when no longer experimental (when all uses of + identifiers in the compiler have been audited for correct handling + of extended identifiers). */ }; /* Sets internal flags correctly for a given language. */ @@ -476,8 +478,11 @@ cpp_init_builtins (cpp_reader *pfile, int hosted) if (CPP_OPTION (pfile, cplusplus)) { - if (CPP_OPTION (pfile, lang) == CLK_CXX11 - || CPP_OPTION (pfile, lang) == CLK_GNUCXX11) + if (CPP_OPTION (pfile, lang) == CLK_CXX1Y + || 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"); else _cpp_define_builtin (pfile, "__cplusplus 199711L"); diff --git a/libcpp/lex.c b/libcpp/lex.c index 570c00733cb..3e59d40d32e 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -2298,8 +2298,8 @@ _cpp_lex_direct (cpp_reader *pfile) 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) + && CPP_OPTION (pfile, lang) != CLK_CXX98 + && CPP_OPTION (pfile, lang) != CLK_GNUCXX && buffer->cur[1] == ':' && buffer->cur[2] != ':' && buffer->cur[2] != '>') break; -- cgit v1.2.1