cpplib.h (enum c_lang): Add CLK_GNUCXX1Y and CLK_CXX1Y.
authorPaolo Carlini <paolo@gcc.gnu.org>
Wed, 24 Apr 2013 19:33:54 +0000 (19:33 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 24 Apr 2013 19:33:54 +0000 (19:33 +0000)
/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

gcc/c-family/ChangeLog
gcc/c-family/c-opts.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp1y/cplusplus.C [new file with mode: 0644]
libcpp/ChangeLog
libcpp/include/cpplib.h
libcpp/init.c
libcpp/lex.c

index b246b2be45d817b35151a99e19588b4ad201bd3c..39390db6bbfa4d4dc7cca8d95525b4018a706c3d 100644 (file)
@@ -1,3 +1,7 @@
+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
index 4b6990a60c19b727c7b377423d81a0cae2b2cdbd..ea5a605891c2ccfbd57a80360aac3965d972769e 100644 (file)
@@ -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;
index b199baaa17198ec3598daf9e3a2f036c61c965c6..e3b4a56f73afefbe566c027010e168be7b1fdf59 100644 (file)
@@ -1,3 +1,7 @@
+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.
diff --git a/gcc/testsuite/g++.dg/cpp1y/cplusplus.C b/gcc/testsuite/g++.dg/cpp1y/cplusplus.C
new file mode 100644 (file)
index 0000000..0b69593
--- /dev/null
@@ -0,0 +1,5 @@
+// { dg-options "-std=c++1y" }
+
+#if __cplusplus <= 201103L
+#error
+#endif
index 8ec815dcd355c4d4a8010aba6b149f8e14883126..329f5e0b9384cae5c7a9002295987af1340289fd 100644 (file)
@@ -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>
index a48ac877e0326faee3f14bdfe02a83b9f724293c..3084a11a8538dfcf3afbe58e5a1b044663f558b9 100644 (file)
@@ -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 {
index 3037ecd9ba6254d82006be4427a33c7f24130464..c3fa4af178beba492fc963ea8f38e1980cb660d8 100644 (file)
@@ -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");
index 570c00733cb10b696edfbb7bcddde51db5d956f9..3e59d40d32e3f1a4a1192276dec5f0b358651b17 100644 (file)
@@ -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;