diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-04-24 19:33:54 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-04-24 19:33:54 +0000 |
commit | 1638c736c1a99cc0a108d3f3e54f84510911206b (patch) | |
tree | 91930b32804dd6992b551ef2b873cca0c78f0181 /libcpp | |
parent | af08cacd3b5632a06ce31e3a65e1c94d2fbfa256 (diff) | |
download | gcc-1638c736c1a99cc0a108d3f3e54f84510911206b.tar.gz |
/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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198261 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/ChangeLog | 9 | ||||
-rw-r--r-- | libcpp/include/cpplib.h | 3 | ||||
-rw-r--r-- | libcpp/init.c | 17 | ||||
-rw-r--r-- | libcpp/lex.c | 4 |
4 files changed, 23 insertions, 10 deletions
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 <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> 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 <rdsandiford@googlemail.com> 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; |