public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH, C++, CPP] Add C++1z to the preprocessor.  Rename C++1y to C++14.
@ 2014-07-10  9:13 Ed Smith-Rowland
  2014-07-10 10:51 ` Mike Stump
  0 siblings, 1 reply; 9+ messages in thread
From: Ed Smith-Rowland @ 2014-07-10  9:13 UTC (permalink / raw)
  To: gcc-patches, Jason Merrill

[-- Attachment #1: Type: text/plain, Size: 431 bytes --]

Here are some C++ versioning changes reflecting C++14 status and adding 
c++1z. It is a followup to Jason's patch on 2014-06-26 adding std=c++1z, 
etc.

This will allow us to start making C++1z changes to the preprocessor 
(n3981 remove trigraphs).

In fact, I made trigraphs opt-in for both c++1z and gnu++1z.

I did not change c-family/c.opt to change wording on options and 
aliasing to document C++14.  Should we do that too?


[-- Attachment #2: CL --]
[-- Type: text/plain, Size: 1497 bytes --]


libcpp/

2014-07-10  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* include/cpplib.h (enum c_lang): Add CLK_GNUCXX1Z, CLK_CXX1Z;
	Rename CLK_GNUCXX1Y, CLK_CXX1Y to CLK_GNUCXX14, CLK_CXX14;
	* init.c (struct lang_flags lang_defaults): Add column for trigraphs;
	Add rows for CLK_GNUCXX1Z, CLK_CXX1Z; (cpp_set_lang): Set trigraphs;
	(cpp_init_builtins): Set __cplusplus to 201402L for C++14;
	Set __cplusplus to 201500L for C++17.


gcc/c-family/

2014-07-10  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* c-common.h (enum cxx_dialect): Add cxx14.
	* c-opts.c (set_std_cxx1y): Rename to set_std_cxx14; Use cxx14.
	* c-ubsan.c (ubsan_instrument_shift): Change comment and logic from
	cxx_dialect == cxx11 || cxx_dialect == cxx1y to cxx_dialect >= cxx11.


gcc/cp/

2014-07-10  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* decl.c (compute_array_index_type, grokdeclarator,
	undeduced_auto_decl): Change from cxx1y to cxx14.
	* parser.c (cp_parser_unqualified_id, cp_parser_pseudo_destructor_name,
	cp_parser_lambda_introducer, cp_parser_lambda_declarator_opt,
	cp_parser_decltype, cp_parser_conversion_type_id,
	cp_parser_simple_type_specifier, cp_parser_type_id_1,
	cp_parser_template_type_arg, cp_parser_std_attribute,
	cp_parser_template_declaration_after_export): Ditto.
	* pt.c (tsubst): Ditto.
	* semantics.c (force_paren_expr, finish_decltype_type): Ditto.
	* typeck.c (comp_template_parms_position, cxx_sizeof_or_alignof_type,
	cp_build_addr_expr_1, maybe_warn_about_useless_cast): Ditto.

[-- Attachment #3: patch --]
[-- Type: text/plain, Size: 18237 bytes --]

Index: libcpp/include/cpplib.h
===================================================================
--- libcpp/include/cpplib.h	(revision 212346)
+++ libcpp/include/cpplib.h	(working copy)
@@ -166,7 +166,7 @@
 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_GNUCXX1Y, CLK_CXX1Y, CLK_ASM};
+	     CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX1Z, CLK_CXX1Z, CLK_ASM};
 
 /* Payload of a NUMBER, STRING, CHAR or COMMENT token.  */
 struct GTY(()) cpp_string {
Index: libcpp/init.c
===================================================================
--- libcpp/init.c	(revision 212346)
+++ libcpp/init.c	(working copy)
@@ -90,26 +90,29 @@
   char user_literals;
   char binary_constants;
   char digit_separators;
+  char trigraphs;
 };
 
 static const struct lang_flags lang_defaults[] =
-{ /*              c99 c++ xnum xid c11 std  //   digr ulit rlit udlit bin_cst dig_sep */
-  /* GNUC89   */  { 0,  0,  1,   0,  0,  0,   1,   1,   0,   0,   0,    0,      0 },
-  /* GNUC99   */  { 1,  0,  1,   0,  0,  0,   1,   1,   1,   1,   0,    0,      0 },
-  /* GNUC11   */  { 1,  0,  1,   0,  1,  0,   1,   1,   1,   1,   0,    0,      0 },
-  /* STDC89   */  { 0,  0,  0,   0,  0,  1,   0,   0,   0,   0,   0,    0,      0 },
-  /* STDC94   */  { 0,  0,  0,   0,  0,  1,   0,   1,   0,   0,   0,    0,      0 },
-  /* STDC99   */  { 1,  0,  1,   0,  0,  1,   1,   1,   0,   0,   0,    0,      0 },
-  /* STDC11   */  { 1,  0,  1,   0,  1,  1,   1,   1,   1,   0,   0,    0,      0 },
-  /* GNUCXX   */  { 0,  1,  1,   0,  0,  0,   1,   1,   0,   0,   0,    0,      0 },
-  /* CXX98    */  { 0,  1,  1,   0,  0,  1,   1,   1,   0,   0,   0,    0,      0 },
-  /* GNUCXX11 */  { 1,  1,  1,   0,  1,  0,   1,   1,   1,   1,   1,    0,      0 },
-  /* CXX11    */  { 1,  1,  1,   0,  1,  1,   1,   1,   1,   1,   1,    0,      0 },
-  /* GNUCXX1Y */  { 1,  1,  1,   0,  1,  0,   1,   1,   1,   1,   1,    1,      1 },
-  /* CXX1Y    */  { 1,  1,  1,   0,  1,  1,   1,   1,   1,   1,   1,    1,      1 },
-  /* ASM      */  { 0,  0,  1,   0,  0,  0,   1,   0,   0,   0,   0,    0,      0 }
+{ /*              c99 c++ xnum xid c11 std // digr ulit rlit udlit bincst digsep trig */
+  /* GNUC89   */  { 0,  0,  1,  0,  0,  0,  1,  1,  0,   0,   0,    0,     0,     0 },
+  /* GNUC99   */  { 1,  0,  1,  0,  0,  0,  1,  1,  1,   1,   0,    0,     0,     0 },
+  /* GNUC11   */  { 1,  0,  1,  0,  1,  0,  1,  1,  1,   1,   0,    0,     0,     0 },
+  /* STDC89   */  { 0,  0,  0,  0,  0,  1,  0,  0,  0,   0,   0,    0,     0,     1 },
+  /* STDC94   */  { 0,  0,  0,  0,  0,  1,  0,  1,  0,   0,   0,    0,     0,     1 },
+  /* STDC99   */  { 1,  0,  1,  0,  0,  1,  1,  1,  0,   0,   0,    0,     0,     1 },
+  /* STDC11   */  { 1,  0,  1,  0,  1,  1,  1,  1,  1,   0,   0,    0,     0,     1 },
+  /* GNUCXX   */  { 0,  1,  1,  0,  0,  0,  1,  1,  0,   0,   0,    0,     0,     0 },
+  /* CXX98    */  { 0,  1,  1,  0,  0,  1,  1,  1,  0,   0,   0,    0,     0,     1 },
+  /* GNUCXX11 */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    0,     0,     0 },
+  /* CXX11    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    0,     0,     1 },
+  /* GNUCXX14 */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* CXX14    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    1,     1,     1 },
+  /* GNUCXX1Z */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* CXX1Z    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* ASM      */  { 0,  0,  1,  0,  0,  0,  1,  0,  0,   0,   0,    0,     0,     0 }
   /* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX11, CXX11,
-     GNUCXX1Y, and CXX1Y when no longer experimental (when all uses of
+     GNUCXX14, and CXX14 when no longer experimental (when all uses of
      identifiers in the compiler have been audited for correct handling
      of extended identifiers).  */
 };
@@ -128,7 +131,6 @@
   CPP_OPTION (pfile, extended_identifiers)	 = l->extended_identifiers;
   CPP_OPTION (pfile, c11_identifiers)		 = l->c11_identifiers;
   CPP_OPTION (pfile, std)			 = l->std;
-  CPP_OPTION (pfile, trigraphs)			 = l->std;
   CPP_OPTION (pfile, cplusplus_comments)	 = l->cplusplus_comments;
   CPP_OPTION (pfile, digraphs)			 = l->digraphs;
   CPP_OPTION (pfile, uliterals)			 = l->uliterals;
@@ -136,6 +138,7 @@
   CPP_OPTION (pfile, user_literals)		 = l->user_literals;
   CPP_OPTION (pfile, binary_constants)		 = l->binary_constants;
   CPP_OPTION (pfile, digit_separators)		 = l->digit_separators;
+  CPP_OPTION (pfile, trigraphs)			 = l->trigraphs;
 }
 
 /* Initialize library global state.  */
@@ -489,9 +492,12 @@
 
   if (CPP_OPTION (pfile, cplusplus))
     {
-      if (CPP_OPTION (pfile, lang) == CLK_CXX1Y
-	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Y)
-	_cpp_define_builtin (pfile, "__cplusplus 201300L");
+      if (CPP_OPTION (pfile, lang) == CLK_CXX1Z
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Z)
+	_cpp_define_builtin (pfile, "__cplusplus 201500L");
+      else if (CPP_OPTION (pfile, lang) == CLK_CXX14
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX14)
+	_cpp_define_builtin (pfile, "__cplusplus 201402L");
       else if (CPP_OPTION (pfile, lang) == CLK_CXX11
 	       || CPP_OPTION (pfile, lang) == CLK_GNUCXX11)
 	_cpp_define_builtin (pfile, "__cplusplus 201103L");
Index: gcc/c-family/c-common.h
===================================================================
--- gcc/c-family/c-common.h	(revision 212392)
+++ gcc/c-family/c-common.h	(working copy)
@@ -640,8 +640,9 @@
   /* C++11  */
   cxx0x,
   cxx11 = cxx0x,
-  /* C++1y (C++14?) */
+  /* C++14  */
   cxx1y,
+  cxx14 = cxx1y,
   /* C++1z (C++17?) */
   cxx1z
 };
Index: gcc/c-family/c-opts.c
===================================================================
--- gcc/c-family/c-opts.c	(revision 212392)
+++ gcc/c-family/c-opts.c	(working copy)
@@ -115,7 +115,7 @@
 static void handle_OPT_d (const char *);
 static void set_std_cxx98 (int);
 static void set_std_cxx11 (int);
-static void set_std_cxx1y (int);
+static void set_std_cxx14 (int);
 static void set_std_cxx1z (int);
 static void set_std_c89 (int, int);
 static void set_std_c99 (int);
@@ -697,7 +697,7 @@
     case OPT_std_gnu__1y:
       if (!preprocessing_asm_p)
 	{
-	  set_std_cxx1y (code == OPT_std_c__1y /* ISO */);
+	  set_std_cxx14 (code == OPT_std_c__1y /* ISO */);
 	  if (code == OPT_std_c__1y)
 	    cpp_opts->ext_numeric_literals = 0;
 	}
@@ -1578,9 +1578,9 @@
 
 /* Set the C++ 201y draft standard (without GNU extensions if ISO).  */
 static void
-set_std_cxx1y (int iso)
+set_std_cxx14 (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
+  cpp_set_lang (parse_in, iso ? CLK_CXX14: CLK_GNUCXX14);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1587,7 +1587,7 @@
   /* C++11 includes the C99 standard library.  */
   flag_isoc94 = 1;
   flag_isoc99 = 1;
-  cxx_dialect = cxx1y;
+  cxx_dialect = cxx14;
 }
 
 /* Set the C++ 201z draft standard (without GNU extensions if ISO).  */
@@ -1594,7 +1594,7 @@
 static void
 set_std_cxx1z (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
+  cpp_set_lang (parse_in, iso ? CLK_CXX1Z: CLK_GNUCXX1Z);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1601,6 +1601,7 @@
   /* C++11 includes the C99 standard library.  */
   flag_isoc94 = 1;
   flag_isoc99 = 1;
+  flag_isoc11 = 1;
   cxx_dialect = cxx1z;
 }
 
Index: gcc/c-family/c-ubsan.c
===================================================================
--- gcc/c-family/c-ubsan.c	(revision 212392)
+++ gcc/c-family/c-ubsan.c	(working copy)
@@ -144,12 +144,12 @@
 			build_int_cst (TREE_TYPE (tt), 0));
     }
 
-  /* For signed x << y, in C++11/C++14, the following:
+  /* For signed x << y, in C++11 and later, the following:
      x < 0 || ((unsigned) x >> (precm1 - y))
      if > 1, is undefined.  */
   if (code == LSHIFT_EXPR
       && !TYPE_UNSIGNED (TREE_TYPE (op0))
-      && (cxx_dialect == cxx11 || cxx_dialect == cxx1y))
+      && (cxx_dialect >= cxx11))
     {
       tree x = fold_build2 (MINUS_EXPR, integer_type_node, precm1, op1);
       tt = fold_convert_loc (loc, unsigned_type_for (type0), op0);
Index: gcc/cp/decl.c
===================================================================
--- gcc/cp/decl.c	(revision 212392)
+++ gcc/cp/decl.c	(working copy)
@@ -8385,7 +8385,7 @@
 	   /* We don't allow VLAs at non-function scopes, or during
 	      tentative template substitution.  */
 	   || !at_function_scope_p ()
-	   || (cxx_dialect < cxx1y && !(complain & tf_error)))
+	   || (cxx_dialect < cxx14 && !(complain & tf_error)))
     {
       if (!(complain & tf_error))
 	return error_mark_node;
@@ -8397,7 +8397,7 @@
 	error ("size of array is not an integral constant-expression");
       size = integer_one_node;
     }
-  else if (cxx_dialect < cxx1y && pedantic && warn_vla != 0)
+  else if (cxx_dialect < cxx14 && pedantic && warn_vla != 0)
     {
       if (name)
 	pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array %qD", name);
@@ -8455,7 +8455,7 @@
 
 	  stabilize_vla_size (itype);
 
-	  if (cxx_dialect >= cxx1y && flag_exceptions)
+	  if (cxx_dialect >= cxx14 && flag_exceptions)
 	    {
 	      /* If the VLA bound is larger than half the address space,
 	         or less than zero, throw std::bad_array_length.  */
@@ -8598,7 +8598,7 @@
       return error_mark_node;
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     pedwarn (input_location, OPT_Wvla, "array of array of runtime bound");
 
@@ -9621,7 +9621,7 @@
 			if (current_class_type
 			    && LAMBDA_TYPE_P (current_class_type))
 			  /* OK for C++11 lambdas.  */;
-			else if (cxx_dialect < cxx1y)
+			else if (cxx_dialect < cxx14)
 			  {
 			    error ("%qs function uses "
 				   "%<auto%> type specifier without trailing "
@@ -9844,7 +9844,7 @@
                    : G_("cannot declare pointer to qualified function type %qT"),
 		   type);
 
-	  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+	  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
 	      && (flag_iso || warn_vla > 0))
 	    pedwarn (input_location, OPT_Wvla,
 		     declarator->kind == cdk_reference
@@ -10193,7 +10193,7 @@
 	  type = error_mark_node;
 	}
 
-      if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+      if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
 	  && (flag_iso || warn_vla > 0))
 	pedwarn (input_location, OPT_Wvla,
 		 "typedef naming array of runtime bound");
@@ -10439,7 +10439,7 @@
 
       if (type_uses_auto (type))
 	{
-	  if (cxx_dialect >= cxx1y)
+	  if (cxx_dialect >= cxx14)
 	    error ("%<auto%> parameter not permitted in this context");
 	  else
 	    error ("parameter declared %<auto%>");
@@ -14565,7 +14565,7 @@
 bool
 undeduced_auto_decl (tree decl)
 {
-  if (cxx_dialect < cxx1y)
+  if (cxx_dialect < cxx14)
     return false;
   return type_uses_auto (TREE_TYPE (decl));
 }
Index: gcc/cp/parser.c
===================================================================
--- gcc/cp/parser.c	(revision 212392)
+++ gcc/cp/parser.c	(working copy)
@@ -4970,7 +4970,7 @@
 	/* ~auto means the destructor of whatever the object is.  */
 	if (cp_parser_is_keyword (token, RID_AUTO))
 	  {
-	    if (cxx_dialect < cxx1y)
+	    if (cxx_dialect < cxx14)
 	      pedwarn (input_location, 0,
 		       "%<~auto%> only available with "
 		       "-std=c++1y or -std=gnu++1y");
@@ -6819,7 +6819,7 @@
       && cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_AUTO)
       && !type_dependent_expression_p (object))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	pedwarn (input_location, 0,
 		 "%<~auto%> only available with "
 		 "-std=c++1y or -std=gnu++1y");
@@ -8975,7 +8975,7 @@
 	{
 	  bool direct, non_constant;
 	  /* An explicit initializer exists.  */
-	  if (cxx_dialect < cxx1y)
+	  if (cxx_dialect < cxx14)
 	    pedwarn (input_location, 0,
 		     "lambda capture initializers "
 		     "only available with -std=c++1y or -std=gnu++1y");
@@ -9101,7 +9101,7 @@
      an opening angle if present.  */
   if (cp_lexer_next_token_is (parser->lexer, CPP_LESS))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	pedwarn (parser->lexer->next_token->location, 0,
 		 "lambda templates are only available with "
 		 "-std=c++1y or -std=gnu++1y");
@@ -12079,7 +12079,7 @@
     return error_mark_node;
 
   /* decltype (auto) */
-  if (cxx_dialect >= cxx1y
+  if (cxx_dialect >= cxx14
       && cp_lexer_next_token_is_keyword (parser->lexer, RID_AUTO))
     {
       cp_lexer_consume_token (parser->lexer);
@@ -12262,7 +12262,7 @@
   if (! cp_parser_uncommitted_to_tentative_parse_p (parser)
       && type_uses_auto (type_specified))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	{
 	  error ("invalid use of %<auto%> in conversion operator");
 	  return error_mark_node;
@@ -14633,13 +14633,13 @@
 
 	  if (current_class_type && LAMBDA_TYPE_P (current_class_type))
 	    {
-	      if (cxx_dialect < cxx1y)
+	      if (cxx_dialect < cxx14)
 		pedwarn (location_of (type), 0,
 			 "use of %<auto%> in lambda parameter declaration "
 			 "only available with "
 			 "-std=c++1y or -std=gnu++1y");
 	    }
-	  else if (cxx_dialect < cxx1y)
+	  else if (cxx_dialect < cxx14)
 	    pedwarn (location_of (type), 0,
 		     "use of %<auto%> in parameter declaration "
 		     "only available with "
@@ -18136,7 +18136,7 @@
   if (type_specifier_seq.type
       /* None of the valid uses of 'auto' in C++14 involve the type-id
 	 nonterminal, but it is valid in a trailing-return-type.  */
-      && !(cxx_dialect >= cxx1y && is_trailing_return)
+      && !(cxx_dialect >= cxx14 && is_trailing_return)
       && type_uses_auto (type_specifier_seq.type))
     {
       /* A type-id with type 'auto' is only ok if the abstract declarator
@@ -18169,7 +18169,7 @@
     = G_("types may not be defined in template arguments");
   r = cp_parser_type_id_1 (parser, true, false);
   parser->type_definition_forbidden_message = saved_message;
-  if (cxx_dialect >= cxx1y && type_uses_auto (r))
+  if (cxx_dialect >= cxx14 && type_uses_auto (r))
     {
       error ("invalid use of %<auto%> in template argument");
       r = error_mark_node;
@@ -21996,7 +21996,7 @@
       if (is_attribute_p ("noreturn", attr_id))
 	TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu");
       /* C++14 deprecated attribute is equivalent to GNU's.  */
-      else if (cxx_dialect >= cxx1y && is_attribute_p ("deprecated", attr_id))
+      else if (cxx_dialect >= cxx14 && is_attribute_p ("deprecated", attr_id))
 	TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu");
     }
 
@@ -23209,7 +23209,7 @@
 		  || !TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm)))
 		ok = false;
 	    }
-	  else if (num_parms == 2 && cxx_dialect >= cxx1y)
+	  else if (num_parms == 2 && cxx_dialect >= cxx14)
 	    {
 	      tree parm_type = TREE_VEC_ELT (parameter_list, 0);
 	      tree type = INNERMOST_TEMPLATE_PARMS (parm_type);
@@ -23224,7 +23224,7 @@
 	}
       if (!ok)
 	{
-	  if (cxx_dialect >= cxx1y)
+	  if (cxx_dialect >= cxx14)
 	    error ("literal operator template %qD has invalid parameter list."
 		   "  Expected non-type template argument pack <char...>"
 		   " or <typename CharT, CharT...>",
Index: gcc/cp/pt.c
===================================================================
--- gcc/cp/pt.c	(revision 212392)
+++ gcc/cp/pt.c	(working copy)
@@ -12043,7 +12043,7 @@
 	  r = cp_build_reference_type (type, TYPE_REF_IS_RVALUE (t));
 	r = cp_build_qualified_type_real (r, cp_type_quals (t), complain);
 
-	if (cxx_dialect >= cxx1y
+	if (cxx_dialect >= cxx14
 	    && !(TREE_CODE (t) == REFERENCE_TYPE && REFERENCE_VLA_OK (t))
 	    && array_of_runtime_bound_p (type)
 	    && (flag_iso || warn_vla > 0))
Index: gcc/cp/semantics.c
===================================================================
--- gcc/cp/semantics.c	(revision 212392)
+++ gcc/cp/semantics.c	(working copy)
@@ -1611,7 +1611,7 @@
 force_paren_expr (tree expr)
 {
   /* This is only needed for decltype(auto) in C++14.  */
-  if (cxx_dialect < cxx1y)
+  if (cxx_dialect < cxx14)
     return expr;
 
   /* If we're in unevaluated context, we can't be deducing a
@@ -7048,7 +7048,7 @@
 	}
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     {
       if (complain & tf_warning_or_error)
Index: gcc/cp/typeck.c
===================================================================
--- gcc/cp/typeck.c	(revision 212392)
+++ gcc/cp/typeck.c	(working copy)
@@ -1148,7 +1148,7 @@
 
   /* In C++14 we can end up comparing 'auto' to a normal template
      parameter.  Don't confuse them.  */
-  if (cxx_dialect >= cxx1y && (is_auto (t1) || is_auto (t2)))
+  if (cxx_dialect >= cxx14 && (is_auto (t1) || is_auto (t2)))
     return TYPE_IDENTIFIER (t1) == TYPE_IDENTIFIER (t2);
 
   return true;
@@ -1558,7 +1558,7 @@
       return value;
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     {
       if (complain & tf_warning_or_error)
@@ -5493,7 +5493,7 @@
 
   if (argtype != error_mark_node)
     {
-      if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (argtype)
+      if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (argtype)
 	  && (flag_iso || warn_vla > 0))
 	{
 	  if (complain & tf_warning_or_error)
@@ -6315,7 +6315,7 @@
       /* In C++14 mode, this interacts badly with force_paren_expr.  And it
 	 isn't necessary in any mode, because the code below handles
 	 glvalues properly.  For 4.9, just skip it in C++14 mode.  */
-      if (cxx_dialect < cxx1y && REFERENCE_REF_P (expr))
+      if (cxx_dialect < cxx14 && REFERENCE_REF_P (expr))
 	expr = TREE_OPERAND (expr, 0);
 
       if ((TREE_CODE (type) == REFERENCE_TYPE

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH, C++, CPP] Add C++1z to the preprocessor.  Rename C++1y to C++14.
  2014-07-10  9:13 [PATCH, C++, CPP] Add C++1z to the preprocessor. Rename C++1y to C++14 Ed Smith-Rowland
@ 2014-07-10 10:51 ` Mike Stump
  2014-07-16 15:02   ` Ed Smith-Rowland
  0 siblings, 1 reply; 9+ messages in thread
From: Mike Stump @ 2014-07-10 10:51 UTC (permalink / raw)
  To: Ed Smith-Rowland; +Cc: gcc-patches, Jason Merrill

On Jul 10, 2014, at 2:12 AM, Ed Smith-Rowland <3dw4rd@verizon.net> wrote:
> Rename C++1y to C++14.

So generally when we do this we change most of the uses in the test suite of the c++1y flag to use the standard spelling.  Some might appreciate that we have one test case testing the 1y spelling for completeness.

Also, is there some documentation to update with the new spelling?  doc/invoke.texi maybe?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH, C++, CPP] Add C++1z to the preprocessor.  Rename C++1y to C++14.
  2014-07-10 10:51 ` Mike Stump
@ 2014-07-16 15:02   ` Ed Smith-Rowland
  2014-07-16 16:22     ` Mike Stump
  0 siblings, 1 reply; 9+ messages in thread
From: Ed Smith-Rowland @ 2014-07-16 15:02 UTC (permalink / raw)
  To: Mike Stump; +Cc: gcc-patches, Jason Merrill

[-- Attachment #1: Type: text/plain, Size: 501 bytes --]

On 07/10/2014 06:51 AM, Mike Stump wrote:
> On Jul 10, 2014, at 2:12 AM, Ed Smith-Rowland <3dw4rd@verizon.net> wrote:
>> Rename C++1y to C++14.
> So generally when we do this we change most of the uses in the test suite of the c++1y flag to use the standard spelling.  Some might appreciate that we have one test case testing the 1y spelling for completeness.
>
> Also, is there some documentation to update with the new spelling?  doc/invoke.texi maybe?
>

Here is a redo with .texi and more tests.


[-- Attachment #2: CL --]
[-- Type: text/plain, Size: 6092 bytes --]


libcpp/

2014-07-16  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* include/cpplib.h (enum c_lang): Add CLK_GNUCXX1Z, CLK_CXX1Z;
	Rename CLK_GNUCXX1Y, CLK_CXX1Y to CLK_GNUCXX14, CLK_CXX14;
	* init.c (struct lang_flags lang_defaults): Add column for trigraphs;
	Add rows for CLK_GNUCXX1Z, CLK_CXX1Z; (cpp_set_lang): Set trigraphs;
	(cpp_init_builtins): Set __cplusplus to 201402L for C++14;
	Set __cplusplus to 201500L for C++17.


gcc/c-family/

2014-07-16  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* c-common.h (enum cxx_dialect): Add cxx14.
	* c-opts.c (set_std_cxx1y): Rename to set_std_cxx14; Use cxx14.
	* c-ubsan.c (ubsan_instrument_shift): Change comment and logic from
	cxx_dialect == cxx11 || cxx_dialect == cxx1y to cxx_dialect >= cxx11.


gcc/cp/

2014-07-16  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* decl.c (compute_array_index_type, grokdeclarator,
	undeduced_auto_decl): Change from cxx1y to cxx14.
	* parser.c (cp_parser_unqualified_id, cp_parser_pseudo_destructor_name,
	cp_parser_lambda_introducer, cp_parser_lambda_declarator_opt,
	cp_parser_decltype, cp_parser_conversion_type_id,
	cp_parser_simple_type_specifier, cp_parser_type_id_1,
	cp_parser_template_type_arg, cp_parser_std_attribute,
	cp_parser_template_declaration_after_export): Ditto.
	* pt.c (tsubst): Ditto.
	* semantics.c (force_paren_expr, finish_decltype_type): Ditto.
	* typeck.c (comp_template_parms_position, cxx_sizeof_or_alignof_type,
	cp_build_addr_expr_1, maybe_warn_about_useless_cast): Ditto.


gcc/

2014-07-16  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* doc/invoke.texi: Change c++1y to c++14 and gnu++1y to gnu++14.
	Deprecate c++1y. Chane language to reflect greater confidence in C++14.


gcc/testsuite/

2014-07-16  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* g++.dg/cpp0x/cplusplus.C: New.
	* g++.dg/cpp0x/cplusplus_0x.C: New.
	* g++.dg/cpp1y/attr-deprecated.C: Change c++1y to c++14.
	* g++.dg/cpp1y/auto-dtor1.C: Ditto.
	* g++.dg/cpp1y/auto-fn1.C: Ditto.
	* g++.dg/cpp1y/auto-fn2.C: Ditto.
	* g++.dg/cpp1y/auto-fn3.C: Ditto.
	* g++.dg/cpp1y/auto-fn4.C: Ditto.
	* g++.dg/cpp1y/auto-fn5.C: Ditto.
	* g++.dg/cpp1y/auto-fn6.C: Ditto.
	* g++.dg/cpp1y/auto-fn7.C: Ditto.
	* g++.dg/cpp1y/auto-fn8.C: Ditto.
	* g++.dg/cpp1y/auto-fn9.C: Ditto.
	* g++.dg/cpp1y/auto-fn10.C: Ditto.
	* g++.dg/cpp1y/auto-fn11.C: Ditto.
	* g++.dg/cpp1y/auto-fn12.C: Ditto.
	* g++.dg/cpp1y/auto-fn13.C: Ditto.
	* g++.dg/cpp1y/auto-fn14.C: Ditto.
	* g++.dg/cpp1y/auto-fn15.C: Ditto.
	* g++.dg/cpp1y/auto-fn16.C: Ditto.
	* g++.dg/cpp1y/auto-fn17.C: Ditto.
	* g++.dg/cpp1y/auto-fn18.C: Ditto.
	* g++.dg/cpp1y/auto-fn19.C: Ditto.
	* g++.dg/cpp1y/auto-fn20.C: Ditto.
	* g++.dg/cpp1y/auto-fn21.C: Ditto.
	* g++.dg/cpp1y/auto-fn22.C: Ditto.
	* g++.dg/cpp1y/auto-fn23.C: Ditto.
	* g++.dg/cpp1y/auto-fn24.C: Ditto.
	* g++.dg/cpp1y/auto-fn25.C: Ditto.
	* g++.dg/cpp1y/auto-mangle1.C: Ditto.
	* g++.dg/cpp1y/auto-neg1.C: Ditto.
	* g++.dg/cpp1y/digit-sep.C: Ditto.
	* g++.dg/cpp1y/digit-sep-neg.C: Ditto.
	* g++.dg/cpp1y/digit-sep-cxx11-neg.C: Ditto.
	* g++.dg/cpp1y/fn-generic-member-ool.C: Ditto.
	* g++.dg/cpp1y/lambda-deduce-mult.C: Ditto.
	* g++.dg/cpp1y/lambda-generic.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-cfun.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-dep.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-mixed.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-udt.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-variadic.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-vla1.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-x.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-xcfun.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-xudt.C: Ditto.
	* g++.dg/cpp1y/lambda-init.C: Ditto.
	* g++.dg/cpp1y/lambda-init1.C: Ditto.
	* g++.dg/cpp1y/lambda-init2.C: Ditto.
	* g++.dg/cpp1y/lambda-init3.C: Ditto.
	* g++.dg/cpp1y/lambda-init4.C: Ditto.
	* g++.dg/cpp1y/lambda-init5.C: Ditto.
	* g++.dg/cpp1y/lambda-init6.C: Ditto.
	* g++.dg/cpp1y/lambda-init7.C: Ditto.
	* g++.dg/cpp1y/lambda-init8.C: Ditto.
	* g++.dg/cpp1y/lambda-init9.C: Ditto.
	* g++.dg/cpp1y/mangle1.C: Ditto.
	* g++.dg/cpp1y/pr57640.C: Ditto.
	* g++.dg/cpp1y/pr57644.C: Ditto.
	* g++.dg/cpp1y/pr58500.C: Ditto.
	* g++.dg/cpp1y/pr58533.C: Ditto.
	* g++.dg/cpp1y/pr58534.C: Ditto.
	* g++.dg/cpp1y/pr58535.C: Ditto.
	* g++.dg/cpp1y/pr58536.C: Ditto.
	* g++.dg/cpp1y/pr58548.C: Ditto.
	* g++.dg/cpp1y/pr58549.C: Ditto.
	* g++.dg/cpp1y/pr58637.C: Ditto.
	* g++.dg/cpp1y/pr58708.C: Ditto.
	* g++.dg/cpp1y/pr59110.C: Ditto.
	* g++.dg/cpp1y/pr59112.C: Ditto.
	* g++.dg/cpp1y/pr59113.C: Ditto.
	* g++.dg/cpp1y/pr59629.C: Ditto.
	* g++.dg/cpp1y/pr59635.C: Ditto.
	* g++.dg/cpp1y/pr59636.C: Ditto.
	* g++.dg/cpp1y/pr59638.C: Ditto.
	* g++.dg/cpp1y/pr59867.C: Ditto.
	* g++.dg/cpp1y/pr60033.C: Ditto.
	* g++.dg/cpp1y/pr60052.C: Ditto.
	* g++.dg/cpp1y/pr60053.C: Ditto.
	* g++.dg/cpp1y/pr60054.C: Ditto.
	* g++.dg/cpp1y/pr60064.C: Ditto.
	* g++.dg/cpp1y/pr60065.C: Ditto.
	* g++.dg/cpp1y/pr60190.C: Ditto.
	* g++.dg/cpp1y/pr60311.C: Ditto.
	* g++.dg/cpp1y/pr60332.C: Ditto.
	* g++.dg/cpp1y/pr60376.C: Ditto.
	* g++.dg/cpp1y/pr60377.C: Ditto.
	* g++.dg/cpp1y/pr60384.C: Ditto.
	* g++.dg/cpp1y/pr60390.C: Ditto.
	* g++.dg/cpp1y/pr60391.C: Ditto.
	* g++.dg/cpp1y/pr60393.C: Ditto.
	* g++.dg/cpp1y/pr60573.C: Ditto.
	* g++.dg/cpp1y/pr60626.C: Ditto.
	* g++.dg/cpp1y/pr60627.C: Ditto.
	* g++.dg/cpp1y/regress1.C: Ditto.
	* g++.dg/cpp1y/system-binary-constants-1.C: Ditto.
	* g++.dg/cpp1y/udlit-char-template.C: Ditto.
	* g++.dg/cpp1y/udlit-char-template-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-empty-string-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-enc-prefix-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-userdef-string.C: Ditto.
	* g++.dg/cpp1y/vla1.C: Ditto.
	* g++.dg/cpp1y/vla2.C: Ditto.
	* g++.dg/cpp1y/vla3.C: Ditto.
	* g++.dg/cpp1y/vla4.C: Ditto.
	* g++.dg/cpp1y/vla5.C: Ditto.
	* g++.dg/cpp1y/vla8.C: Ditto.
	* g++.dg/cpp1y/vla9.C: Ditto.
	* g++.dg/cpp1y/vla10.C: Ditto.
	* g++.dg/cpp1y/vla11.C: Ditto.
	* g++.dg/cpp1y/vla12.C: Ditto.
	* g++.dg/cpp1y/vla13.C: Ditto.
	* g++.dg/cpp1y/vla-initlist1.C: Ditto.
	* g++.dg/cpp1y/cplusplus.C: Check for exact date.
	* g++.dg/cpp1z/cplusplus.C: New.
	* g++.dg/cpp1y/cplusplus_1y.C: New.


[-- Attachment #3: patch_2 --]
[-- Type: text/plain, Size: 65807 bytes --]

Index: libcpp/include/cpplib.h
===================================================================
--- libcpp/include/cpplib.h	(revision 212639)
+++ libcpp/include/cpplib.h	(working copy)
@@ -166,7 +166,7 @@
 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_GNUCXX1Y, CLK_CXX1Y, CLK_ASM};
+	     CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX1Z, CLK_CXX1Z, CLK_ASM};
 
 /* Payload of a NUMBER, STRING, CHAR or COMMENT token.  */
 struct GTY(()) cpp_string {
Index: libcpp/init.c
===================================================================
--- libcpp/init.c	(revision 212639)
+++ libcpp/init.c	(working copy)
@@ -90,26 +90,29 @@
   char user_literals;
   char binary_constants;
   char digit_separators;
+  char trigraphs;
 };
 
 static const struct lang_flags lang_defaults[] =
-{ /*              c99 c++ xnum xid c11 std  //   digr ulit rlit udlit bin_cst dig_sep */
-  /* GNUC89   */  { 0,  0,  1,   0,  0,  0,   1,   1,   0,   0,   0,    0,      0 },
-  /* GNUC99   */  { 1,  0,  1,   0,  0,  0,   1,   1,   1,   1,   0,    0,      0 },
-  /* GNUC11   */  { 1,  0,  1,   0,  1,  0,   1,   1,   1,   1,   0,    0,      0 },
-  /* STDC89   */  { 0,  0,  0,   0,  0,  1,   0,   0,   0,   0,   0,    0,      0 },
-  /* STDC94   */  { 0,  0,  0,   0,  0,  1,   0,   1,   0,   0,   0,    0,      0 },
-  /* STDC99   */  { 1,  0,  1,   0,  0,  1,   1,   1,   0,   0,   0,    0,      0 },
-  /* STDC11   */  { 1,  0,  1,   0,  1,  1,   1,   1,   1,   0,   0,    0,      0 },
-  /* GNUCXX   */  { 0,  1,  1,   0,  0,  0,   1,   1,   0,   0,   0,    0,      0 },
-  /* CXX98    */  { 0,  1,  1,   0,  0,  1,   1,   1,   0,   0,   0,    0,      0 },
-  /* GNUCXX11 */  { 1,  1,  1,   0,  1,  0,   1,   1,   1,   1,   1,    0,      0 },
-  /* CXX11    */  { 1,  1,  1,   0,  1,  1,   1,   1,   1,   1,   1,    0,      0 },
-  /* GNUCXX1Y */  { 1,  1,  1,   0,  1,  0,   1,   1,   1,   1,   1,    1,      1 },
-  /* CXX1Y    */  { 1,  1,  1,   0,  1,  1,   1,   1,   1,   1,   1,    1,      1 },
-  /* ASM      */  { 0,  0,  1,   0,  0,  0,   1,   0,   0,   0,   0,    0,      0 }
+{ /*              c99 c++ xnum xid c11 std // digr ulit rlit udlit bincst digsep trig */
+  /* GNUC89   */  { 0,  0,  1,  0,  0,  0,  1,  1,  0,   0,   0,    0,     0,     0 },
+  /* GNUC99   */  { 1,  0,  1,  0,  0,  0,  1,  1,  1,   1,   0,    0,     0,     0 },
+  /* GNUC11   */  { 1,  0,  1,  0,  1,  0,  1,  1,  1,   1,   0,    0,     0,     0 },
+  /* STDC89   */  { 0,  0,  0,  0,  0,  1,  0,  0,  0,   0,   0,    0,     0,     1 },
+  /* STDC94   */  { 0,  0,  0,  0,  0,  1,  0,  1,  0,   0,   0,    0,     0,     1 },
+  /* STDC99   */  { 1,  0,  1,  0,  0,  1,  1,  1,  0,   0,   0,    0,     0,     1 },
+  /* STDC11   */  { 1,  0,  1,  0,  1,  1,  1,  1,  1,   0,   0,    0,     0,     1 },
+  /* GNUCXX   */  { 0,  1,  1,  0,  0,  0,  1,  1,  0,   0,   0,    0,     0,     0 },
+  /* CXX98    */  { 0,  1,  1,  0,  0,  1,  1,  1,  0,   0,   0,    0,     0,     1 },
+  /* GNUCXX11 */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    0,     0,     0 },
+  /* CXX11    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    0,     0,     1 },
+  /* GNUCXX14 */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* CXX14    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    1,     1,     1 },
+  /* GNUCXX1Z */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* CXX1Z    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* ASM      */  { 0,  0,  1,  0,  0,  0,  1,  0,  0,   0,   0,    0,     0,     0 }
   /* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX11, CXX11,
-     GNUCXX1Y, and CXX1Y when no longer experimental (when all uses of
+     GNUCXX14, and CXX14 when no longer experimental (when all uses of
      identifiers in the compiler have been audited for correct handling
      of extended identifiers).  */
 };
@@ -128,7 +131,6 @@
   CPP_OPTION (pfile, extended_identifiers)	 = l->extended_identifiers;
   CPP_OPTION (pfile, c11_identifiers)		 = l->c11_identifiers;
   CPP_OPTION (pfile, std)			 = l->std;
-  CPP_OPTION (pfile, trigraphs)			 = l->std;
   CPP_OPTION (pfile, cplusplus_comments)	 = l->cplusplus_comments;
   CPP_OPTION (pfile, digraphs)			 = l->digraphs;
   CPP_OPTION (pfile, uliterals)			 = l->uliterals;
@@ -136,6 +138,7 @@
   CPP_OPTION (pfile, user_literals)		 = l->user_literals;
   CPP_OPTION (pfile, binary_constants)		 = l->binary_constants;
   CPP_OPTION (pfile, digit_separators)		 = l->digit_separators;
+  CPP_OPTION (pfile, trigraphs)			 = l->trigraphs;
 }
 
 /* Initialize library global state.  */
@@ -489,9 +492,12 @@
 
   if (CPP_OPTION (pfile, cplusplus))
     {
-      if (CPP_OPTION (pfile, lang) == CLK_CXX1Y
-	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Y)
-	_cpp_define_builtin (pfile, "__cplusplus 201300L");
+      if (CPP_OPTION (pfile, lang) == CLK_CXX1Z
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Z)
+	_cpp_define_builtin (pfile, "__cplusplus 201500L");
+      else if (CPP_OPTION (pfile, lang) == CLK_CXX14
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX14)
+	_cpp_define_builtin (pfile, "__cplusplus 201402L");
       else if (CPP_OPTION (pfile, lang) == CLK_CXX11
 	       || CPP_OPTION (pfile, lang) == CLK_GNUCXX11)
 	_cpp_define_builtin (pfile, "__cplusplus 201103L");
Index: gcc/c-family/c-common.h
===================================================================
--- gcc/c-family/c-common.h	(revision 212639)
+++ gcc/c-family/c-common.h	(working copy)
@@ -640,8 +640,9 @@
   /* C++11  */
   cxx0x,
   cxx11 = cxx0x,
-  /* C++1y (C++14?) */
+  /* C++14  */
   cxx1y,
+  cxx14 = cxx1y,
   /* C++1z (C++17?) */
   cxx1z
 };
Index: gcc/c-family/c-opts.c
===================================================================
--- gcc/c-family/c-opts.c	(revision 212639)
+++ gcc/c-family/c-opts.c	(working copy)
@@ -115,7 +115,7 @@
 static void handle_OPT_d (const char *);
 static void set_std_cxx98 (int);
 static void set_std_cxx11 (int);
-static void set_std_cxx1y (int);
+static void set_std_cxx14 (int);
 static void set_std_cxx1z (int);
 static void set_std_c89 (int, int);
 static void set_std_c99 (int);
@@ -697,7 +697,7 @@
     case OPT_std_gnu__1y:
       if (!preprocessing_asm_p)
 	{
-	  set_std_cxx1y (code == OPT_std_c__1y /* ISO */);
+	  set_std_cxx14 (code == OPT_std_c__1y /* ISO */);
 	  if (code == OPT_std_c__1y)
 	    cpp_opts->ext_numeric_literals = 0;
 	}
@@ -1578,9 +1578,9 @@
 
 /* Set the C++ 201y draft standard (without GNU extensions if ISO).  */
 static void
-set_std_cxx1y (int iso)
+set_std_cxx14 (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
+  cpp_set_lang (parse_in, iso ? CLK_CXX14: CLK_GNUCXX14);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1587,7 +1587,7 @@
   /* C++11 includes the C99 standard library.  */
   flag_isoc94 = 1;
   flag_isoc99 = 1;
-  cxx_dialect = cxx1y;
+  cxx_dialect = cxx14;
 }
 
 /* Set the C++ 201z draft standard (without GNU extensions if ISO).  */
@@ -1594,7 +1594,7 @@
 static void
 set_std_cxx1z (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
+  cpp_set_lang (parse_in, iso ? CLK_CXX1Z: CLK_GNUCXX1Z);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1601,6 +1601,7 @@
   /* C++11 includes the C99 standard library.  */
   flag_isoc94 = 1;
   flag_isoc99 = 1;
+  flag_isoc11 = 1;
   cxx_dialect = cxx1z;
 }
 
Index: gcc/c-family/c-ubsan.c
===================================================================
--- gcc/c-family/c-ubsan.c	(revision 212639)
+++ gcc/c-family/c-ubsan.c	(working copy)
@@ -144,12 +144,12 @@
 			build_int_cst (TREE_TYPE (tt), 0));
     }
 
-  /* For signed x << y, in C++11/C++14, the following:
+  /* For signed x << y, in C++11 and later, the following:
      x < 0 || ((unsigned) x >> (precm1 - y))
      if > 1, is undefined.  */
   if (code == LSHIFT_EXPR
       && !TYPE_UNSIGNED (TREE_TYPE (op0))
-      && (cxx_dialect == cxx11 || cxx_dialect == cxx1y))
+      && (cxx_dialect >= cxx11))
     {
       tree x = fold_build2 (MINUS_EXPR, integer_type_node, precm1, op1);
       tt = fold_convert_loc (loc, unsigned_type_for (type0), op0);
Index: gcc/cp/decl.c
===================================================================
--- gcc/cp/decl.c	(revision 212639)
+++ gcc/cp/decl.c	(working copy)
@@ -8381,7 +8381,7 @@
 	   /* We don't allow VLAs at non-function scopes, or during
 	      tentative template substitution.  */
 	   || !at_function_scope_p ()
-	   || (cxx_dialect < cxx1y && !(complain & tf_error)))
+	   || (cxx_dialect < cxx14 && !(complain & tf_error)))
     {
       if (!(complain & tf_error))
 	return error_mark_node;
@@ -8393,7 +8393,7 @@
 	error ("size of array is not an integral constant-expression");
       size = integer_one_node;
     }
-  else if (cxx_dialect < cxx1y && pedantic && warn_vla != 0)
+  else if (cxx_dialect < cxx14 && pedantic && warn_vla != 0)
     {
       if (name)
 	pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array %qD", name);
@@ -8451,7 +8451,7 @@
 
 	  stabilize_vla_size (itype);
 
-	  if (cxx_dialect >= cxx1y && flag_exceptions)
+	  if (cxx_dialect >= cxx14 && flag_exceptions)
 	    {
 	      /* If the VLA bound is larger than half the address space,
 	         or less than zero, throw std::bad_array_length.  */
@@ -8596,7 +8596,7 @@
       return error_mark_node;
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     pedwarn (input_location, OPT_Wvla, "array of array of runtime bound");
 
@@ -9611,7 +9611,7 @@
 			if (current_class_type
 			    && LAMBDA_TYPE_P (current_class_type))
 			  /* OK for C++11 lambdas.  */;
-			else if (cxx_dialect < cxx1y)
+			else if (cxx_dialect < cxx14)
 			  {
 			    error ("%qs function uses "
 				   "%<auto%> type specifier without trailing "
@@ -9837,7 +9837,7 @@
                    : G_("cannot declare pointer to qualified function type %qT"),
 		   type);
 
-	  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+	  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
 	      && (flag_iso || warn_vla > 0))
 	    pedwarn (input_location, OPT_Wvla,
 		     declarator->kind == cdk_reference
@@ -10193,7 +10193,7 @@
 	  type = error_mark_node;
 	}
 
-      if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+      if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
 	  && (flag_iso || warn_vla > 0))
 	pedwarn (input_location, OPT_Wvla,
 		 "typedef naming array of runtime bound");
@@ -10439,7 +10439,7 @@
 
       if (type_uses_auto (type))
 	{
-	  if (cxx_dialect >= cxx1y)
+	  if (cxx_dialect >= cxx14)
 	    error ("%<auto%> parameter not permitted in this context");
 	  else
 	    error ("parameter declared %<auto%>");
@@ -14566,7 +14566,7 @@
 bool
 undeduced_auto_decl (tree decl)
 {
-  if (cxx_dialect < cxx1y)
+  if (cxx_dialect < cxx14)
     return false;
   return type_uses_auto (TREE_TYPE (decl));
 }
Index: gcc/cp/parser.c
===================================================================
--- gcc/cp/parser.c	(revision 212639)
+++ gcc/cp/parser.c	(working copy)
@@ -4974,7 +4974,7 @@
 	/* ~auto means the destructor of whatever the object is.  */
 	if (cp_parser_is_keyword (token, RID_AUTO))
 	  {
-	    if (cxx_dialect < cxx1y)
+	    if (cxx_dialect < cxx14)
 	      pedwarn (input_location, 0,
 		       "%<~auto%> only available with "
 		       "-std=c++1y or -std=gnu++1y");
@@ -6899,7 +6899,7 @@
       && cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_AUTO)
       && !type_dependent_expression_p (object))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	pedwarn (input_location, 0,
 		 "%<~auto%> only available with "
 		 "-std=c++1y or -std=gnu++1y");
@@ -9055,7 +9055,7 @@
 	{
 	  bool direct, non_constant;
 	  /* An explicit initializer exists.  */
-	  if (cxx_dialect < cxx1y)
+	  if (cxx_dialect < cxx14)
 	    pedwarn (input_location, 0,
 		     "lambda capture initializers "
 		     "only available with -std=c++1y or -std=gnu++1y");
@@ -9181,7 +9181,7 @@
      an opening angle if present.  */
   if (cp_lexer_next_token_is (parser->lexer, CPP_LESS))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	pedwarn (parser->lexer->next_token->location, 0,
 		 "lambda templates are only available with "
 		 "-std=c++1y or -std=gnu++1y");
@@ -12159,7 +12159,7 @@
     return error_mark_node;
 
   /* decltype (auto) */
-  if (cxx_dialect >= cxx1y
+  if (cxx_dialect >= cxx14
       && cp_lexer_next_token_is_keyword (parser->lexer, RID_AUTO))
     {
       cp_lexer_consume_token (parser->lexer);
@@ -12342,7 +12342,7 @@
   if (! cp_parser_uncommitted_to_tentative_parse_p (parser)
       && type_uses_auto (type_specified))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	{
 	  error ("invalid use of %<auto%> in conversion operator");
 	  return error_mark_node;
@@ -14703,13 +14703,13 @@
 
 	  if (current_class_type && LAMBDA_TYPE_P (current_class_type))
 	    {
-	      if (cxx_dialect < cxx1y)
+	      if (cxx_dialect < cxx14)
 		pedwarn (location_of (type), 0,
 			 "use of %<auto%> in lambda parameter declaration "
 			 "only available with "
 			 "-std=c++1y or -std=gnu++1y");
 	    }
-	  else if (cxx_dialect < cxx1y)
+	  else if (cxx_dialect < cxx14)
 	    pedwarn (location_of (type), 0,
 		     "use of %<auto%> in parameter declaration "
 		     "only available with "
@@ -18206,7 +18206,7 @@
   if (type_specifier_seq.type
       /* None of the valid uses of 'auto' in C++14 involve the type-id
 	 nonterminal, but it is valid in a trailing-return-type.  */
-      && !(cxx_dialect >= cxx1y && is_trailing_return)
+      && !(cxx_dialect >= cxx14 && is_trailing_return)
       && type_uses_auto (type_specifier_seq.type))
     {
       /* A type-id with type 'auto' is only ok if the abstract declarator
@@ -18239,7 +18239,7 @@
     = G_("types may not be defined in template arguments");
   r = cp_parser_type_id_1 (parser, true, false);
   parser->type_definition_forbidden_message = saved_message;
-  if (cxx_dialect >= cxx1y && type_uses_auto (r))
+  if (cxx_dialect >= cxx14 && type_uses_auto (r))
     {
       error ("invalid use of %<auto%> in template argument");
       r = error_mark_node;
@@ -22066,7 +22066,7 @@
       if (is_attribute_p ("noreturn", attr_id))
 	TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu");
       /* C++14 deprecated attribute is equivalent to GNU's.  */
-      else if (cxx_dialect >= cxx1y && is_attribute_p ("deprecated", attr_id))
+      else if (cxx_dialect >= cxx14 && is_attribute_p ("deprecated", attr_id))
 	TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu");
     }
 
@@ -23279,7 +23279,7 @@
 		  || !TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm)))
 		ok = false;
 	    }
-	  else if (num_parms == 2 && cxx_dialect >= cxx1y)
+	  else if (num_parms == 2 && cxx_dialect >= cxx14)
 	    {
 	      tree parm_type = TREE_VEC_ELT (parameter_list, 0);
 	      tree type = INNERMOST_TEMPLATE_PARMS (parm_type);
@@ -23294,7 +23294,7 @@
 	}
       if (!ok)
 	{
-	  if (cxx_dialect >= cxx1y)
+	  if (cxx_dialect >= cxx14)
 	    error ("literal operator template %qD has invalid parameter list."
 		   "  Expected non-type template argument pack <char...>"
 		   " or <typename CharT, CharT...>",
Index: gcc/cp/pt.c
===================================================================
--- gcc/cp/pt.c	(revision 212639)
+++ gcc/cp/pt.c	(working copy)
@@ -12043,7 +12043,7 @@
 	  r = cp_build_reference_type (type, TYPE_REF_IS_RVALUE (t));
 	r = cp_build_qualified_type_real (r, cp_type_quals (t), complain);
 
-	if (cxx_dialect >= cxx1y
+	if (cxx_dialect >= cxx14
 	    && !(TREE_CODE (t) == REFERENCE_TYPE && REFERENCE_VLA_OK (t))
 	    && array_of_runtime_bound_p (type)
 	    && (flag_iso || warn_vla > 0))
Index: gcc/cp/semantics.c
===================================================================
--- gcc/cp/semantics.c	(revision 212639)
+++ gcc/cp/semantics.c	(working copy)
@@ -1611,7 +1611,7 @@
 force_paren_expr (tree expr)
 {
   /* This is only needed for decltype(auto) in C++14.  */
-  if (cxx_dialect < cxx1y)
+  if (cxx_dialect < cxx14)
     return expr;
 
   /* If we're in unevaluated context, we can't be deducing a
@@ -7051,7 +7051,7 @@
 	}
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     {
       if (complain & tf_warning_or_error)
Index: gcc/cp/typeck.c
===================================================================
--- gcc/cp/typeck.c	(revision 212639)
+++ gcc/cp/typeck.c	(working copy)
@@ -1148,7 +1148,7 @@
 
   /* In C++14 we can end up comparing 'auto' to a normal template
      parameter.  Don't confuse them.  */
-  if (cxx_dialect >= cxx1y && (is_auto (t1) || is_auto (t2)))
+  if (cxx_dialect >= cxx14 && (is_auto (t1) || is_auto (t2)))
     return TYPE_IDENTIFIER (t1) == TYPE_IDENTIFIER (t2);
 
   return true;
@@ -1558,7 +1558,7 @@
       return value;
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     {
       if (complain & tf_warning_or_error)
@@ -5493,7 +5493,7 @@
 
   if (argtype != error_mark_node)
     {
-      if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (argtype)
+      if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (argtype)
 	  && (flag_iso || warn_vla > 0))
 	{
 	  if (complain & tf_warning_or_error)
@@ -6315,7 +6315,7 @@
       /* In C++14 mode, this interacts badly with force_paren_expr.  And it
 	 isn't necessary in any mode, because the code below handles
 	 glvalues properly.  For 4.9, just skip it in C++14 mode.  */
-      if (cxx_dialect < cxx1y && REFERENCE_REF_P (expr))
+      if (cxx_dialect < cxx14 && REFERENCE_REF_P (expr))
 	expr = TREE_OPERAND (expr, 0);
 
       if ((TREE_CODE (type) == REFERENCE_TYPE
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi	(revision 212639)
+++ gcc/doc/invoke.texi	(working copy)
@@ -1719,13 +1719,23 @@
 GNU dialect of @option{-std=c++11}.
 The name @samp{gnu++0x} is deprecated.
 
-@item c++1y
+@item c++14
+@itemx c++1y
+The 2014 ISO C++ standard plus amendments.
+The name @samp{c++1y} is deprecated.
+
+@item gnu++14
+@itemx gnu++1y
+GNU dialect of @option{-std=c++14}.
+The name @samp{gnu++1y} is deprecated.
+
+@item c++1z
 The next revision of the ISO C++ standard, tentatively planned for
-2014.  Support is highly experimental, and will almost certainly
+2017.  Support is highly experimental, and will almost certainly
 change in incompatible ways in future releases.
 
-@item gnu++1y
-GNU dialect of @option{-std=c++1y}.  Support is highly experimental,
+@item gnu++1z
+GNU dialect of @option{-std=c++1z}.  Support is highly experimental,
 and will almost certainly change in incompatible ways in future
 releases.
 @end table
@@ -2683,7 +2693,7 @@
 as C++11 user-defined literal numeric suffixes.
 This is on by default for all pre-C++11 dialects and all GNU dialects:
 @option{-std=c++98}, @option{-std=gnu++98}, @option{-std=gnu++11},
-@option{-std=gnu++1y}.
+@option{-std=gnu++14}.
 This option is off by default
 for ISO C++11 onwards (@option{-std=c++11}, ...).
 @end table
@@ -5454,7 +5464,7 @@
 @opindex fsanitize=vla-bound
 This option instructs the compiler to check that the size of a variable
 length array is positive.  This option does not have any effect in
-@option{-std=c++1y} mode, as the standard requires the exception be thrown
+@option{-std=c++14} mode, as the standard requires the exception be thrown
 instead.
 
 @item -fsanitize=null
Index: gcc/testsuite/g++.dg/cpp0x/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/cplusplus.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp0x/cplusplus.C	(working copy)
@@ -0,0 +1,5 @@
+// { dg-do compile { target c++11 } }
+
+#if __cplusplus != 201103L
+#error
+#endif
Index: gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C	(working copy)
@@ -0,0 +1,5 @@
+// { dg-do compile { target c++0x } }
+
+#if __cplusplus != 201103L
+#error
+#endif
Index: gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 class [[deprecated]] A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C	(working copy)
@@ -1,5 +1,5 @@
 // DR 1586
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template <class T>
 void f (T* p)
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 constexpr auto f() { return (char)42; }
 #define SA(X) static_assert ((X),#X)
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn10.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn10.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn10.C	(working copy)
@@ -1,6 +1,6 @@
 // A template declared with auto should be declared with auto in an
 // explicit instantiation or explicit specialization, too.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f(T t) { return t; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn11.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn11.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn11.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return; } 		// OK, return type is void
 auto* g() { return; }		// { dg-error "no value" }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn12.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn12.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn12.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-final { scan-assembler "_ZN1AIiEcvDaEv" } }
 
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn13.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn13.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn13.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A {
   template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn14.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn14.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn14.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/56177
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f ();
 auto f () { return 33; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn15.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn15.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn15.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-Wno-return-local-addr" }
 
 template<class,class> struct same_type;
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn16.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn16.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn16.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<class,class> struct ST;
 template<class T> struct ST<T,T> {};
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn17.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn17.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn17.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int c;
 int d;
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn18.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn18.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn18.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn19.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn19.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn19.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f() { return T::i; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn2.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn2.C	(working copy)
@@ -1,3 +1,3 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return f(); }	// { dg-error "auto" }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn20.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn20.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn20.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f(T) { return 42; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn21.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn21.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn21.C	(working copy)
@@ -1,5 +1,5 @@
 // N3638: decltype(auto) must stand alone
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f();
 decltype(auto) g1() { return &f; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn22.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn22.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn22.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn23.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn23.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn23.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58561
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-g" }
 
 auto foo();
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn24.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn24.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn24.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60314
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-g" }
 
 // fine
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn25.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn25.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60574
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-require-effective-target lto }
 // { dg-options "-flto" }
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn3.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn3.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 bool b;
 auto f()
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn4.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn4.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 constexpr auto f(T t) { return t+1; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn5.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn5.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i;
 auto& f() { return i; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn6.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn6.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn6.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T, class U> struct ST;
 template <class T> struct ST<T,T> {};
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn7.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn7.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn7.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f();
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn8.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn8.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return 42; }		// { dg-message "old declaration .auto" }
 auto f();			// OK
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn9.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn9.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-final { scan-assembler "_Z1fIiERDaRKT_S1_" } }
 
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C	(working copy)
@@ -1,5 +1,5 @@
 // Mangling for decltype(auto)
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f();
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-neg1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-neg1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/auto-neg1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60312
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> struct A;
 
Index: gcc/testsuite/g++.dg/cpp1y/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/cplusplus.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/cplusplus.C	(working copy)
@@ -1,5 +1,5 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
-#if __cplusplus <= 201103L
+#if __cplusplus != 201402L
 #error
 #endif
Index: gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C	(working copy)
@@ -0,0 +1,6 @@
+// { dg-do compile { target c++1y } }
+
+#if __cplusplus != 201402L
+#error
+#endif
+
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target { ! c++1y } } }
+// { dg-do compile { target { ! c++14 } } }
 
 #define assert(E) if(!(E))__builtin_abort();
 
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 main()
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #define assert(E) if(!(E))__builtin_abort();
 
Index: gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C	(working copy)
@@ -1,5 +1,5 @@
 // Out-of-line generic member function definitions.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C	(working copy)
@@ -1,7 +1,7 @@
 // Testcase for an extension to allow return type deduction when the lambda
 // contains more than just a single return-statement.
 
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 bool b;
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda conversion to function ptr test from N3690 5.1.2.6
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void f1(int (*)(int)) { }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda type dependence test part from N3690 5.1.2.12
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f(int, const int (&)[2] = {}) { } // #1
 void f(const int&, const int (&)[1]) { } // #2
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C	(working copy)
@@ -1,5 +1,5 @@
 // Mixed explicit and implicit generic lambda test.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C	(working copy)
@@ -1,6 +1,6 @@
 // Ensure that generic lambdas properly construct and destroy user types.
 // { dg-options "-DUSE_AUTO_SYNTAX" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i = 3;
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C	(working copy)
@@ -1,5 +1,5 @@
 // Basic generic lambda test
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template <typename T, typename U> struct pair {};
 template <typename... T> struct tuple {};
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59271
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 extern "C" int printf (const char *, ...);
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C	(working copy)
@@ -1,5 +1,5 @@
 // Explicit generic lambda test from N3690 5.1.2.5
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <iostream>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C	(working copy)
@@ -1,5 +1,5 @@
 // Explicit generic lambda conversion to function ptr test from N3690 5.1.2.6
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void f1(int (*)(int)) { }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C	(working copy)
@@ -1,5 +1,5 @@
 // Ensure that generic lambdas properly construct and destroy user types.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-DUSE_EXPLICIT_TEMPLATE_SYNTAX" }
 
 #include "lambda-generic-udt.C"
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda test from N3690 5.1.2.5
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <iostream>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init.C	(working copy)
@@ -1,5 +1,5 @@
-// Test for the explicit initializer extension of C++1y
-// { dg-do compile { target c++1y } }
+// Test for the explicit initializer extension of C++14
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init1.C	(working copy)
@@ -1,6 +1,6 @@
 // N3648: capture init
 // { dg-options "-w" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init2.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init2.C	(working copy)
@@ -1,5 +1,5 @@
 // N3648: redundancy and capture init
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init3.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init3.C	(working copy)
@@ -1,6 +1,6 @@
 // N3648: capture init at non-block scope
 // { dg-options "-w" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i = 42;
 int j = [x=i]{ return x; }();
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init4.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init4.C	(working copy)
@@ -1,5 +1,5 @@
 // N3648: capture init example from paper
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int x = 4;
 auto y = [&r = x, x = x+1]()->int {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init5.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init5.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for paren and brace initializers
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <initializer_list>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init6.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init6.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init6.C	(working copy)
@@ -1,5 +1,5 @@
 // Test that captures are not named in the closure type.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init7.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init7.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59349
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int foo () {
   [bar()]{};			// { dg-error "empty initializer" }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init8.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init8.C	(working copy)
@@ -1,5 +1,5 @@
 // DR1760: "no additional copy and destruction is performed"
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <cassert>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init9.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init9.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f()
 {
Index: gcc/testsuite/g++.dg/cpp1y/mangle1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/mangle1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/mangle1.C	(working copy)
@@ -1,5 +1,5 @@
 // Test that the parens don't show up in the mangling
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-Wno-return-local-addr" }
 // { dg-final { scan-assembler "_Z1gI1AEDTdtfp_1iET_" } }
 
Index: gcc/testsuite/g++.dg/cpp1y/pr57640.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr57640.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr57640.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <chrono>
 
Index: gcc/testsuite/g++.dg/cpp1y/pr57644.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr57644.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr57644.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct Foo
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr58500.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58500.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr58500.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58500
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {};
Index: gcc/testsuite/g++.dg/cpp1y/pr58533.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58533.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr58533.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58533
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr58534.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58534.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr58534.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58534
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template<typename> void foo(const auto&) {}
Index: gcc/testsuite/g++.dg/cpp1y/pr58535.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58535.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr58535.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58535
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr58536.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58536.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr58536.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58536
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr58548.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58548.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr58548.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58548
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto)
Index: gcc/testsuite/g++.dg/cpp1y/pr58549.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58549.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr58549.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58549
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto)
Index: gcc/testsuite/g++.dg/cpp1y/pr58637.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58637.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr58637.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/58637
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<> void foo(auto); // { dg-error "auto|not a template" }
Index: gcc/testsuite/g++.dg/cpp1y/pr58708.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58708.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr58708.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template<typename, typename>
   struct is_same
Index: gcc/testsuite/g++.dg/cpp1y/pr59110.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59110.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr59110.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59110
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int i = *(auto*)0; // { dg-error "" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59112.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59112.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr59112.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59112
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr59113.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59113.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr59113.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59113
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr59629.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59629.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr59629.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59629
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int i = []{ auto 0; }()); // { dg-error "expected|could not convert" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59635.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59635.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr59635.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59635
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = [] (auto, ...) { return 0; };
 
Index: gcc/testsuite/g++.dg/cpp1y/pr59636.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59636.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr59636.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59636
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = []() { return []<>() {}; };  // { dg-error "expected identifier" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59638.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59638.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr59638.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59638
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void (*a)(auto);         // { dg-error "template declaration" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59867.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59867.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr59867.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59867
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 using namespace std;
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60033.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60033.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60033.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60033
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <typename... T>
 auto f(T&&... ts)
Index: gcc/testsuite/g++.dg/cpp1y/pr60052.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60052.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60052.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60052
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60053.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60053.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60053.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60053
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60054.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60054.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60054.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60054
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename T> T fooA(T);
 template<typename T> decltype(T{}) fooB(T);
Index: gcc/testsuite/g++.dg/cpp1y/pr60064.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60064.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60064.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60064
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 class A
Index: gcc/testsuite/g++.dg/cpp1y/pr60065.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60065.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60065.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60065
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template <int> void foo(auto... x);
Index: gcc/testsuite/g++.dg/cpp1y/pr60190.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60190.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60190.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/60190
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = []<int>() -> int() {}; // { dg-error "returning a function|expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60311.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60311.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60311.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60311
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<void(*)(auto)> struct A {}; // { dg-error "auto" }
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60332.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60332.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60332.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60332
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo();
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60376.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60376.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60376.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60376
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr60377.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60377.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60377.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60377
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto, void (f*)()); // { dg-error "expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60384.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60384.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60384.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60384
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> int foo();
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60390.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60390.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60390.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60390
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60391.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60391.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60391.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60391
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 namespace N
Index: gcc/testsuite/g++.dg/cpp1y/pr60393.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60393.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60393.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60393
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void (*f)(auto) + 0; // { dg-error "expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60573.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60573.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60573.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60573
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60626.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60626.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60626.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60626
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {};
Index: gcc/testsuite/g++.dg/cpp1y/pr60627.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60627.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/pr60627.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60627
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template<typename T> void foo(T) {}
Index: gcc/testsuite/g++.dg/cpp1y/regress1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/regress1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/regress1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60409
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C	(working copy)
@@ -1,5 +1,5 @@
 // Origin: Dodji Seketeli <dodji@redhat.com>
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include "../system-binary-constants-1.h"
 
Index: gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target { c++11 && { ! c++1y } } } }
+// { dg-do compile { target { c++11 && { ! c++14 } } } }
 
 template<typename CharT, CharT... String>
   int
Index: gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename CharT, CharT... String>
   int
Index: gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 operator "*"_s(unsigned long long) // { dg-error "expected empty string after 'operator'" }
Index: gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 operator L""_Ls(unsigned long long) // { dg-error "invalid encoding prefix in literal operator" }
Index: gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include "complex_literals.h"
 
Index: gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <initializer_list>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla1.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <typeinfo>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla10.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla10.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla10.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/57402
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int i = 2;
 
Index: gcc/testsuite/g++.dg/cpp1y/vla11.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla11.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla11.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60251
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla12.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla12.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla12.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60250
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla13.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla13.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla13.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60227
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla2.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla2.C	(working copy)
@@ -1,5 +1,5 @@
 // N3639 allows initialization and capture of VLAs
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 void f(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla3.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla3.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for throwing bad_array_length on invalid array length
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <new>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla4.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla4.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for range-based for with VLAs.
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <new>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla5.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla5.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/55149
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void test(int n) {
   int r[n];
Index: gcc/testsuite/g++.dg/cpp1y/vla8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla8.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla8.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/55149
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<unsigned int TA>
  struct SA
Index: gcc/testsuite/g++.dg/cpp1y/vla9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla9.C	(revision 212639)
+++ gcc/testsuite/g++.dg/cpp1y/vla9.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/57408
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename Callable>
   struct Impl
Index: gcc/testsuite/g++.dg/cpp1z/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1z/cplusplus.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp1z/cplusplus.C	(working copy)
@@ -0,0 +1,5 @@
+// { dg-do compile { target c++1z } }
+
+#if __cplusplus <= 201402L
+#error
+#endif

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH, C++, CPP] Add C++1z to the preprocessor.  Rename C++1y to C++14.
  2014-07-16 15:02   ` Ed Smith-Rowland
@ 2014-07-16 16:22     ` Mike Stump
  2014-07-26 14:07       ` Ed Smith-Rowland
  2014-07-26 17:50       ` Ed Smith-Rowland
  0 siblings, 2 replies; 9+ messages in thread
From: Mike Stump @ 2014-07-16 16:22 UTC (permalink / raw)
  To: Ed Smith-Rowland; +Cc: gcc-patches, Jason Merrill

On Jul 16, 2014, at 7:51 AM, Ed Smith-Rowland <3dw4rd@verizon.net> wrote:
> 	Deprecate c++1y. Chane language to reflect greater confidence in C++14

Chane -> Change.  I looked at your patch, all seems fine.  I like the documentation edits you did, nice job.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH, C++, CPP] Add C++1z to the preprocessor.  Rename C++1y to C++14.
  2014-07-16 16:22     ` Mike Stump
@ 2014-07-26 14:07       ` Ed Smith-Rowland
  2014-08-22 20:36         ` Jason Merrill
  2014-07-26 17:50       ` Ed Smith-Rowland
  1 sibling, 1 reply; 9+ messages in thread
From: Ed Smith-Rowland @ 2014-07-26 14:07 UTC (permalink / raw)
  To: Mike Stump; +Cc: gcc-patches, Jason Merrill

[-- Attachment #1: Type: text/plain, Size: 416 bytes --]

On 07/16/2014 12:18 PM, Mike Stump wrote:
> On Jul 16, 2014, at 7:51 AM, Ed Smith-Rowland <3dw4rd@verizon.net> wrote:
>> 	Deprecate c++1y. Chane language to reflect greater confidence in C++14
> Chane -> Change.  I looked at your patch, all seems fine.  I like the documentation edits you did, nice job.
>
Here is another round - basically the same except testcases tweaked.

built and tested on x86_64-linux.

OK?


[-- Attachment #2: CL --]
[-- Type: text/plain, Size: 6355 bytes --]


libcpp/

2014-07-16  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* include/cpplib.h (enum c_lang): Add CLK_GNUCXX1Z, CLK_CXX1Z;
	Rename CLK_GNUCXX1Y, CLK_CXX1Y to CLK_GNUCXX14, CLK_CXX14;
	* init.c (struct lang_flags lang_defaults): Add column for trigraphs;
	Add rows for CLK_GNUCXX1Z, CLK_CXX1Z; (cpp_set_lang): Set trigraphs;
	(cpp_init_builtins): Set __cplusplus to 201402L for C++14;
	Set __cplusplus to 201500L for C++17.


gcc/c-family/

2014-07-16  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* c-common.h (enum cxx_dialect): Add cxx14.
	* c-opts.c (set_std_cxx1y): Rename to set_std_cxx14; Use cxx14.
	* c-ubsan.c (ubsan_instrument_shift): Change comment and logic from
	cxx_dialect == cxx11 || cxx_dialect == cxx1y to cxx_dialect >= cxx11.


gcc/cp/

2014-07-16  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* decl.c (compute_array_index_type, grokdeclarator,
	undeduced_auto_decl): Change from cxx1y to cxx14.
	* parser.c (cp_parser_unqualified_id, cp_parser_pseudo_destructor_name,
	cp_parser_lambda_introducer, cp_parser_lambda_declarator_opt,
	cp_parser_decltype, cp_parser_conversion_type_id,
	cp_parser_simple_type_specifier, cp_parser_type_id_1,
	cp_parser_template_type_arg, cp_parser_std_attribute,
	cp_parser_template_declaration_after_export): Ditto.
	* pt.c (tsubst): Ditto.
	* semantics.c (force_paren_expr, finish_decltype_type): Ditto.
	* typeck.c (comp_template_parms_position, cxx_sizeof_or_alignof_type,
	cp_build_addr_expr_1, maybe_warn_about_useless_cast): Ditto.


gcc/

2014-07-16  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* doc/invoke.texi: Change c++1y to c++14 and gnu++1y to gnu++14.
	Deprecate c++1y. Change language to reflect greater confidence in C++14.


gcc/testsuite/

2014-07-16  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* g++.dg/cpp0x/cplusplus.C: New.
	* g++.dg/cpp0x/cplusplus_0x.C: New.
	* g++.dg/cpp0x/auto3.C: Change c++1y to c++14.
	* g++.dg/cpp0x/auto41.C: Ditto.
	* g++.dg/cpp0x/auto9.C: Ditto.
	* g++.dg/cpp0x/initlist26.C: Ditto.
	* g++.dg/cpp0x/pr59111.C: Ditto.
	* g++.dg/cpp0x/trailing2.C: Ditto.
	* g++.dg/cpp1y/attr-deprecated.C: Ditto.
	* g++.dg/cpp1y/auto-dtor1.C: Ditto.
	* g++.dg/cpp1y/auto-fn1.C: Ditto.
	* g++.dg/cpp1y/auto-fn2.C: Ditto.
	* g++.dg/cpp1y/auto-fn3.C: Ditto.
	* g++.dg/cpp1y/auto-fn4.C: Ditto.
	* g++.dg/cpp1y/auto-fn5.C: Ditto.
	* g++.dg/cpp1y/auto-fn6.C: Ditto.
	* g++.dg/cpp1y/auto-fn7.C: Ditto.
	* g++.dg/cpp1y/auto-fn8.C: Ditto.
	* g++.dg/cpp1y/auto-fn9.C: Ditto.
	* g++.dg/cpp1y/auto-fn10.C: Ditto.
	* g++.dg/cpp1y/auto-fn11.C: Ditto.
	* g++.dg/cpp1y/auto-fn12.C: Ditto.
	* g++.dg/cpp1y/auto-fn13.C: Ditto.
	* g++.dg/cpp1y/auto-fn14.C: Ditto.
	* g++.dg/cpp1y/auto-fn15.C: Ditto.
	* g++.dg/cpp1y/auto-fn16.C: Ditto.
	* g++.dg/cpp1y/auto-fn17.C: Ditto.
	* g++.dg/cpp1y/auto-fn18.C: Ditto.
	* g++.dg/cpp1y/auto-fn19.C: Ditto.
	* g++.dg/cpp1y/auto-fn20.C: Ditto.
	* g++.dg/cpp1y/auto-fn21.C: Ditto.
	* g++.dg/cpp1y/auto-fn22.C: Ditto.
	* g++.dg/cpp1y/auto-fn23.C: Ditto.
	* g++.dg/cpp1y/auto-fn24.C: Ditto.
	* g++.dg/cpp1y/auto-fn25.C: Ditto.
	* g++.dg/cpp1y/auto-mangle1.C: Ditto.
	* g++.dg/cpp1y/auto-neg1.C: Ditto.
	* g++.dg/cpp1y/digit-sep.C: Ditto.
	* g++.dg/cpp1y/digit-sep-neg.C: Ditto.
	* g++.dg/cpp1y/digit-sep-cxx11-neg.C: Ditto.
	* g++.dg/cpp1y/fn-generic-member-ool.C: Ditto.
	* g++.dg/cpp1y/lambda-deduce-mult.C: Ditto.
	* g++.dg/cpp1y/lambda-generic.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-cfun.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-dep.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-mixed.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-udt.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-variadic.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-vla1.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-x.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-xcfun.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-xudt.C: Ditto.
	* g++.dg/cpp1y/lambda-init.C: Ditto.
	* g++.dg/cpp1y/lambda-init1.C: Ditto.
	* g++.dg/cpp1y/lambda-init2.C: Ditto.
	* g++.dg/cpp1y/lambda-init3.C: Ditto.
	* g++.dg/cpp1y/lambda-init4.C: Ditto.
	* g++.dg/cpp1y/lambda-init5.C: Ditto.
	* g++.dg/cpp1y/lambda-init6.C: Ditto.
	* g++.dg/cpp1y/lambda-init7.C: Ditto.
	* g++.dg/cpp1y/lambda-init8.C: Ditto.
	* g++.dg/cpp1y/lambda-init9.C: Ditto.
	* g++.dg/cpp1y/mangle1.C: Ditto.
	* g++.dg/cpp1y/pr57640.C: Ditto.
	* g++.dg/cpp1y/pr57644.C: Ditto.
	* g++.dg/cpp1y/pr58500.C: Ditto.
	* g++.dg/cpp1y/pr58533.C: Ditto.
	* g++.dg/cpp1y/pr58534.C: Ditto.
	* g++.dg/cpp1y/pr58535.C: Ditto.
	* g++.dg/cpp1y/pr58536.C: Ditto.
	* g++.dg/cpp1y/pr58548.C: Ditto.
	* g++.dg/cpp1y/pr58549.C: Ditto.
	* g++.dg/cpp1y/pr58637.C: Ditto.
	* g++.dg/cpp1y/pr58708.C: Ditto.
	* g++.dg/cpp1y/pr59110.C: Ditto.
	* g++.dg/cpp1y/pr59112.C: Ditto.
	* g++.dg/cpp1y/pr59113.C: Ditto.
	* g++.dg/cpp1y/pr59629.C: Ditto.
	* g++.dg/cpp1y/pr59635.C: Ditto.
	* g++.dg/cpp1y/pr59636.C: Ditto.
	* g++.dg/cpp1y/pr59638.C: Ditto.
	* g++.dg/cpp1y/pr59867.C: Ditto.
	* g++.dg/cpp1y/pr60033.C: Ditto.
	* g++.dg/cpp1y/pr60052.C: Ditto.
	* g++.dg/cpp1y/pr60053.C: Ditto.
	* g++.dg/cpp1y/pr60054.C: Ditto.
	* g++.dg/cpp1y/pr60064.C: Ditto.
	* g++.dg/cpp1y/pr60065.C: Ditto.
	* g++.dg/cpp1y/pr60190.C: Ditto.
	* g++.dg/cpp1y/pr60311.C: Ditto.
	* g++.dg/cpp1y/pr60332.C: Ditto.
	* g++.dg/cpp1y/pr60376.C: Ditto.
	* g++.dg/cpp1y/pr60377.C: Ditto.
	* g++.dg/cpp1y/pr60384.C: Ditto.
	* g++.dg/cpp1y/pr60390.C: Ditto.
	* g++.dg/cpp1y/pr60391.C: Ditto.
	* g++.dg/cpp1y/pr60393.C: Ditto.
	* g++.dg/cpp1y/pr60573.C: Ditto.
	* g++.dg/cpp1y/pr60626.C: Ditto.
	* g++.dg/cpp1y/pr60627.C: Ditto.
	* g++.dg/cpp1y/regress1.C: Ditto.
	* g++.dg/cpp1y/system-binary-constants-1.C: Ditto.
	* g++.dg/cpp1y/udlit-char-template.C: Ditto.
	* g++.dg/cpp1y/udlit-char-template-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-empty-string-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-enc-prefix-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-userdef-string.C: Ditto.
	* g++.dg/cpp1y/vla1.C: Ditto.
	* g++.dg/cpp1y/vla2.C: Ditto.
	* g++.dg/cpp1y/vla3.C: Ditto.
	* g++.dg/cpp1y/vla4.C: Ditto.
	* g++.dg/cpp1y/vla5.C: Ditto.
	* g++.dg/cpp1y/vla8.C: Ditto.
	* g++.dg/cpp1y/vla9.C: Ditto.
	* g++.dg/cpp1y/vla10.C: Ditto.
	* g++.dg/cpp1y/vla11.C: Ditto.
	* g++.dg/cpp1y/vla12.C: Ditto.
	* g++.dg/cpp1y/vla13.C: Ditto.
	* g++.dg/cpp1y/vla-initlist1.C: Ditto.
	* g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C: Ditto.
	* g++.dg/cpp1y/cplusplus.C: Check for exact date.
	* g++.dg/cpp1y/cplusplus_1y.C: New.
	* g++.dg/cpp1z/cplusplus.C: New.


[-- Attachment #3: patch_3 --]
[-- Type: text/plain, Size: 70841 bytes --]

Index: libcpp/include/cpplib.h
===================================================================
--- libcpp/include/cpplib.h	(revision 213071)
+++ libcpp/include/cpplib.h	(working copy)
@@ -166,7 +166,7 @@
 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_GNUCXX1Y, CLK_CXX1Y, CLK_ASM};
+	     CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX1Z, CLK_CXX1Z, CLK_ASM};
 
 /* Payload of a NUMBER, STRING, CHAR or COMMENT token.  */
 struct GTY(()) cpp_string {
Index: libcpp/init.c
===================================================================
--- libcpp/init.c	(revision 213071)
+++ libcpp/init.c	(working copy)
@@ -90,26 +90,29 @@
   char user_literals;
   char binary_constants;
   char digit_separators;
+  char trigraphs;
 };
 
 static const struct lang_flags lang_defaults[] =
-{ /*              c99 c++ xnum xid c11 std  //   digr ulit rlit udlit bin_cst dig_sep */
-  /* GNUC89   */  { 0,  0,  1,   0,  0,  0,   1,   1,   0,   0,   0,    0,      0 },
-  /* GNUC99   */  { 1,  0,  1,   0,  0,  0,   1,   1,   1,   1,   0,    0,      0 },
-  /* GNUC11   */  { 1,  0,  1,   0,  1,  0,   1,   1,   1,   1,   0,    0,      0 },
-  /* STDC89   */  { 0,  0,  0,   0,  0,  1,   0,   0,   0,   0,   0,    0,      0 },
-  /* STDC94   */  { 0,  0,  0,   0,  0,  1,   0,   1,   0,   0,   0,    0,      0 },
-  /* STDC99   */  { 1,  0,  1,   0,  0,  1,   1,   1,   0,   0,   0,    0,      0 },
-  /* STDC11   */  { 1,  0,  1,   0,  1,  1,   1,   1,   1,   0,   0,    0,      0 },
-  /* GNUCXX   */  { 0,  1,  1,   0,  0,  0,   1,   1,   0,   0,   0,    0,      0 },
-  /* CXX98    */  { 0,  1,  1,   0,  0,  1,   1,   1,   0,   0,   0,    0,      0 },
-  /* GNUCXX11 */  { 1,  1,  1,   0,  1,  0,   1,   1,   1,   1,   1,    0,      0 },
-  /* CXX11    */  { 1,  1,  1,   0,  1,  1,   1,   1,   1,   1,   1,    0,      0 },
-  /* GNUCXX1Y */  { 1,  1,  1,   0,  1,  0,   1,   1,   1,   1,   1,    1,      1 },
-  /* CXX1Y    */  { 1,  1,  1,   0,  1,  1,   1,   1,   1,   1,   1,    1,      1 },
-  /* ASM      */  { 0,  0,  1,   0,  0,  0,   1,   0,   0,   0,   0,    0,      0 }
+{ /*              c99 c++ xnum xid c11 std // digr ulit rlit udlit bincst digsep trig */
+  /* GNUC89   */  { 0,  0,  1,  0,  0,  0,  1,  1,  0,   0,   0,    0,     0,     0 },
+  /* GNUC99   */  { 1,  0,  1,  0,  0,  0,  1,  1,  1,   1,   0,    0,     0,     0 },
+  /* GNUC11   */  { 1,  0,  1,  0,  1,  0,  1,  1,  1,   1,   0,    0,     0,     0 },
+  /* STDC89   */  { 0,  0,  0,  0,  0,  1,  0,  0,  0,   0,   0,    0,     0,     1 },
+  /* STDC94   */  { 0,  0,  0,  0,  0,  1,  0,  1,  0,   0,   0,    0,     0,     1 },
+  /* STDC99   */  { 1,  0,  1,  0,  0,  1,  1,  1,  0,   0,   0,    0,     0,     1 },
+  /* STDC11   */  { 1,  0,  1,  0,  1,  1,  1,  1,  1,   0,   0,    0,     0,     1 },
+  /* GNUCXX   */  { 0,  1,  1,  0,  0,  0,  1,  1,  0,   0,   0,    0,     0,     0 },
+  /* CXX98    */  { 0,  1,  1,  0,  0,  1,  1,  1,  0,   0,   0,    0,     0,     1 },
+  /* GNUCXX11 */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    0,     0,     0 },
+  /* CXX11    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    0,     0,     1 },
+  /* GNUCXX14 */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* CXX14    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    1,     1,     1 },
+  /* GNUCXX1Z */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* CXX1Z    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* ASM      */  { 0,  0,  1,  0,  0,  0,  1,  0,  0,   0,   0,    0,     0,     0 }
   /* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX11, CXX11,
-     GNUCXX1Y, and CXX1Y when no longer experimental (when all uses of
+     GNUCXX14, and CXX14 when no longer experimental (when all uses of
      identifiers in the compiler have been audited for correct handling
      of extended identifiers).  */
 };
@@ -128,7 +131,6 @@
   CPP_OPTION (pfile, extended_identifiers)	 = l->extended_identifiers;
   CPP_OPTION (pfile, c11_identifiers)		 = l->c11_identifiers;
   CPP_OPTION (pfile, std)			 = l->std;
-  CPP_OPTION (pfile, trigraphs)			 = l->std;
   CPP_OPTION (pfile, cplusplus_comments)	 = l->cplusplus_comments;
   CPP_OPTION (pfile, digraphs)			 = l->digraphs;
   CPP_OPTION (pfile, uliterals)			 = l->uliterals;
@@ -136,6 +138,7 @@
   CPP_OPTION (pfile, user_literals)		 = l->user_literals;
   CPP_OPTION (pfile, binary_constants)		 = l->binary_constants;
   CPP_OPTION (pfile, digit_separators)		 = l->digit_separators;
+  CPP_OPTION (pfile, trigraphs)			 = l->trigraphs;
 }
 
 /* Initialize library global state.  */
@@ -489,9 +492,12 @@
 
   if (CPP_OPTION (pfile, cplusplus))
     {
-      if (CPP_OPTION (pfile, lang) == CLK_CXX1Y
-	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Y)
-	_cpp_define_builtin (pfile, "__cplusplus 201300L");
+      if (CPP_OPTION (pfile, lang) == CLK_CXX1Z
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Z)
+	_cpp_define_builtin (pfile, "__cplusplus 201500L");
+      else if (CPP_OPTION (pfile, lang) == CLK_CXX14
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX14)
+	_cpp_define_builtin (pfile, "__cplusplus 201402L");
       else if (CPP_OPTION (pfile, lang) == CLK_CXX11
 	       || CPP_OPTION (pfile, lang) == CLK_GNUCXX11)
 	_cpp_define_builtin (pfile, "__cplusplus 201103L");
Index: gcc/c-family/c-common.h
===================================================================
--- gcc/c-family/c-common.h	(revision 213071)
+++ gcc/c-family/c-common.h	(working copy)
@@ -640,8 +640,9 @@
   /* C++11  */
   cxx0x,
   cxx11 = cxx0x,
-  /* C++1y (C++14?) */
+  /* C++14  */
   cxx1y,
+  cxx14 = cxx1y,
   /* C++1z (C++17?) */
   cxx1z
 };
Index: gcc/c-family/c-opts.c
===================================================================
--- gcc/c-family/c-opts.c	(revision 213071)
+++ gcc/c-family/c-opts.c	(working copy)
@@ -115,7 +115,7 @@
 static void handle_OPT_d (const char *);
 static void set_std_cxx98 (int);
 static void set_std_cxx11 (int);
-static void set_std_cxx1y (int);
+static void set_std_cxx14 (int);
 static void set_std_cxx1z (int);
 static void set_std_c89 (int, int);
 static void set_std_c99 (int);
@@ -697,7 +697,7 @@
     case OPT_std_gnu__1y:
       if (!preprocessing_asm_p)
 	{
-	  set_std_cxx1y (code == OPT_std_c__1y /* ISO */);
+	  set_std_cxx14 (code == OPT_std_c__1y /* ISO */);
 	  if (code == OPT_std_c__1y)
 	    cpp_opts->ext_numeric_literals = 0;
 	}
@@ -1584,9 +1584,9 @@
 
 /* Set the C++ 201y draft standard (without GNU extensions if ISO).  */
 static void
-set_std_cxx1y (int iso)
+set_std_cxx14 (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
+  cpp_set_lang (parse_in, iso ? CLK_CXX14: CLK_GNUCXX14);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1593,7 +1593,7 @@
   /* C++11 includes the C99 standard library.  */
   flag_isoc94 = 1;
   flag_isoc99 = 1;
-  cxx_dialect = cxx1y;
+  cxx_dialect = cxx14;
 }
 
 /* Set the C++ 201z draft standard (without GNU extensions if ISO).  */
@@ -1600,7 +1600,7 @@
 static void
 set_std_cxx1z (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
+  cpp_set_lang (parse_in, iso ? CLK_CXX1Z: CLK_GNUCXX1Z);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1607,6 +1607,7 @@
   /* C++11 includes the C99 standard library.  */
   flag_isoc94 = 1;
   flag_isoc99 = 1;
+  flag_isoc11 = 1;
   cxx_dialect = cxx1z;
 }
 
Index: gcc/c-family/c-ubsan.c
===================================================================
--- gcc/c-family/c-ubsan.c	(revision 213071)
+++ gcc/c-family/c-ubsan.c	(working copy)
@@ -144,12 +144,12 @@
 			build_int_cst (TREE_TYPE (tt), 0));
     }
 
-  /* For signed x << y, in C++11/C++14, the following:
+  /* For signed x << y, in C++11 and later, the following:
      x < 0 || ((unsigned) x >> (precm1 - y))
      if > 1, is undefined.  */
   if (code == LSHIFT_EXPR
       && !TYPE_UNSIGNED (TREE_TYPE (op0))
-      && (cxx_dialect == cxx11 || cxx_dialect == cxx1y))
+      && (cxx_dialect >= cxx11))
     {
       tree x = fold_build2 (MINUS_EXPR, integer_type_node, precm1, op1);
       tt = fold_convert_loc (loc, unsigned_type_for (type0), op0);
Index: gcc/cp/decl.c
===================================================================
--- gcc/cp/decl.c	(revision 213071)
+++ gcc/cp/decl.c	(working copy)
@@ -8382,7 +8382,7 @@
 	   /* We don't allow VLAs at non-function scopes, or during
 	      tentative template substitution.  */
 	   || !at_function_scope_p ()
-	   || (cxx_dialect < cxx1y && !(complain & tf_error)))
+	   || (cxx_dialect < cxx14 && !(complain & tf_error)))
     {
       if (!(complain & tf_error))
 	return error_mark_node;
@@ -8394,7 +8394,7 @@
 	error ("size of array is not an integral constant-expression");
       size = integer_one_node;
     }
-  else if (cxx_dialect < cxx1y && pedantic && warn_vla != 0)
+  else if (cxx_dialect < cxx14 && pedantic && warn_vla != 0)
     {
       if (name)
 	pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array %qD", name);
@@ -8452,7 +8452,7 @@
 
 	  stabilize_vla_size (itype);
 
-	  if (cxx_dialect >= cxx1y && flag_exceptions)
+	  if (cxx_dialect >= cxx14 && flag_exceptions)
 	    {
 	      /* If the VLA bound is larger than half the address space,
 	         or less than zero, throw std::bad_array_length.  */
@@ -8597,7 +8597,7 @@
       return error_mark_node;
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     pedwarn (input_location, OPT_Wvla, "array of array of runtime bound");
 
@@ -9612,7 +9612,7 @@
 			if (current_class_type
 			    && LAMBDA_TYPE_P (current_class_type))
 			  /* OK for C++11 lambdas.  */;
-			else if (cxx_dialect < cxx1y)
+			else if (cxx_dialect < cxx14)
 			  {
 			    error ("%qs function uses "
 				   "%<auto%> type specifier without trailing "
@@ -9838,7 +9838,7 @@
                    : G_("cannot declare pointer to qualified function type %qT"),
 		   type);
 
-	  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+	  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
 	      && (flag_iso || warn_vla > 0))
 	    pedwarn (input_location, OPT_Wvla,
 		     declarator->kind == cdk_reference
@@ -10194,7 +10194,7 @@
 	  type = error_mark_node;
 	}
 
-      if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+      if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
 	  && (flag_iso || warn_vla > 0))
 	pedwarn (input_location, OPT_Wvla,
 		 "typedef naming array of runtime bound");
@@ -10440,7 +10440,7 @@
 
       if (type_uses_auto (type))
 	{
-	  if (cxx_dialect >= cxx1y)
+	  if (cxx_dialect >= cxx14)
 	    error ("%<auto%> parameter not permitted in this context");
 	  else
 	    error ("parameter declared %<auto%>");
@@ -14567,7 +14567,7 @@
 bool
 undeduced_auto_decl (tree decl)
 {
-  if (cxx_dialect < cxx1y)
+  if (cxx_dialect < cxx14)
     return false;
   return type_uses_auto (TREE_TYPE (decl));
 }
Index: gcc/cp/parser.c
===================================================================
--- gcc/cp/parser.c	(revision 213071)
+++ gcc/cp/parser.c	(working copy)
@@ -4978,7 +4978,7 @@
 	/* ~auto means the destructor of whatever the object is.  */
 	if (cp_parser_is_keyword (token, RID_AUTO))
 	  {
-	    if (cxx_dialect < cxx1y)
+	    if (cxx_dialect < cxx14)
 	      pedwarn (input_location, 0,
 		       "%<~auto%> only available with "
 		       "-std=c++1y or -std=gnu++1y");
@@ -6903,7 +6903,7 @@
       && cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_AUTO)
       && !type_dependent_expression_p (object))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	pedwarn (input_location, 0,
 		 "%<~auto%> only available with "
 		 "-std=c++1y or -std=gnu++1y");
@@ -9073,7 +9073,7 @@
 	{
 	  bool direct, non_constant;
 	  /* An explicit initializer exists.  */
-	  if (cxx_dialect < cxx1y)
+	  if (cxx_dialect < cxx14)
 	    pedwarn (input_location, 0,
 		     "lambda capture initializers "
 		     "only available with -std=c++1y or -std=gnu++1y");
@@ -9199,7 +9199,7 @@
      an opening angle if present.  */
   if (cp_lexer_next_token_is (parser->lexer, CPP_LESS))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	pedwarn (parser->lexer->next_token->location, 0,
 		 "lambda templates are only available with "
 		 "-std=c++1y or -std=gnu++1y");
@@ -12177,7 +12177,7 @@
     return error_mark_node;
 
   /* decltype (auto) */
-  if (cxx_dialect >= cxx1y
+  if (cxx_dialect >= cxx14
       && cp_lexer_next_token_is_keyword (parser->lexer, RID_AUTO))
     {
       cp_lexer_consume_token (parser->lexer);
@@ -12360,7 +12360,7 @@
   if (! cp_parser_uncommitted_to_tentative_parse_p (parser)
       && type_uses_auto (type_specified))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	{
 	  error ("invalid use of %<auto%> in conversion operator");
 	  return error_mark_node;
@@ -14721,13 +14721,13 @@
 
 	  if (current_class_type && LAMBDA_TYPE_P (current_class_type))
 	    {
-	      if (cxx_dialect < cxx1y)
+	      if (cxx_dialect < cxx14)
 		pedwarn (location_of (type), 0,
 			 "use of %<auto%> in lambda parameter declaration "
 			 "only available with "
 			 "-std=c++1y or -std=gnu++1y");
 	    }
-	  else if (cxx_dialect < cxx1y)
+	  else if (cxx_dialect < cxx14)
 	    pedwarn (location_of (type), 0,
 		     "use of %<auto%> in parameter declaration "
 		     "only available with "
@@ -18224,7 +18224,7 @@
   if (type_specifier_seq.type
       /* None of the valid uses of 'auto' in C++14 involve the type-id
 	 nonterminal, but it is valid in a trailing-return-type.  */
-      && !(cxx_dialect >= cxx1y && is_trailing_return)
+      && !(cxx_dialect >= cxx14 && is_trailing_return)
       && type_uses_auto (type_specifier_seq.type))
     {
       /* A type-id with type 'auto' is only ok if the abstract declarator
@@ -18257,7 +18257,7 @@
     = G_("types may not be defined in template arguments");
   r = cp_parser_type_id_1 (parser, true, false);
   parser->type_definition_forbidden_message = saved_message;
-  if (cxx_dialect >= cxx1y && type_uses_auto (r))
+  if (cxx_dialect >= cxx14 && type_uses_auto (r))
     {
       error ("invalid use of %<auto%> in template argument");
       r = error_mark_node;
@@ -22113,7 +22113,7 @@
       if (is_attribute_p ("noreturn", attr_id))
 	TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu");
       /* C++14 deprecated attribute is equivalent to GNU's.  */
-      else if (cxx_dialect >= cxx1y && is_attribute_p ("deprecated", attr_id))
+      else if (cxx_dialect >= cxx14 && is_attribute_p ("deprecated", attr_id))
 	TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu");
     }
 
@@ -23326,7 +23326,7 @@
 		  || !TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm)))
 		ok = false;
 	    }
-	  else if (num_parms == 2 && cxx_dialect >= cxx1y)
+	  else if (num_parms == 2 && cxx_dialect >= cxx14)
 	    {
 	      tree parm_type = TREE_VEC_ELT (parameter_list, 0);
 	      tree type = INNERMOST_TEMPLATE_PARMS (parm_type);
@@ -23341,7 +23341,7 @@
 	}
       if (!ok)
 	{
-	  if (cxx_dialect >= cxx1y)
+	  if (cxx_dialect >= cxx14)
 	    error ("literal operator template %qD has invalid parameter list."
 		   "  Expected non-type template argument pack <char...>"
 		   " or <typename CharT, CharT...>",
Index: gcc/cp/pt.c
===================================================================
--- gcc/cp/pt.c	(revision 213071)
+++ gcc/cp/pt.c	(working copy)
@@ -12043,7 +12043,7 @@
 	  r = cp_build_reference_type (type, TYPE_REF_IS_RVALUE (t));
 	r = cp_build_qualified_type_real (r, cp_type_quals (t), complain);
 
-	if (cxx_dialect >= cxx1y
+	if (cxx_dialect >= cxx14
 	    && !(TREE_CODE (t) == REFERENCE_TYPE && REFERENCE_VLA_OK (t))
 	    && array_of_runtime_bound_p (type)
 	    && (flag_iso || warn_vla > 0))
Index: gcc/cp/semantics.c
===================================================================
--- gcc/cp/semantics.c	(revision 213071)
+++ gcc/cp/semantics.c	(working copy)
@@ -1611,7 +1611,7 @@
 force_paren_expr (tree expr)
 {
   /* This is only needed for decltype(auto) in C++14.  */
-  if (cxx_dialect < cxx1y)
+  if (cxx_dialect < cxx14)
     return expr;
 
   /* If we're in unevaluated context, we can't be deducing a
@@ -7051,7 +7051,7 @@
 	}
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     {
       if (complain & tf_warning_or_error)
Index: gcc/cp/typeck.c
===================================================================
--- gcc/cp/typeck.c	(revision 213071)
+++ gcc/cp/typeck.c	(working copy)
@@ -1148,7 +1148,7 @@
 
   /* In C++14 we can end up comparing 'auto' to a normal template
      parameter.  Don't confuse them.  */
-  if (cxx_dialect >= cxx1y && (is_auto (t1) || is_auto (t2)))
+  if (cxx_dialect >= cxx14 && (is_auto (t1) || is_auto (t2)))
     return TYPE_IDENTIFIER (t1) == TYPE_IDENTIFIER (t2);
 
   return true;
@@ -1558,7 +1558,7 @@
       return value;
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     {
       if (complain & tf_warning_or_error)
@@ -5493,7 +5493,7 @@
 
   if (argtype != error_mark_node)
     {
-      if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (argtype)
+      if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (argtype)
 	  && (flag_iso || warn_vla > 0))
 	{
 	  if (complain & tf_warning_or_error)
@@ -6315,7 +6315,7 @@
       /* In C++14 mode, this interacts badly with force_paren_expr.  And it
 	 isn't necessary in any mode, because the code below handles
 	 glvalues properly.  For 4.9, just skip it in C++14 mode.  */
-      if (cxx_dialect < cxx1y && REFERENCE_REF_P (expr))
+      if (cxx_dialect < cxx14 && REFERENCE_REF_P (expr))
 	expr = TREE_OPERAND (expr, 0);
 
       if ((TREE_CODE (type) == REFERENCE_TYPE
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi	(revision 213071)
+++ gcc/doc/invoke.texi	(working copy)
@@ -1719,13 +1719,23 @@
 GNU dialect of @option{-std=c++11}.
 The name @samp{gnu++0x} is deprecated.
 
-@item c++1y
+@item c++14
+@itemx c++1y
+The 2014 ISO C++ standard plus amendments.
+The name @samp{c++1y} is deprecated.
+
+@item gnu++14
+@itemx gnu++1y
+GNU dialect of @option{-std=c++14}.
+The name @samp{gnu++1y} is deprecated.
+
+@item c++1z
 The next revision of the ISO C++ standard, tentatively planned for
-2014.  Support is highly experimental, and will almost certainly
+2017.  Support is highly experimental, and will almost certainly
 change in incompatible ways in future releases.
 
-@item gnu++1y
-GNU dialect of @option{-std=c++1y}.  Support is highly experimental,
+@item gnu++1z
+GNU dialect of @option{-std=c++1z}.  Support is highly experimental,
 and will almost certainly change in incompatible ways in future
 releases.
 @end table
@@ -2683,7 +2693,7 @@
 as C++11 user-defined literal numeric suffixes.
 This is on by default for all pre-C++11 dialects and all GNU dialects:
 @option{-std=c++98}, @option{-std=gnu++98}, @option{-std=gnu++11},
-@option{-std=gnu++1y}.
+@option{-std=gnu++14}.
 This option is off by default
 for ISO C++11 onwards (@option{-std=c++11}, ...).
 @end table
@@ -5454,7 +5464,7 @@
 @opindex fsanitize=vla-bound
 This option instructs the compiler to check that the size of a variable
 length array is positive.  This option does not have any effect in
-@option{-std=c++1y} mode, as the standard requires the exception be thrown
+@option{-std=c++14} mode, as the standard requires the exception be thrown
 instead.
 
 @item -fsanitize=null
Index: gcc/testsuite/g++.dg/cpp0x/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/cplusplus.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp0x/cplusplus.C	(working copy)
@@ -0,0 +1,5 @@
+// { dg-do compile { target c++11_only } }
+
+#if __cplusplus != 201103L
+#error "__cplusplus != 201103L"
+#endif
Index: gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C	(working copy)
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+#if __cplusplus != 201103L
+#error "__cplusplus != 201103L"
+#endif
Index: gcc/testsuite/g++.dg/cpp0x/auto3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/auto3.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/auto3.C	(working copy)
@@ -19,7 +19,7 @@
 // CWG issue 625
 A<auto> A2 = A1;		// { dg-error "" }
 
-auto foo() { }			// { dg-error "auto" "" { target { ! c++1y } } }
+auto foo() { }			// { dg-error "auto" "" { target { ! c++14 } } }
 
 void bar(auto i)		// { dg-error "incomplete|auto" }
 {
Index: gcc/testsuite/g++.dg/cpp0x/auto41.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/auto41.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/auto41.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58550
 // { dg-do compile { target c++11 } }
 
-auto foo();			// { dg-error "auto" "" { target { ! c++1y } } }
-auto fp = foo;			// { dg-error "auto" "" { target c++1y } }
+auto foo();			// { dg-error "auto" "" { target { ! c++14 } } }
+auto fp = foo;			// { dg-error "auto" "" { target c++14 } }
Index: gcc/testsuite/g++.dg/cpp0x/auto9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/auto9.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/auto9.C	(working copy)
@@ -15,13 +15,13 @@
 
 struct A
 {
-  operator auto ();				// { dg-error "auto" "" { target { ! c++1y } } }
-  operator auto *();				// { dg-error "auto" "" { target { ! c++1y } } }
+  operator auto ();				// { dg-error "auto" "" { target { ! c++14 } } }
+  operator auto *();				// { dg-error "auto" "" { target { ! c++14 } } }
 };
 
 struct A2
 {
-  operator auto () -> int;			// { dg-error "invalid use of" "" { target { ! c++1y } } }
+  operator auto () -> int;			// { dg-error "invalid use of" "" { target { ! c++14 } } }
   operator auto *() -> int;			// { dg-error "auto" }
 };
 
@@ -98,8 +98,8 @@
 template <typename T = auto> struct E {};	// { dg-error "invalid use of" }
 template <class T = auto *> struct F {};	// { dg-error "invalid use of|expected" }
 
-auto fnlate () -> auto;				// { dg-error "invalid use of" "" { target { ! c++1y } } }
-auto fnlate2 () -> auto *;			// { dg-error "invalid use of|expected" "" { target { ! c++1y } } }
+auto fnlate () -> auto;				// { dg-error "invalid use of" "" { target { ! c++14 } } }
+auto fnlate2 () -> auto *;			// { dg-error "invalid use of|expected" "" { target { ! c++14 } } }
 
 void
 badthrow () throw (auto)			// { dg-error "invalid use of" }
Index: gcc/testsuite/g++.dg/cpp0x/initlist26.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/initlist26.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/initlist26.C	(working copy)
@@ -1,6 +1,6 @@
 // PR c++/42059
 // { dg-do compile { target c++11 } }
-// { dg-options "" { target { ! c++1y } } }
+// { dg-options "" { target { ! c++14 } } }
 
 void
 foo (int i)
Index: gcc/testsuite/g++.dg/cpp0x/pr59111.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/pr59111.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/pr59111.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59111
 // { dg-do compile { target c++11 } }
 
-auto& foo();	// { dg-error "type specifier without trailing return type" "" { target { ! c++1y } } }
+auto& foo();	// { dg-error "type specifier without trailing return type" "" { target { ! c++14 } } }
 int i = foo();	// { dg-error "" }
Index: gcc/testsuite/g++.dg/cpp0x/trailing2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/trailing2.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/trailing2.C	(working copy)
@@ -3,7 +3,7 @@
 // { dg-do compile { target c++11 } }
 
 auto f1 () -> int;
-auto f2 ();		// { dg-error "without trailing return type" "" { target { ! c++1y } } }
+auto f2 ();		// { dg-error "without trailing return type" "" { target { ! c++14 } } }
 int f3 () -> int;	// { dg-error "trailing return type" }
 auto *f4 () -> int;	// { dg-error "trailing return type" }
 
@@ -10,7 +10,7 @@
 struct A
 {
   auto f5 () const -> int;
-  auto f6 ();		// { dg-error "without trailing return type" "" { target { ! c++1y } } }
+  auto f6 ();		// { dg-error "without trailing return type" "" { target { ! c++14 } } }
   int f7 () -> int;	// { dg-error "trailing return type" }
   auto *f8 () -> int;	// { dg-error "trailing return type" }
 };
Index: gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 class [[deprecated]] A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C	(working copy)
@@ -1,5 +1,5 @@
 // DR 1586
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template <class T>
 void f (T* p)
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 constexpr auto f() { return (char)42; }
 #define SA(X) static_assert ((X),#X)
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn10.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn10.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn10.C	(working copy)
@@ -1,6 +1,6 @@
 // A template declared with auto should be declared with auto in an
 // explicit instantiation or explicit specialization, too.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f(T t) { return t; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn11.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn11.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn11.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return; } 		// OK, return type is void
 auto* g() { return; }		// { dg-error "no value" }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn12.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn12.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn12.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-final { scan-assembler "_ZN1AIiEcvDaEv" } }
 
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn13.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn13.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn13.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A {
   template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn14.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn14.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn14.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/56177
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f ();
 auto f () { return 33; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn15.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn15.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn15.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-Wno-return-local-addr" }
 
 template<class,class> struct same_type;
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn16.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn16.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn16.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<class,class> struct ST;
 template<class T> struct ST<T,T> {};
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn17.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn17.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn17.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int c;
 int d;
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn18.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn18.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn18.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn19.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn19.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn19.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f() { return T::i; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn2.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn2.C	(working copy)
@@ -1,3 +1,3 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return f(); }	// { dg-error "auto" }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn20.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn20.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn20.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f(T) { return 42; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn21.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn21.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn21.C	(working copy)
@@ -1,5 +1,5 @@
 // N3638: decltype(auto) must stand alone
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f();
 decltype(auto) g1() { return &f; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn22.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn22.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn22.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn23.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn23.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn23.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58561
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-g" }
 
 auto foo();
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn24.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn24.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn24.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60314
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-g" }
 
 // fine
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn25.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn25.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60574
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-require-effective-target lto }
 // { dg-options "-flto" }
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn3.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn3.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 bool b;
 auto f()
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn4.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn4.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 constexpr auto f(T t) { return t+1; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn5.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn5.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i;
 auto& f() { return i; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn6.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn6.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn6.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T, class U> struct ST;
 template <class T> struct ST<T,T> {};
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn7.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn7.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn7.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f();
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn8.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn8.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return 42; }		// { dg-message "old declaration .auto" }
 auto f();			// OK
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn9.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn9.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-final { scan-assembler "_Z1fIiERDaRKT_S1_" } }
 
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C	(working copy)
@@ -1,5 +1,5 @@
 // Mangling for decltype(auto)
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f();
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-neg1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-neg1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-neg1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60312
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> struct A;
 
Index: gcc/testsuite/g++.dg/cpp1y/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/cplusplus.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/cplusplus.C	(working copy)
@@ -1,5 +1,5 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14_only } }
 
-#if __cplusplus <= 201103L
-#error
+#if __cplusplus != 201402L
+#error "__cplusplus != 201402L"
 #endif
Index: gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C	(working copy)
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// { dg-options "-std=c++1y" }
+
+#if __cplusplus != 201402L
+#error "__cplusplus != 201402L"
+#endif
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target { ! c++1y } } }
+// { dg-do compile { target { ! c++14 } } }
 
 #define assert(E) if(!(E))__builtin_abort();
 
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 main()
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #define assert(E) if(!(E))__builtin_abort();
 
Index: gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C	(working copy)
@@ -1,5 +1,5 @@
 // Out-of-line generic member function definitions.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C	(working copy)
@@ -1,7 +1,7 @@
 // Testcase for an extension to allow return type deduction when the lambda
 // contains more than just a single return-statement.
 
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 bool b;
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda conversion to function ptr test from N3690 5.1.2.6
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void f1(int (*)(int)) { }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda type dependence test part from N3690 5.1.2.12
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f(int, const int (&)[2] = {}) { } // #1
 void f(const int&, const int (&)[1]) { } // #2
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C	(working copy)
@@ -1,5 +1,5 @@
 // Mixed explicit and implicit generic lambda test.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C	(working copy)
@@ -1,6 +1,6 @@
 // Ensure that generic lambdas properly construct and destroy user types.
 // { dg-options "-DUSE_AUTO_SYNTAX" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i = 3;
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C	(working copy)
@@ -1,5 +1,5 @@
 // Basic generic lambda test
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template <typename T, typename U> struct pair {};
 template <typename... T> struct tuple {};
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59271
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 extern "C" int printf (const char *, ...);
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C	(working copy)
@@ -1,5 +1,5 @@
 // Explicit generic lambda test from N3690 5.1.2.5
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <iostream>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C	(working copy)
@@ -1,5 +1,5 @@
 // Explicit generic lambda conversion to function ptr test from N3690 5.1.2.6
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void f1(int (*)(int)) { }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C	(working copy)
@@ -1,5 +1,5 @@
 // Ensure that generic lambdas properly construct and destroy user types.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-DUSE_EXPLICIT_TEMPLATE_SYNTAX" }
 
 #include "lambda-generic-udt.C"
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda test from N3690 5.1.2.5
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <iostream>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init.C	(working copy)
@@ -1,5 +1,5 @@
-// Test for the explicit initializer extension of C++1y
-// { dg-do compile { target c++1y } }
+// Test for the explicit initializer extension of C++14
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init1.C	(working copy)
@@ -1,6 +1,6 @@
 // N3648: capture init
 // { dg-options "-w" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init2.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init2.C	(working copy)
@@ -1,5 +1,5 @@
 // N3648: redundancy and capture init
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init3.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init3.C	(working copy)
@@ -1,6 +1,6 @@
 // N3648: capture init at non-block scope
 // { dg-options "-w" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i = 42;
 int j = [x=i]{ return x; }();
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init4.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init4.C	(working copy)
@@ -1,5 +1,5 @@
 // N3648: capture init example from paper
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int x = 4;
 auto y = [&r = x, x = x+1]()->int {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init5.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init5.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for paren and brace initializers
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <initializer_list>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init6.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init6.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init6.C	(working copy)
@@ -1,5 +1,5 @@
 // Test that captures are not named in the closure type.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init7.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init7.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59349
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int foo () {
   [bar()]{};			// { dg-error "empty initializer" }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init8.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init8.C	(working copy)
@@ -1,5 +1,5 @@
 // DR1760: "no additional copy and destruction is performed"
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <cassert>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init9.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init9.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f()
 {
Index: gcc/testsuite/g++.dg/cpp1y/mangle1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/mangle1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/mangle1.C	(working copy)
@@ -1,5 +1,5 @@
 // Test that the parens don't show up in the mangling
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-Wno-return-local-addr" }
 // { dg-final { scan-assembler "_Z1gI1AEDTdtfp_1iET_" } }
 
Index: gcc/testsuite/g++.dg/cpp1y/pr57640.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr57640.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr57640.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <chrono>
 
Index: gcc/testsuite/g++.dg/cpp1y/pr57644.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr57644.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr57644.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct Foo
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr58500.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58500.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58500.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58500
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {};
Index: gcc/testsuite/g++.dg/cpp1y/pr58533.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58533.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58533.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58533
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr58534.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58534.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58534.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58534
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template<typename> void foo(const auto&) {}
Index: gcc/testsuite/g++.dg/cpp1y/pr58535.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58535.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58535.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58535
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr58536.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58536.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58536.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58536
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr58548.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58548.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58548.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58548
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto)
Index: gcc/testsuite/g++.dg/cpp1y/pr58549.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58549.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58549.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58549
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto)
Index: gcc/testsuite/g++.dg/cpp1y/pr58637.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58637.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58637.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/58637
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<> void foo(auto); // { dg-error "auto|not a template" }
Index: gcc/testsuite/g++.dg/cpp1y/pr58708.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58708.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58708.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template<typename, typename>
   struct is_same
Index: gcc/testsuite/g++.dg/cpp1y/pr59110.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59110.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59110.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59110
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int i = *(auto*)0; // { dg-error "" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59112.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59112.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59112.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59112
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr59113.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59113.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59113.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59113
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr59629.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59629.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59629.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59629
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int i = []{ auto 0; }()); // { dg-error "expected|could not convert" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59635.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59635.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59635.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59635
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = [] (auto, ...) { return 0; };
 
Index: gcc/testsuite/g++.dg/cpp1y/pr59636.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59636.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59636.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59636
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = []() { return []<>() {}; };  // { dg-error "expected identifier" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59638.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59638.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59638.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59638
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void (*a)(auto);         // { dg-error "template declaration" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59867.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59867.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59867.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59867
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 using namespace std;
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60033.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60033.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60033.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60033
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <typename... T>
 auto f(T&&... ts)
Index: gcc/testsuite/g++.dg/cpp1y/pr60052.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60052.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60052.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60052
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60053.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60053.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60053.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60053
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60054.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60054.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60054.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60054
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename T> T fooA(T);
 template<typename T> decltype(T{}) fooB(T);
Index: gcc/testsuite/g++.dg/cpp1y/pr60064.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60064.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60064.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60064
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 class A
Index: gcc/testsuite/g++.dg/cpp1y/pr60065.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60065.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60065.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60065
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template <int> void foo(auto... x);
Index: gcc/testsuite/g++.dg/cpp1y/pr60190.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60190.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60190.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/60190
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = []<int>() -> int() {}; // { dg-error "returning a function|expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60311.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60311.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60311.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60311
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<void(*)(auto)> struct A {}; // { dg-error "auto" }
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60332.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60332.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60332.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60332
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo();
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60376.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60376.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60376.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60376
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr60377.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60377.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60377.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60377
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto, void (f*)()); // { dg-error "expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60384.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60384.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60384.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60384
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> int foo();
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60390.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60390.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60390.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60390
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60391.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60391.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60391.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60391
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 namespace N
Index: gcc/testsuite/g++.dg/cpp1y/pr60393.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60393.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60393.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60393
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void (*f)(auto) + 0; // { dg-error "expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60573.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60573.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60573.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60573
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60626.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60626.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60626.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60626
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {};
Index: gcc/testsuite/g++.dg/cpp1y/pr60627.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60627.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60627.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60627
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template<typename T> void foo(T) {}
Index: gcc/testsuite/g++.dg/cpp1y/regress1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/regress1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/regress1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60409
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C	(working copy)
@@ -1,5 +1,5 @@
 // Origin: Dodji Seketeli <dodji@redhat.com>
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include "../system-binary-constants-1.h"
 
Index: gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target { c++11 && { ! c++1y } } } }
+// { dg-do compile { target { c++11 && { ! c++14 } } } }
 
 template<typename CharT, CharT... String>
   int
Index: gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename CharT, CharT... String>
   int
Index: gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 operator "*"_s(unsigned long long) // { dg-error "expected empty string after 'operator'" }
Index: gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 operator L""_Ls(unsigned long long) // { dg-error "invalid encoding prefix in literal operator" }
Index: gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include "complex_literals.h"
 
Index: gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <initializer_list>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <typeinfo>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla10.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla10.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla10.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/57402
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int i = 2;
 
Index: gcc/testsuite/g++.dg/cpp1y/vla11.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla11.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla11.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60251
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla12.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla12.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla12.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60250
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla13.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla13.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla13.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60227
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla2.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla2.C	(working copy)
@@ -1,5 +1,5 @@
 // N3639 allows initialization and capture of VLAs
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 void f(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla3.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla3.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for throwing bad_array_length on invalid array length
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <new>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla4.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla4.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for range-based for with VLAs.
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <new>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla5.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla5.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/55149
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void test(int n) {
   int r[n];
Index: gcc/testsuite/g++.dg/cpp1y/vla8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla8.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla8.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/55149
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<unsigned int TA>
  struct SA
Index: gcc/testsuite/g++.dg/cpp1y/vla9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla9.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla9.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/57408
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename Callable>
   struct Impl
Index: gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y_down } }
+// { dg-do compile { target c++14_down } }
 // { dg-options "-pedantic" }
 
 template<typename T>
Index: gcc/testsuite/g++.dg/cpp1z/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1z/cplusplus.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp1z/cplusplus.C	(working copy)
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// { dg-options "-std=c++1z" }
+
+#if __cplusplus <= 201402L
+#error "__cplusplus <= 201402L"
+#endif

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH, C++, CPP] Add C++1z to the preprocessor.  Rename C++1y to C++14.
  2014-07-16 16:22     ` Mike Stump
  2014-07-26 14:07       ` Ed Smith-Rowland
@ 2014-07-26 17:50       ` Ed Smith-Rowland
  1 sibling, 0 replies; 9+ messages in thread
From: Ed Smith-Rowland @ 2014-07-26 17:50 UTC (permalink / raw)
  To: Mike Stump; +Cc: gcc-patches, Jason Merrill

[-- Attachment #1: Type: text/plain, Size: 461 bytes --]

On 07/16/2014 12:18 PM, Mike Stump wrote:
> On Jul 16, 2014, at 7:51 AM, Ed Smith-Rowland <3dw4rd@verizon.net> wrote:
>> 	Deprecate c++1y. Chane language to reflect greater confidence in C++14
> Chane -> Change.  I looked at your patch, all seems fine.  I like the documentation edits you did, nice job.
>
In the last patch I has missed a few testcases.  These are repaired and 
added to the patch.  Sorry for the noise.

built and tested on x86_64-linux.

OK?

[-- Attachment #2: CL --]
[-- Type: text/plain, Size: 6489 bytes --]


libcpp/

2014-07-26  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* include/cpplib.h (enum c_lang): Add CLK_GNUCXX1Z, CLK_CXX1Z;
	Rename CLK_GNUCXX1Y, CLK_CXX1Y to CLK_GNUCXX14, CLK_CXX14;
	* init.c (struct lang_flags lang_defaults): Add column for trigraphs;
	Add rows for CLK_GNUCXX1Z, CLK_CXX1Z; (cpp_set_lang): Set trigraphs;
	(cpp_init_builtins): Set __cplusplus to 201402L for C++14;
	Set __cplusplus to 201500L for C++17.


gcc/c-family/

2014-07-26  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* c-common.h (enum cxx_dialect): Add cxx14.
	* c-opts.c (set_std_cxx1y): Rename to set_std_cxx14; Use cxx14.
	* c-ubsan.c (ubsan_instrument_shift): Change comment and logic from
	cxx_dialect == cxx11 || cxx_dialect == cxx1y to cxx_dialect >= cxx11.


gcc/cp/

2014-07-26  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* decl.c (compute_array_index_type, grokdeclarator,
	undeduced_auto_decl): Change from cxx1y to cxx14.
	* parser.c (cp_parser_unqualified_id, cp_parser_pseudo_destructor_name,
	cp_parser_lambda_introducer, cp_parser_lambda_declarator_opt,
	cp_parser_decltype, cp_parser_conversion_type_id,
	cp_parser_simple_type_specifier, cp_parser_type_id_1,
	cp_parser_template_type_arg, cp_parser_std_attribute,
	cp_parser_template_declaration_after_export): Ditto.
	* pt.c (tsubst): Ditto.
	* semantics.c (force_paren_expr, finish_decltype_type): Ditto.
	* typeck.c (comp_template_parms_position, cxx_sizeof_or_alignof_type,
	cp_build_addr_expr_1, maybe_warn_about_useless_cast): Ditto.


gcc/

2014-07-26  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* doc/invoke.texi: Change c++1y to c++14 and gnu++1y to gnu++14.
	Deprecate c++1y. Change language to reflect greater confidence in C++14.


gcc/testsuite/

2014-07-26  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* g++.dg/cpp0x/cplusplus.C: New.
	* g++.dg/cpp0x/cplusplus_0x.C: New.
	* g++.dg/cpp0x/auto3.C: Change c++1y to c++14.
	* g++.dg/cpp0x/auto41.C: Ditto.
	* g++.dg/cpp0x/auto9.C: Ditto.
	* g++.dg/cpp0x/initlist26.C: Ditto.
	* g++.dg/cpp0x/pr59111.C: Ditto.
	* g++.dg/cpp0x/trailing2.C: Ditto.
	* g++.dg/cpp1y/attr-deprecated.C: Ditto.
	* g++.dg/cpp1y/auto-dtor1.C: Ditto.
	* g++.dg/cpp1y/auto-fn1.C: Ditto.
	* g++.dg/cpp1y/auto-fn2.C: Ditto.
	* g++.dg/cpp1y/auto-fn3.C: Ditto.
	* g++.dg/cpp1y/auto-fn4.C: Ditto.
	* g++.dg/cpp1y/auto-fn5.C: Ditto.
	* g++.dg/cpp1y/auto-fn6.C: Ditto.
	* g++.dg/cpp1y/auto-fn7.C: Ditto.
	* g++.dg/cpp1y/auto-fn8.C: Ditto.
	* g++.dg/cpp1y/auto-fn9.C: Ditto.
	* g++.dg/cpp1y/auto-fn10.C: Ditto.
	* g++.dg/cpp1y/auto-fn11.C: Ditto.
	* g++.dg/cpp1y/auto-fn12.C: Ditto.
	* g++.dg/cpp1y/auto-fn13.C: Ditto.
	* g++.dg/cpp1y/auto-fn14.C: Ditto.
	* g++.dg/cpp1y/auto-fn15.C: Ditto.
	* g++.dg/cpp1y/auto-fn16.C: Ditto.
	* g++.dg/cpp1y/auto-fn17.C: Ditto.
	* g++.dg/cpp1y/auto-fn18.C: Ditto.
	* g++.dg/cpp1y/auto-fn19.C: Ditto.
	* g++.dg/cpp1y/auto-fn20.C: Ditto.
	* g++.dg/cpp1y/auto-fn21.C: Ditto.
	* g++.dg/cpp1y/auto-fn22.C: Ditto.
	* g++.dg/cpp1y/auto-fn23.C: Ditto.
	* g++.dg/cpp1y/auto-fn24.C: Ditto.
	* g++.dg/cpp1y/auto-fn25.C: Ditto.
	* g++.dg/cpp1y/auto-mangle1.C: Ditto.
	* g++.dg/cpp1y/auto-neg1.C: Ditto.
	* g++.dg/cpp1y/digit-sep.C: Ditto.
	* g++.dg/cpp1y/digit-sep-neg.C: Ditto.
	* g++.dg/cpp1y/digit-sep-cxx11-neg.C: Ditto.
	* g++.dg/cpp1y/fn-generic-member-ool.C: Ditto.
	* g++.dg/cpp1y/lambda-deduce-mult.C: Ditto.
	* g++.dg/cpp1y/lambda-generic.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-cfun.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-dep.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-mixed.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-udt.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-variadic.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-vla1.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-x.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-xcfun.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-xudt.C: Ditto.
	* g++.dg/cpp1y/lambda-init.C: Ditto.
	* g++.dg/cpp1y/lambda-init1.C: Ditto.
	* g++.dg/cpp1y/lambda-init2.C: Ditto.
	* g++.dg/cpp1y/lambda-init3.C: Ditto.
	* g++.dg/cpp1y/lambda-init4.C: Ditto.
	* g++.dg/cpp1y/lambda-init5.C: Ditto.
	* g++.dg/cpp1y/lambda-init6.C: Ditto.
	* g++.dg/cpp1y/lambda-init7.C: Ditto.
	* g++.dg/cpp1y/lambda-init8.C: Ditto.
	* g++.dg/cpp1y/lambda-init9.C: Ditto.
	* g++.dg/cpp1y/mangle1.C: Ditto.
	* g++.dg/cpp1y/pr57640.C: Ditto.
	* g++.dg/cpp1y/pr57644.C: Ditto.
	* g++.dg/cpp1y/pr58500.C: Ditto.
	* g++.dg/cpp1y/pr58533.C: Ditto.
	* g++.dg/cpp1y/pr58534.C: Ditto.
	* g++.dg/cpp1y/pr58535.C: Ditto.
	* g++.dg/cpp1y/pr58536.C: Ditto.
	* g++.dg/cpp1y/pr58548.C: Ditto.
	* g++.dg/cpp1y/pr58549.C: Ditto.
	* g++.dg/cpp1y/pr58637.C: Ditto.
	* g++.dg/cpp1y/pr58708.C: Ditto.
	* g++.dg/cpp1y/pr59110.C: Ditto.
	* g++.dg/cpp1y/pr59112.C: Ditto.
	* g++.dg/cpp1y/pr59113.C: Ditto.
	* g++.dg/cpp1y/pr59629.C: Ditto.
	* g++.dg/cpp1y/pr59635.C: Ditto.
	* g++.dg/cpp1y/pr59636.C: Ditto.
	* g++.dg/cpp1y/pr59638.C: Ditto.
	* g++.dg/cpp1y/pr59867.C: Ditto.
	* g++.dg/cpp1y/pr60033.C: Ditto.
	* g++.dg/cpp1y/pr60052.C: Ditto.
	* g++.dg/cpp1y/pr60053.C: Ditto.
	* g++.dg/cpp1y/pr60054.C: Ditto.
	* g++.dg/cpp1y/pr60064.C: Ditto.
	* g++.dg/cpp1y/pr60065.C: Ditto.
	* g++.dg/cpp1y/pr60190.C: Ditto.
	* g++.dg/cpp1y/pr60311.C: Ditto.
	* g++.dg/cpp1y/pr60332.C: Ditto.
	* g++.dg/cpp1y/pr60376.C: Ditto.
	* g++.dg/cpp1y/pr60377.C: Ditto.
	* g++.dg/cpp1y/pr60384.C: Ditto.
	* g++.dg/cpp1y/pr60390.C: Ditto.
	* g++.dg/cpp1y/pr60391.C: Ditto.
	* g++.dg/cpp1y/pr60393.C: Ditto.
	* g++.dg/cpp1y/pr60573.C: Ditto.
	* g++.dg/cpp1y/pr60626.C: Ditto.
	* g++.dg/cpp1y/pr60627.C: Ditto.
	* g++.dg/cpp1y/regress1.C: Ditto.
	* g++.dg/cpp1y/system-binary-constants-1.C: Ditto.
	* g++.dg/cpp1y/udlit-char-template.C: Ditto.
	* g++.dg/cpp1y/udlit-char-template-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-empty-string-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-enc-prefix-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-userdef-string.C: Ditto.
	* g++.dg/cpp1y/vla1.C: Ditto.
	* g++.dg/cpp1y/vla2.C: Ditto.
	* g++.dg/cpp1y/vla3.C: Ditto.
	* g++.dg/cpp1y/vla4.C: Ditto.
	* g++.dg/cpp1y/vla5.C: Ditto.
	* g++.dg/cpp1y/vla8.C: Ditto.
	* g++.dg/cpp1y/vla9.C: Ditto.
	* g++.dg/cpp1y/vla10.C: Ditto.
	* g++.dg/cpp1y/vla11.C: Ditto.
	* g++.dg/cpp1y/vla12.C: Ditto.
	* g++.dg/cpp1y/vla13.C: Ditto.
	* g++.dg/cpp1y/vla-initlist1.C: Ditto.
	* g++.dg/ext/vector23.C: Ditto.
	* g++.dg/ext/vla11.C: Ditto.
	* g++.dg/warn/Wvla-2.C: Ditto.
	* g++.dg/debug/dwarf2/auto1.C: Ditto.
	* g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C: Ditto.
	* g++.dg/cpp1y/cplusplus.C: Check for exact date.
	* g++.dg/cpp1y/cplusplus_1y.C: New.
	* g++.dg/cpp1z/cplusplus.C: New.


[-- Attachment #3: patch_4 --]
[-- Type: text/plain, Size: 72581 bytes --]

Index: libcpp/include/cpplib.h
===================================================================
--- libcpp/include/cpplib.h	(revision 213071)
+++ libcpp/include/cpplib.h	(working copy)
@@ -166,7 +166,7 @@
 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_GNUCXX1Y, CLK_CXX1Y, CLK_ASM};
+	     CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX1Z, CLK_CXX1Z, CLK_ASM};
 
 /* Payload of a NUMBER, STRING, CHAR or COMMENT token.  */
 struct GTY(()) cpp_string {
Index: libcpp/init.c
===================================================================
--- libcpp/init.c	(revision 213071)
+++ libcpp/init.c	(working copy)
@@ -90,26 +90,29 @@
   char user_literals;
   char binary_constants;
   char digit_separators;
+  char trigraphs;
 };
 
 static const struct lang_flags lang_defaults[] =
-{ /*              c99 c++ xnum xid c11 std  //   digr ulit rlit udlit bin_cst dig_sep */
-  /* GNUC89   */  { 0,  0,  1,   0,  0,  0,   1,   1,   0,   0,   0,    0,      0 },
-  /* GNUC99   */  { 1,  0,  1,   0,  0,  0,   1,   1,   1,   1,   0,    0,      0 },
-  /* GNUC11   */  { 1,  0,  1,   0,  1,  0,   1,   1,   1,   1,   0,    0,      0 },
-  /* STDC89   */  { 0,  0,  0,   0,  0,  1,   0,   0,   0,   0,   0,    0,      0 },
-  /* STDC94   */  { 0,  0,  0,   0,  0,  1,   0,   1,   0,   0,   0,    0,      0 },
-  /* STDC99   */  { 1,  0,  1,   0,  0,  1,   1,   1,   0,   0,   0,    0,      0 },
-  /* STDC11   */  { 1,  0,  1,   0,  1,  1,   1,   1,   1,   0,   0,    0,      0 },
-  /* GNUCXX   */  { 0,  1,  1,   0,  0,  0,   1,   1,   0,   0,   0,    0,      0 },
-  /* CXX98    */  { 0,  1,  1,   0,  0,  1,   1,   1,   0,   0,   0,    0,      0 },
-  /* GNUCXX11 */  { 1,  1,  1,   0,  1,  0,   1,   1,   1,   1,   1,    0,      0 },
-  /* CXX11    */  { 1,  1,  1,   0,  1,  1,   1,   1,   1,   1,   1,    0,      0 },
-  /* GNUCXX1Y */  { 1,  1,  1,   0,  1,  0,   1,   1,   1,   1,   1,    1,      1 },
-  /* CXX1Y    */  { 1,  1,  1,   0,  1,  1,   1,   1,   1,   1,   1,    1,      1 },
-  /* ASM      */  { 0,  0,  1,   0,  0,  0,   1,   0,   0,   0,   0,    0,      0 }
+{ /*              c99 c++ xnum xid c11 std // digr ulit rlit udlit bincst digsep trig */
+  /* GNUC89   */  { 0,  0,  1,  0,  0,  0,  1,  1,  0,   0,   0,    0,     0,     0 },
+  /* GNUC99   */  { 1,  0,  1,  0,  0,  0,  1,  1,  1,   1,   0,    0,     0,     0 },
+  /* GNUC11   */  { 1,  0,  1,  0,  1,  0,  1,  1,  1,   1,   0,    0,     0,     0 },
+  /* STDC89   */  { 0,  0,  0,  0,  0,  1,  0,  0,  0,   0,   0,    0,     0,     1 },
+  /* STDC94   */  { 0,  0,  0,  0,  0,  1,  0,  1,  0,   0,   0,    0,     0,     1 },
+  /* STDC99   */  { 1,  0,  1,  0,  0,  1,  1,  1,  0,   0,   0,    0,     0,     1 },
+  /* STDC11   */  { 1,  0,  1,  0,  1,  1,  1,  1,  1,   0,   0,    0,     0,     1 },
+  /* GNUCXX   */  { 0,  1,  1,  0,  0,  0,  1,  1,  0,   0,   0,    0,     0,     0 },
+  /* CXX98    */  { 0,  1,  1,  0,  0,  1,  1,  1,  0,   0,   0,    0,     0,     1 },
+  /* GNUCXX11 */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    0,     0,     0 },
+  /* CXX11    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    0,     0,     1 },
+  /* GNUCXX14 */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* CXX14    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    1,     1,     1 },
+  /* GNUCXX1Z */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* CXX1Z    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* ASM      */  { 0,  0,  1,  0,  0,  0,  1,  0,  0,   0,   0,    0,     0,     0 }
   /* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX11, CXX11,
-     GNUCXX1Y, and CXX1Y when no longer experimental (when all uses of
+     GNUCXX14, and CXX14 when no longer experimental (when all uses of
      identifiers in the compiler have been audited for correct handling
      of extended identifiers).  */
 };
@@ -128,7 +131,6 @@
   CPP_OPTION (pfile, extended_identifiers)	 = l->extended_identifiers;
   CPP_OPTION (pfile, c11_identifiers)		 = l->c11_identifiers;
   CPP_OPTION (pfile, std)			 = l->std;
-  CPP_OPTION (pfile, trigraphs)			 = l->std;
   CPP_OPTION (pfile, cplusplus_comments)	 = l->cplusplus_comments;
   CPP_OPTION (pfile, digraphs)			 = l->digraphs;
   CPP_OPTION (pfile, uliterals)			 = l->uliterals;
@@ -136,6 +138,7 @@
   CPP_OPTION (pfile, user_literals)		 = l->user_literals;
   CPP_OPTION (pfile, binary_constants)		 = l->binary_constants;
   CPP_OPTION (pfile, digit_separators)		 = l->digit_separators;
+  CPP_OPTION (pfile, trigraphs)			 = l->trigraphs;
 }
 
 /* Initialize library global state.  */
@@ -489,9 +492,12 @@
 
   if (CPP_OPTION (pfile, cplusplus))
     {
-      if (CPP_OPTION (pfile, lang) == CLK_CXX1Y
-	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Y)
-	_cpp_define_builtin (pfile, "__cplusplus 201300L");
+      if (CPP_OPTION (pfile, lang) == CLK_CXX1Z
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Z)
+	_cpp_define_builtin (pfile, "__cplusplus 201500L");
+      else if (CPP_OPTION (pfile, lang) == CLK_CXX14
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX14)
+	_cpp_define_builtin (pfile, "__cplusplus 201402L");
       else if (CPP_OPTION (pfile, lang) == CLK_CXX11
 	       || CPP_OPTION (pfile, lang) == CLK_GNUCXX11)
 	_cpp_define_builtin (pfile, "__cplusplus 201103L");
Index: gcc/c-family/c-common.h
===================================================================
--- gcc/c-family/c-common.h	(revision 213071)
+++ gcc/c-family/c-common.h	(working copy)
@@ -640,8 +640,9 @@
   /* C++11  */
   cxx0x,
   cxx11 = cxx0x,
-  /* C++1y (C++14?) */
+  /* C++14  */
   cxx1y,
+  cxx14 = cxx1y,
   /* C++1z (C++17?) */
   cxx1z
 };
Index: gcc/c-family/c-opts.c
===================================================================
--- gcc/c-family/c-opts.c	(revision 213071)
+++ gcc/c-family/c-opts.c	(working copy)
@@ -115,7 +115,7 @@
 static void handle_OPT_d (const char *);
 static void set_std_cxx98 (int);
 static void set_std_cxx11 (int);
-static void set_std_cxx1y (int);
+static void set_std_cxx14 (int);
 static void set_std_cxx1z (int);
 static void set_std_c89 (int, int);
 static void set_std_c99 (int);
@@ -697,7 +697,7 @@
     case OPT_std_gnu__1y:
       if (!preprocessing_asm_p)
 	{
-	  set_std_cxx1y (code == OPT_std_c__1y /* ISO */);
+	  set_std_cxx14 (code == OPT_std_c__1y /* ISO */);
 	  if (code == OPT_std_c__1y)
 	    cpp_opts->ext_numeric_literals = 0;
 	}
@@ -1584,9 +1584,9 @@
 
 /* Set the C++ 201y draft standard (without GNU extensions if ISO).  */
 static void
-set_std_cxx1y (int iso)
+set_std_cxx14 (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
+  cpp_set_lang (parse_in, iso ? CLK_CXX14: CLK_GNUCXX14);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1593,7 +1593,7 @@
   /* C++11 includes the C99 standard library.  */
   flag_isoc94 = 1;
   flag_isoc99 = 1;
-  cxx_dialect = cxx1y;
+  cxx_dialect = cxx14;
 }
 
 /* Set the C++ 201z draft standard (without GNU extensions if ISO).  */
@@ -1600,7 +1600,7 @@
 static void
 set_std_cxx1z (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
+  cpp_set_lang (parse_in, iso ? CLK_CXX1Z: CLK_GNUCXX1Z);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1607,6 +1607,7 @@
   /* C++11 includes the C99 standard library.  */
   flag_isoc94 = 1;
   flag_isoc99 = 1;
+  flag_isoc11 = 1;
   cxx_dialect = cxx1z;
 }
 
Index: gcc/c-family/c-ubsan.c
===================================================================
--- gcc/c-family/c-ubsan.c	(revision 213071)
+++ gcc/c-family/c-ubsan.c	(working copy)
@@ -144,12 +144,12 @@
 			build_int_cst (TREE_TYPE (tt), 0));
     }
 
-  /* For signed x << y, in C++11/C++14, the following:
+  /* For signed x << y, in C++11 and later, the following:
      x < 0 || ((unsigned) x >> (precm1 - y))
      if > 1, is undefined.  */
   if (code == LSHIFT_EXPR
       && !TYPE_UNSIGNED (TREE_TYPE (op0))
-      && (cxx_dialect == cxx11 || cxx_dialect == cxx1y))
+      && (cxx_dialect >= cxx11))
     {
       tree x = fold_build2 (MINUS_EXPR, integer_type_node, precm1, op1);
       tt = fold_convert_loc (loc, unsigned_type_for (type0), op0);
Index: gcc/cp/decl.c
===================================================================
--- gcc/cp/decl.c	(revision 213071)
+++ gcc/cp/decl.c	(working copy)
@@ -8382,7 +8382,7 @@
 	   /* We don't allow VLAs at non-function scopes, or during
 	      tentative template substitution.  */
 	   || !at_function_scope_p ()
-	   || (cxx_dialect < cxx1y && !(complain & tf_error)))
+	   || (cxx_dialect < cxx14 && !(complain & tf_error)))
     {
       if (!(complain & tf_error))
 	return error_mark_node;
@@ -8394,7 +8394,7 @@
 	error ("size of array is not an integral constant-expression");
       size = integer_one_node;
     }
-  else if (cxx_dialect < cxx1y && pedantic && warn_vla != 0)
+  else if (cxx_dialect < cxx14 && pedantic && warn_vla != 0)
     {
       if (name)
 	pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array %qD", name);
@@ -8452,7 +8452,7 @@
 
 	  stabilize_vla_size (itype);
 
-	  if (cxx_dialect >= cxx1y && flag_exceptions)
+	  if (cxx_dialect >= cxx14 && flag_exceptions)
 	    {
 	      /* If the VLA bound is larger than half the address space,
 	         or less than zero, throw std::bad_array_length.  */
@@ -8597,7 +8597,7 @@
       return error_mark_node;
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     pedwarn (input_location, OPT_Wvla, "array of array of runtime bound");
 
@@ -9612,7 +9612,7 @@
 			if (current_class_type
 			    && LAMBDA_TYPE_P (current_class_type))
 			  /* OK for C++11 lambdas.  */;
-			else if (cxx_dialect < cxx1y)
+			else if (cxx_dialect < cxx14)
 			  {
 			    error ("%qs function uses "
 				   "%<auto%> type specifier without trailing "
@@ -9838,7 +9838,7 @@
                    : G_("cannot declare pointer to qualified function type %qT"),
 		   type);
 
-	  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+	  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
 	      && (flag_iso || warn_vla > 0))
 	    pedwarn (input_location, OPT_Wvla,
 		     declarator->kind == cdk_reference
@@ -10194,7 +10194,7 @@
 	  type = error_mark_node;
 	}
 
-      if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+      if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
 	  && (flag_iso || warn_vla > 0))
 	pedwarn (input_location, OPT_Wvla,
 		 "typedef naming array of runtime bound");
@@ -10440,7 +10440,7 @@
 
       if (type_uses_auto (type))
 	{
-	  if (cxx_dialect >= cxx1y)
+	  if (cxx_dialect >= cxx14)
 	    error ("%<auto%> parameter not permitted in this context");
 	  else
 	    error ("parameter declared %<auto%>");
@@ -14567,7 +14567,7 @@
 bool
 undeduced_auto_decl (tree decl)
 {
-  if (cxx_dialect < cxx1y)
+  if (cxx_dialect < cxx14)
     return false;
   return type_uses_auto (TREE_TYPE (decl));
 }
Index: gcc/cp/parser.c
===================================================================
--- gcc/cp/parser.c	(revision 213071)
+++ gcc/cp/parser.c	(working copy)
@@ -4978,7 +4978,7 @@
 	/* ~auto means the destructor of whatever the object is.  */
 	if (cp_parser_is_keyword (token, RID_AUTO))
 	  {
-	    if (cxx_dialect < cxx1y)
+	    if (cxx_dialect < cxx14)
 	      pedwarn (input_location, 0,
 		       "%<~auto%> only available with "
 		       "-std=c++1y or -std=gnu++1y");
@@ -6903,7 +6903,7 @@
       && cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_AUTO)
       && !type_dependent_expression_p (object))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	pedwarn (input_location, 0,
 		 "%<~auto%> only available with "
 		 "-std=c++1y or -std=gnu++1y");
@@ -9073,7 +9073,7 @@
 	{
 	  bool direct, non_constant;
 	  /* An explicit initializer exists.  */
-	  if (cxx_dialect < cxx1y)
+	  if (cxx_dialect < cxx14)
 	    pedwarn (input_location, 0,
 		     "lambda capture initializers "
 		     "only available with -std=c++1y or -std=gnu++1y");
@@ -9199,7 +9199,7 @@
      an opening angle if present.  */
   if (cp_lexer_next_token_is (parser->lexer, CPP_LESS))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	pedwarn (parser->lexer->next_token->location, 0,
 		 "lambda templates are only available with "
 		 "-std=c++1y or -std=gnu++1y");
@@ -12177,7 +12177,7 @@
     return error_mark_node;
 
   /* decltype (auto) */
-  if (cxx_dialect >= cxx1y
+  if (cxx_dialect >= cxx14
       && cp_lexer_next_token_is_keyword (parser->lexer, RID_AUTO))
     {
       cp_lexer_consume_token (parser->lexer);
@@ -12360,7 +12360,7 @@
   if (! cp_parser_uncommitted_to_tentative_parse_p (parser)
       && type_uses_auto (type_specified))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	{
 	  error ("invalid use of %<auto%> in conversion operator");
 	  return error_mark_node;
@@ -14721,13 +14721,13 @@
 
 	  if (current_class_type && LAMBDA_TYPE_P (current_class_type))
 	    {
-	      if (cxx_dialect < cxx1y)
+	      if (cxx_dialect < cxx14)
 		pedwarn (location_of (type), 0,
 			 "use of %<auto%> in lambda parameter declaration "
 			 "only available with "
 			 "-std=c++1y or -std=gnu++1y");
 	    }
-	  else if (cxx_dialect < cxx1y)
+	  else if (cxx_dialect < cxx14)
 	    pedwarn (location_of (type), 0,
 		     "use of %<auto%> in parameter declaration "
 		     "only available with "
@@ -18224,7 +18224,7 @@
   if (type_specifier_seq.type
       /* None of the valid uses of 'auto' in C++14 involve the type-id
 	 nonterminal, but it is valid in a trailing-return-type.  */
-      && !(cxx_dialect >= cxx1y && is_trailing_return)
+      && !(cxx_dialect >= cxx14 && is_trailing_return)
       && type_uses_auto (type_specifier_seq.type))
     {
       /* A type-id with type 'auto' is only ok if the abstract declarator
@@ -18257,7 +18257,7 @@
     = G_("types may not be defined in template arguments");
   r = cp_parser_type_id_1 (parser, true, false);
   parser->type_definition_forbidden_message = saved_message;
-  if (cxx_dialect >= cxx1y && type_uses_auto (r))
+  if (cxx_dialect >= cxx14 && type_uses_auto (r))
     {
       error ("invalid use of %<auto%> in template argument");
       r = error_mark_node;
@@ -22113,7 +22113,7 @@
       if (is_attribute_p ("noreturn", attr_id))
 	TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu");
       /* C++14 deprecated attribute is equivalent to GNU's.  */
-      else if (cxx_dialect >= cxx1y && is_attribute_p ("deprecated", attr_id))
+      else if (cxx_dialect >= cxx14 && is_attribute_p ("deprecated", attr_id))
 	TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu");
     }
 
@@ -23326,7 +23326,7 @@
 		  || !TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm)))
 		ok = false;
 	    }
-	  else if (num_parms == 2 && cxx_dialect >= cxx1y)
+	  else if (num_parms == 2 && cxx_dialect >= cxx14)
 	    {
 	      tree parm_type = TREE_VEC_ELT (parameter_list, 0);
 	      tree type = INNERMOST_TEMPLATE_PARMS (parm_type);
@@ -23341,7 +23341,7 @@
 	}
       if (!ok)
 	{
-	  if (cxx_dialect >= cxx1y)
+	  if (cxx_dialect >= cxx14)
 	    error ("literal operator template %qD has invalid parameter list."
 		   "  Expected non-type template argument pack <char...>"
 		   " or <typename CharT, CharT...>",
Index: gcc/cp/pt.c
===================================================================
--- gcc/cp/pt.c	(revision 213071)
+++ gcc/cp/pt.c	(working copy)
@@ -12043,7 +12043,7 @@
 	  r = cp_build_reference_type (type, TYPE_REF_IS_RVALUE (t));
 	r = cp_build_qualified_type_real (r, cp_type_quals (t), complain);
 
-	if (cxx_dialect >= cxx1y
+	if (cxx_dialect >= cxx14
 	    && !(TREE_CODE (t) == REFERENCE_TYPE && REFERENCE_VLA_OK (t))
 	    && array_of_runtime_bound_p (type)
 	    && (flag_iso || warn_vla > 0))
Index: gcc/cp/semantics.c
===================================================================
--- gcc/cp/semantics.c	(revision 213071)
+++ gcc/cp/semantics.c	(working copy)
@@ -1611,7 +1611,7 @@
 force_paren_expr (tree expr)
 {
   /* This is only needed for decltype(auto) in C++14.  */
-  if (cxx_dialect < cxx1y)
+  if (cxx_dialect < cxx14)
     return expr;
 
   /* If we're in unevaluated context, we can't be deducing a
@@ -7051,7 +7051,7 @@
 	}
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     {
       if (complain & tf_warning_or_error)
Index: gcc/cp/typeck.c
===================================================================
--- gcc/cp/typeck.c	(revision 213071)
+++ gcc/cp/typeck.c	(working copy)
@@ -1148,7 +1148,7 @@
 
   /* In C++14 we can end up comparing 'auto' to a normal template
      parameter.  Don't confuse them.  */
-  if (cxx_dialect >= cxx1y && (is_auto (t1) || is_auto (t2)))
+  if (cxx_dialect >= cxx14 && (is_auto (t1) || is_auto (t2)))
     return TYPE_IDENTIFIER (t1) == TYPE_IDENTIFIER (t2);
 
   return true;
@@ -1558,7 +1558,7 @@
       return value;
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     {
       if (complain & tf_warning_or_error)
@@ -5493,7 +5493,7 @@
 
   if (argtype != error_mark_node)
     {
-      if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (argtype)
+      if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (argtype)
 	  && (flag_iso || warn_vla > 0))
 	{
 	  if (complain & tf_warning_or_error)
@@ -6315,7 +6315,7 @@
       /* In C++14 mode, this interacts badly with force_paren_expr.  And it
 	 isn't necessary in any mode, because the code below handles
 	 glvalues properly.  For 4.9, just skip it in C++14 mode.  */
-      if (cxx_dialect < cxx1y && REFERENCE_REF_P (expr))
+      if (cxx_dialect < cxx14 && REFERENCE_REF_P (expr))
 	expr = TREE_OPERAND (expr, 0);
 
       if ((TREE_CODE (type) == REFERENCE_TYPE
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi	(revision 213071)
+++ gcc/doc/invoke.texi	(working copy)
@@ -1719,13 +1719,23 @@
 GNU dialect of @option{-std=c++11}.
 The name @samp{gnu++0x} is deprecated.
 
-@item c++1y
+@item c++14
+@itemx c++1y
+The 2014 ISO C++ standard plus amendments.
+The name @samp{c++1y} is deprecated.
+
+@item gnu++14
+@itemx gnu++1y
+GNU dialect of @option{-std=c++14}.
+The name @samp{gnu++1y} is deprecated.
+
+@item c++1z
 The next revision of the ISO C++ standard, tentatively planned for
-2014.  Support is highly experimental, and will almost certainly
+2017.  Support is highly experimental, and will almost certainly
 change in incompatible ways in future releases.
 
-@item gnu++1y
-GNU dialect of @option{-std=c++1y}.  Support is highly experimental,
+@item gnu++1z
+GNU dialect of @option{-std=c++1z}.  Support is highly experimental,
 and will almost certainly change in incompatible ways in future
 releases.
 @end table
@@ -2683,7 +2693,7 @@
 as C++11 user-defined literal numeric suffixes.
 This is on by default for all pre-C++11 dialects and all GNU dialects:
 @option{-std=c++98}, @option{-std=gnu++98}, @option{-std=gnu++11},
-@option{-std=gnu++1y}.
+@option{-std=gnu++14}.
 This option is off by default
 for ISO C++11 onwards (@option{-std=c++11}, ...).
 @end table
@@ -5454,7 +5464,7 @@
 @opindex fsanitize=vla-bound
 This option instructs the compiler to check that the size of a variable
 length array is positive.  This option does not have any effect in
-@option{-std=c++1y} mode, as the standard requires the exception be thrown
+@option{-std=c++14} mode, as the standard requires the exception be thrown
 instead.
 
 @item -fsanitize=null
Index: gcc/testsuite/g++.dg/cpp0x/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/cplusplus.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp0x/cplusplus.C	(working copy)
@@ -0,0 +1,5 @@
+// { dg-do compile { target c++11_only } }
+
+#if __cplusplus != 201103L
+#error "__cplusplus != 201103L"
+#endif
Index: gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C	(working copy)
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+#if __cplusplus != 201103L
+#error "__cplusplus != 201103L"
+#endif
Index: gcc/testsuite/g++.dg/cpp0x/auto3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/auto3.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/auto3.C	(working copy)
@@ -19,7 +19,7 @@
 // CWG issue 625
 A<auto> A2 = A1;		// { dg-error "" }
 
-auto foo() { }			// { dg-error "auto" "" { target { ! c++1y } } }
+auto foo() { }			// { dg-error "auto" "" { target { ! c++14 } } }
 
 void bar(auto i)		// { dg-error "incomplete|auto" }
 {
Index: gcc/testsuite/g++.dg/cpp0x/auto41.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/auto41.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/auto41.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58550
 // { dg-do compile { target c++11 } }
 
-auto foo();			// { dg-error "auto" "" { target { ! c++1y } } }
-auto fp = foo;			// { dg-error "auto" "" { target c++1y } }
+auto foo();			// { dg-error "auto" "" { target { ! c++14 } } }
+auto fp = foo;			// { dg-error "auto" "" { target c++14 } }
Index: gcc/testsuite/g++.dg/cpp0x/auto9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/auto9.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/auto9.C	(working copy)
@@ -15,13 +15,13 @@
 
 struct A
 {
-  operator auto ();				// { dg-error "auto" "" { target { ! c++1y } } }
-  operator auto *();				// { dg-error "auto" "" { target { ! c++1y } } }
+  operator auto ();				// { dg-error "auto" "" { target { ! c++14 } } }
+  operator auto *();				// { dg-error "auto" "" { target { ! c++14 } } }
 };
 
 struct A2
 {
-  operator auto () -> int;			// { dg-error "invalid use of" "" { target { ! c++1y } } }
+  operator auto () -> int;			// { dg-error "invalid use of" "" { target { ! c++14 } } }
   operator auto *() -> int;			// { dg-error "auto" }
 };
 
@@ -98,8 +98,8 @@
 template <typename T = auto> struct E {};	// { dg-error "invalid use of" }
 template <class T = auto *> struct F {};	// { dg-error "invalid use of|expected" }
 
-auto fnlate () -> auto;				// { dg-error "invalid use of" "" { target { ! c++1y } } }
-auto fnlate2 () -> auto *;			// { dg-error "invalid use of|expected" "" { target { ! c++1y } } }
+auto fnlate () -> auto;				// { dg-error "invalid use of" "" { target { ! c++14 } } }
+auto fnlate2 () -> auto *;			// { dg-error "invalid use of|expected" "" { target { ! c++14 } } }
 
 void
 badthrow () throw (auto)			// { dg-error "invalid use of" }
Index: gcc/testsuite/g++.dg/cpp0x/initlist26.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/initlist26.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/initlist26.C	(working copy)
@@ -1,6 +1,6 @@
 // PR c++/42059
 // { dg-do compile { target c++11 } }
-// { dg-options "" { target { ! c++1y } } }
+// { dg-options "" { target { ! c++14 } } }
 
 void
 foo (int i)
Index: gcc/testsuite/g++.dg/cpp0x/pr59111.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/pr59111.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/pr59111.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59111
 // { dg-do compile { target c++11 } }
 
-auto& foo();	// { dg-error "type specifier without trailing return type" "" { target { ! c++1y } } }
+auto& foo();	// { dg-error "type specifier without trailing return type" "" { target { ! c++14 } } }
 int i = foo();	// { dg-error "" }
Index: gcc/testsuite/g++.dg/cpp0x/trailing2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/trailing2.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp0x/trailing2.C	(working copy)
@@ -3,7 +3,7 @@
 // { dg-do compile { target c++11 } }
 
 auto f1 () -> int;
-auto f2 ();		// { dg-error "without trailing return type" "" { target { ! c++1y } } }
+auto f2 ();		// { dg-error "without trailing return type" "" { target { ! c++14 } } }
 int f3 () -> int;	// { dg-error "trailing return type" }
 auto *f4 () -> int;	// { dg-error "trailing return type" }
 
@@ -10,7 +10,7 @@
 struct A
 {
   auto f5 () const -> int;
-  auto f6 ();		// { dg-error "without trailing return type" "" { target { ! c++1y } } }
+  auto f6 ();		// { dg-error "without trailing return type" "" { target { ! c++14 } } }
   int f7 () -> int;	// { dg-error "trailing return type" }
   auto *f8 () -> int;	// { dg-error "trailing return type" }
 };
Index: gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 class [[deprecated]] A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C	(working copy)
@@ -1,5 +1,5 @@
 // DR 1586
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template <class T>
 void f (T* p)
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 constexpr auto f() { return (char)42; }
 #define SA(X) static_assert ((X),#X)
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn10.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn10.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn10.C	(working copy)
@@ -1,6 +1,6 @@
 // A template declared with auto should be declared with auto in an
 // explicit instantiation or explicit specialization, too.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f(T t) { return t; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn11.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn11.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn11.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return; } 		// OK, return type is void
 auto* g() { return; }		// { dg-error "no value" }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn12.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn12.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn12.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-final { scan-assembler "_ZN1AIiEcvDaEv" } }
 
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn13.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn13.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn13.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A {
   template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn14.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn14.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn14.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/56177
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f ();
 auto f () { return 33; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn15.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn15.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn15.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-Wno-return-local-addr" }
 
 template<class,class> struct same_type;
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn16.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn16.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn16.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<class,class> struct ST;
 template<class T> struct ST<T,T> {};
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn17.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn17.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn17.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int c;
 int d;
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn18.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn18.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn18.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn19.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn19.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn19.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f() { return T::i; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn2.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn2.C	(working copy)
@@ -1,3 +1,3 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return f(); }	// { dg-error "auto" }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn20.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn20.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn20.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f(T) { return 42; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn21.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn21.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn21.C	(working copy)
@@ -1,5 +1,5 @@
 // N3638: decltype(auto) must stand alone
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f();
 decltype(auto) g1() { return &f; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn22.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn22.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn22.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn23.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn23.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn23.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58561
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-g" }
 
 auto foo();
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn24.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn24.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn24.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60314
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-g" }
 
 // fine
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn25.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn25.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60574
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-require-effective-target lto }
 // { dg-options "-flto" }
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn3.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn3.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 bool b;
 auto f()
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn4.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn4.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 constexpr auto f(T t) { return t+1; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn5.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn5.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i;
 auto& f() { return i; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn6.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn6.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn6.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T, class U> struct ST;
 template <class T> struct ST<T,T> {};
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn7.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn7.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn7.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f();
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn8.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn8.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return 42; }		// { dg-message "old declaration .auto" }
 auto f();			// OK
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn9.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn9.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-final { scan-assembler "_Z1fIiERDaRKT_S1_" } }
 
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C	(working copy)
@@ -1,5 +1,5 @@
 // Mangling for decltype(auto)
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f();
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-neg1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-neg1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/auto-neg1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60312
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> struct A;
 
Index: gcc/testsuite/g++.dg/cpp1y/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/cplusplus.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/cplusplus.C	(working copy)
@@ -1,5 +1,5 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14_only } }
 
-#if __cplusplus <= 201103L
-#error
+#if __cplusplus != 201402L
+#error "__cplusplus != 201402L"
 #endif
Index: gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C	(working copy)
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// { dg-options "-std=c++1y" }
+
+#if __cplusplus != 201402L
+#error "__cplusplus != 201402L"
+#endif
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target { ! c++1y } } }
+// { dg-do compile { target { ! c++14 } } }
 
 #define assert(E) if(!(E))__builtin_abort();
 
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 main()
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #define assert(E) if(!(E))__builtin_abort();
 
Index: gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C	(working copy)
@@ -1,5 +1,5 @@
 // Out-of-line generic member function definitions.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C	(working copy)
@@ -1,7 +1,7 @@
 // Testcase for an extension to allow return type deduction when the lambda
 // contains more than just a single return-statement.
 
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 bool b;
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda conversion to function ptr test from N3690 5.1.2.6
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void f1(int (*)(int)) { }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda type dependence test part from N3690 5.1.2.12
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f(int, const int (&)[2] = {}) { } // #1
 void f(const int&, const int (&)[1]) { } // #2
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C	(working copy)
@@ -1,5 +1,5 @@
 // Mixed explicit and implicit generic lambda test.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C	(working copy)
@@ -1,6 +1,6 @@
 // Ensure that generic lambdas properly construct and destroy user types.
 // { dg-options "-DUSE_AUTO_SYNTAX" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i = 3;
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C	(working copy)
@@ -1,5 +1,5 @@
 // Basic generic lambda test
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template <typename T, typename U> struct pair {};
 template <typename... T> struct tuple {};
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59271
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 extern "C" int printf (const char *, ...);
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C	(working copy)
@@ -1,5 +1,5 @@
 // Explicit generic lambda test from N3690 5.1.2.5
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <iostream>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C	(working copy)
@@ -1,5 +1,5 @@
 // Explicit generic lambda conversion to function ptr test from N3690 5.1.2.6
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void f1(int (*)(int)) { }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C	(working copy)
@@ -1,5 +1,5 @@
 // Ensure that generic lambdas properly construct and destroy user types.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-DUSE_EXPLICIT_TEMPLATE_SYNTAX" }
 
 #include "lambda-generic-udt.C"
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda test from N3690 5.1.2.5
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <iostream>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init.C	(working copy)
@@ -1,5 +1,5 @@
-// Test for the explicit initializer extension of C++1y
-// { dg-do compile { target c++1y } }
+// Test for the explicit initializer extension of C++14
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init1.C	(working copy)
@@ -1,6 +1,6 @@
 // N3648: capture init
 // { dg-options "-w" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init2.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init2.C	(working copy)
@@ -1,5 +1,5 @@
 // N3648: redundancy and capture init
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init3.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init3.C	(working copy)
@@ -1,6 +1,6 @@
 // N3648: capture init at non-block scope
 // { dg-options "-w" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i = 42;
 int j = [x=i]{ return x; }();
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init4.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init4.C	(working copy)
@@ -1,5 +1,5 @@
 // N3648: capture init example from paper
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int x = 4;
 auto y = [&r = x, x = x+1]()->int {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init5.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init5.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for paren and brace initializers
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <initializer_list>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init6.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init6.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init6.C	(working copy)
@@ -1,5 +1,5 @@
 // Test that captures are not named in the closure type.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init7.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init7.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59349
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int foo () {
   [bar()]{};			// { dg-error "empty initializer" }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init8.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init8.C	(working copy)
@@ -1,5 +1,5 @@
 // DR1760: "no additional copy and destruction is performed"
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <cassert>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init9.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init9.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f()
 {
Index: gcc/testsuite/g++.dg/cpp1y/mangle1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/mangle1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/mangle1.C	(working copy)
@@ -1,5 +1,5 @@
 // Test that the parens don't show up in the mangling
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-Wno-return-local-addr" }
 // { dg-final { scan-assembler "_Z1gI1AEDTdtfp_1iET_" } }
 
Index: gcc/testsuite/g++.dg/cpp1y/pr57640.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr57640.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr57640.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <chrono>
 
Index: gcc/testsuite/g++.dg/cpp1y/pr57644.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr57644.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr57644.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct Foo
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr58500.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58500.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58500.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58500
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {};
Index: gcc/testsuite/g++.dg/cpp1y/pr58533.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58533.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58533.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58533
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr58534.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58534.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58534.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58534
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template<typename> void foo(const auto&) {}
Index: gcc/testsuite/g++.dg/cpp1y/pr58535.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58535.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58535.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58535
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr58536.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58536.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58536.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58536
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr58548.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58548.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58548.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58548
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto)
Index: gcc/testsuite/g++.dg/cpp1y/pr58549.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58549.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58549.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58549
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto)
Index: gcc/testsuite/g++.dg/cpp1y/pr58637.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58637.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58637.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/58637
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<> void foo(auto); // { dg-error "auto|not a template" }
Index: gcc/testsuite/g++.dg/cpp1y/pr58708.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58708.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr58708.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template<typename, typename>
   struct is_same
Index: gcc/testsuite/g++.dg/cpp1y/pr59110.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59110.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59110.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59110
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int i = *(auto*)0; // { dg-error "" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59112.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59112.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59112.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59112
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr59113.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59113.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59113.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59113
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr59629.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59629.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59629.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59629
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int i = []{ auto 0; }()); // { dg-error "expected|could not convert" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59635.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59635.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59635.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59635
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = [] (auto, ...) { return 0; };
 
Index: gcc/testsuite/g++.dg/cpp1y/pr59636.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59636.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59636.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59636
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = []() { return []<>() {}; };  // { dg-error "expected identifier" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59638.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59638.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59638.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59638
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void (*a)(auto);         // { dg-error "template declaration" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59867.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59867.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr59867.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59867
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 using namespace std;
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60033.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60033.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60033.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60033
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <typename... T>
 auto f(T&&... ts)
Index: gcc/testsuite/g++.dg/cpp1y/pr60052.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60052.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60052.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60052
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60053.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60053.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60053.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60053
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60054.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60054.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60054.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60054
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename T> T fooA(T);
 template<typename T> decltype(T{}) fooB(T);
Index: gcc/testsuite/g++.dg/cpp1y/pr60064.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60064.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60064.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60064
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 class A
Index: gcc/testsuite/g++.dg/cpp1y/pr60065.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60065.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60065.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60065
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template <int> void foo(auto... x);
Index: gcc/testsuite/g++.dg/cpp1y/pr60190.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60190.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60190.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/60190
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = []<int>() -> int() {}; // { dg-error "returning a function|expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60311.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60311.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60311.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60311
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<void(*)(auto)> struct A {}; // { dg-error "auto" }
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60332.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60332.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60332.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60332
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo();
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60376.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60376.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60376.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60376
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr60377.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60377.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60377.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60377
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto, void (f*)()); // { dg-error "expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60384.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60384.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60384.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60384
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> int foo();
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60390.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60390.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60390.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60390
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60391.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60391.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60391.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60391
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 namespace N
Index: gcc/testsuite/g++.dg/cpp1y/pr60393.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60393.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60393.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60393
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void (*f)(auto) + 0; // { dg-error "expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60573.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60573.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60573.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60573
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60626.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60626.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60626.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60626
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {};
Index: gcc/testsuite/g++.dg/cpp1y/pr60627.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60627.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/pr60627.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60627
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template<typename T> void foo(T) {}
Index: gcc/testsuite/g++.dg/cpp1y/regress1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/regress1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/regress1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60409
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C	(working copy)
@@ -1,5 +1,5 @@
 // Origin: Dodji Seketeli <dodji@redhat.com>
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include "../system-binary-constants-1.h"
 
Index: gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target { c++11 && { ! c++1y } } } }
+// { dg-do compile { target { c++11 && { ! c++14 } } } }
 
 template<typename CharT, CharT... String>
   int
Index: gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename CharT, CharT... String>
   int
Index: gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 operator "*"_s(unsigned long long) // { dg-error "expected empty string after 'operator'" }
Index: gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 operator L""_Ls(unsigned long long) // { dg-error "invalid encoding prefix in literal operator" }
Index: gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include "complex_literals.h"
 
Index: gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <initializer_list>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <typeinfo>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla10.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla10.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla10.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/57402
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int i = 2;
 
Index: gcc/testsuite/g++.dg/cpp1y/vla11.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla11.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla11.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60251
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla12.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla12.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla12.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60250
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla13.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla13.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla13.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60227
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla2.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla2.C	(working copy)
@@ -1,5 +1,5 @@
 // N3639 allows initialization and capture of VLAs
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 void f(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla3.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla3.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for throwing bad_array_length on invalid array length
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <new>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla4.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla4.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for range-based for with VLAs.
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <new>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla5.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla5.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/55149
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void test(int n) {
   int r[n];
Index: gcc/testsuite/g++.dg/cpp1y/vla8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla8.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla8.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/55149
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<unsigned int TA>
  struct SA
Index: gcc/testsuite/g++.dg/cpp1y/vla9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla9.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1y/vla9.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/57408
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename Callable>
   struct Impl
Index: gcc/testsuite/g++.dg/ext/vector23.C
===================================================================
--- gcc/testsuite/g++.dg/ext/vector23.C	(revision 213071)
+++ gcc/testsuite/g++.dg/ext/vector23.C	(working copy)
@@ -1,4 +1,4 @@
-/* { dg-do compile { target c++1y } } */
+/* { dg-do compile { target c++14 } } */
 /* { dg-options "-Wsign-conversion" } */
 // Ignore warning on some powerpc-linux configurations.
 // { dg-prune-output "non-standard ABI extension" }
Index: gcc/testsuite/g++.dg/ext/vla11.C
===================================================================
--- gcc/testsuite/g++.dg/ext/vla11.C	(revision 213071)
+++ gcc/testsuite/g++.dg/ext/vla11.C	(working copy)
@@ -1,6 +1,6 @@
 // Test that auto works with VLAs.
 // { dg-do compile { target c++11 } }
-// { dg-options "" { target { ! c++1y } } }
+// { dg-options "" { target { ! c++14 } } }
 
 void bar(int n)
 {
Index: gcc/testsuite/g++.dg/warn/Wvla-2.C
===================================================================
--- gcc/testsuite/g++.dg/warn/Wvla-2.C	(revision 213071)
+++ gcc/testsuite/g++.dg/warn/Wvla-2.C	(working copy)
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { ! c++1y } } } */
+/* { dg-do compile { target { ! c++14 } } } */
 /* { dg-options "-pedantic-errors -Wvla" } */
 
 void func (int i)
Index: gcc/testsuite/g++.dg/debug/dwarf2/auto1.C
===================================================================
--- gcc/testsuite/g++.dg/debug/dwarf2/auto1.C	(revision 213071)
+++ gcc/testsuite/g++.dg/debug/dwarf2/auto1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/53756
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-g -dA -fno-debug-types-section" }
 // We're looking for something like
 
Index: gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C	(revision 213071)
+++ gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y_down } }
+// { dg-do compile { target c++14_down } }
 // { dg-options "-pedantic" }
 
 template<typename T>
Index: gcc/testsuite/g++.dg/cpp1z/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1z/cplusplus.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp1z/cplusplus.C	(working copy)
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// { dg-options "-std=c++1z" }
+
+#if __cplusplus <= 201402L
+#error "__cplusplus <= 201402L"
+#endif

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH, C++, CPP] Add C++1z to the preprocessor.  Rename C++1y to C++14.
  2014-07-26 14:07       ` Ed Smith-Rowland
@ 2014-08-22 20:36         ` Jason Merrill
  2014-08-23 17:03           ` Ed Smith-Rowland
  0 siblings, 1 reply; 9+ messages in thread
From: Jason Merrill @ 2014-08-22 20:36 UTC (permalink / raw)
  To: Ed Smith-Rowland, Mike Stump; +Cc: gcc-patches

OK, thanks.

Jason

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH, C++, CPP] Add C++1z to the preprocessor.  Rename C++1y to C++14.
  2014-08-22 20:36         ` Jason Merrill
@ 2014-08-23 17:03           ` Ed Smith-Rowland
  2014-08-25  5:03             ` Jason Merrill
  0 siblings, 1 reply; 9+ messages in thread
From: Ed Smith-Rowland @ 2014-08-23 17:03 UTC (permalink / raw)
  To: Jason Merrill, Mike Stump; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 136 bytes --]

On 08/22/2014 04:36 PM, Jason Merrill wrote:
> OK, thanks.
>
> Jason
>
Committed 214400.

Attached patch is the one committed.
Thanks.


[-- Attachment #2: CL --]
[-- Type: text/plain, Size: 7344 bytes --]


libcpp/

2014-08-23  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* include/cpplib.h (enum c_lang): Add CLK_GNUCXX1Z, CLK_CXX1Z;
	Rename CLK_GNUCXX1Y, CLK_CXX1Y to CLK_GNUCXX14, CLK_CXX14;
	* init.c (struct lang_flags lang_defaults): Add column for trigraphs;
	Add rows for CLK_GNUCXX1Z, CLK_CXX1Z; (cpp_set_lang): Set trigraphs;
	(cpp_init_builtins): Set __cplusplus to 201402L for C++14;
	Set __cplusplus to 201500L for C++17.
	* expr.c (cpp_classify_number): Change C++1y to C++14 in binary
	constants error message.


gcc/c-family/

2014-08-23  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* c-common.h (enum cxx_dialect): Add cxx14.
	* c-opts.c (set_std_cxx1y): Rename to set_std_cxx14; Use cxx14.
	* c-ubsan.c (ubsan_instrument_shift): Change comment and logic from
	cxx_dialect == cxx11 || cxx_dialect == cxx1y to cxx_dialect >= cxx11.


gcc/cp/

2014-08-23  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* decl.c (compute_array_index_type, grokdeclarator,
	undeduced_auto_decl): Change from cxx1y to cxx14.
	*lambda.c(add_capture()): Change error message from C++1y to C++14.
	* parser.c (cp_parser_unqualified_id, cp_parser_pseudo_destructor_name,
	cp_parser_lambda_introducer, cp_parser_lambda_declarator_opt,
	cp_parser_decltype, cp_parser_conversion_type_id,
	cp_parser_simple_type_specifier, cp_parser_type_id_1,
	cp_parser_template_type_arg, cp_parser_std_attribute,
	cp_parser_template_declaration_after_export): Ditto.
	* pt.c (tsubst): Ditto.
	* semantics.c (force_paren_expr, finish_decltype_type): Ditto.
	* tree.c: Change comment.
	* typeck.c (comp_template_parms_position, cxx_sizeof_or_alignof_type,
	cp_build_addr_expr_1, maybe_warn_about_useless_cast): Ditto.


gcc/

2014-08-23  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* doc/invoke.texi: Change c++1y to c++14 and gnu++1y to gnu++14.
	Deprecate c++1y. Change language to reflect greater confidence in C++14.


gcc/testsuite/

2014-08-23  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* g++.dg/cpp0x/cplusplus.C: New.
	* g++.dg/cpp0x/cplusplus_0x.C: New.
	* g++.dg/cpp0x/auto3.C: Change c++1y to c++14.
	* g++.dg/cpp0x/auto41.C: Ditto.
	* g++.dg/cpp0x/auto9.C: Ditto.
	* g++.dg/cpp0x/initlist26.C: Ditto.
	* g++.dg/cpp0x/pr59111.C: Ditto.
	* g++.dg/cpp0x/trailing2.C: Ditto.
	* g++.dg/cpp1y/attr-deprecated.C: Ditto.
	* g++.dg/cpp1y/auto-dtor1.C: Ditto.
	* g++.dg/cpp1y/auto-fn1.C: Ditto.
	* g++.dg/cpp1y/auto-fn2.C: Ditto.
	* g++.dg/cpp1y/auto-fn3.C: Ditto.
	* g++.dg/cpp1y/auto-fn4.C: Ditto.
	* g++.dg/cpp1y/auto-fn5.C: Ditto.
	* g++.dg/cpp1y/auto-fn6.C: Ditto.
	* g++.dg/cpp1y/auto-fn7.C: Ditto.
	* g++.dg/cpp1y/auto-fn8.C: Ditto.
	* g++.dg/cpp1y/auto-fn9.C: Ditto.
	* g++.dg/cpp1y/auto-fn10.C: Ditto.
	* g++.dg/cpp1y/auto-fn11.C: Ditto.
	* g++.dg/cpp1y/auto-fn12.C: Ditto.
	* g++.dg/cpp1y/auto-fn13.C: Ditto.
	* g++.dg/cpp1y/auto-fn14.C: Ditto.
	* g++.dg/cpp1y/auto-fn15.C: Ditto.
	* g++.dg/cpp1y/auto-fn16.C: Ditto.
	* g++.dg/cpp1y/auto-fn17.C: Ditto.
	* g++.dg/cpp1y/auto-fn18.C: Ditto.
	* g++.dg/cpp1y/auto-fn19.C: Ditto.
	* g++.dg/cpp1y/auto-fn20.C: Ditto.
	* g++.dg/cpp1y/auto-fn21.C: Ditto.
	* g++.dg/cpp1y/auto-fn22.C: Ditto.
	* g++.dg/cpp1y/auto-fn23.C: Ditto.
	* g++.dg/cpp1y/auto-fn24.C: Ditto.
	* g++.dg/cpp1y/auto-fn25.C: Ditto.
	* g++.dg/cpp1y/auto-mangle1.C: Ditto.
	* g++.dg/cpp1y/auto-neg1.C: Ditto.
	* g++.dg/cpp1y/digit-sep.C: Ditto.
	* g++.dg/cpp1y/digit-sep-neg.C: Ditto.
	* g++.dg/cpp1y/digit-sep-cxx11-neg.C: Ditto.
	* g++.dg/cpp1y/fn-generic-member-ool.C: Ditto.
	* g++.dg/cpp1y/lambda-deduce-mult.C: Ditto.
	* g++.dg/cpp1y/lambda-generic.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-cfun.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-dep.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-mixed.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-udt.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-variadic.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-vla1.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-x.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-xcfun.C: Ditto.
	* g++.dg/cpp1y/lambda-generic-xudt.C: Ditto.
	* g++.dg/cpp1y/lambda-init.C: Ditto.
	* g++.dg/cpp1y/lambda-init1.C: Ditto.
	* g++.dg/cpp1y/lambda-init2.C: Ditto.
	* g++.dg/cpp1y/lambda-init3.C: Ditto.
	* g++.dg/cpp1y/lambda-init4.C: Ditto.
	* g++.dg/cpp1y/lambda-init5.C: Ditto.
	* g++.dg/cpp1y/lambda-init6.C: Ditto.
	* g++.dg/cpp1y/lambda-init7.C: Ditto.
	* g++.dg/cpp1y/lambda-init8.C: Ditto.
	* g++.dg/cpp1y/lambda-init9.C: Ditto.
	* g++.dg/cpp1y/mangle1.C: Ditto.
	* g++.dg/cpp1y/pr57640.C: Ditto.
	* g++.dg/cpp1y/pr57644.C: Ditto.
	* g++.dg/cpp1y/pr58500.C: Ditto.
	* g++.dg/cpp1y/pr58533.C: Ditto.
	* g++.dg/cpp1y/pr58534.C: Ditto.
	* g++.dg/cpp1y/pr58535.C: Ditto.
	* g++.dg/cpp1y/pr58536.C: Ditto.
	* g++.dg/cpp1y/pr58548.C: Ditto.
	* g++.dg/cpp1y/pr58549.C: Ditto.
	* g++.dg/cpp1y/pr58637.C: Ditto.
	* g++.dg/cpp1y/pr58708.C: Ditto.
	* g++.dg/cpp1y/pr59110.C: Ditto.
	* g++.dg/cpp1y/pr59112.C: Ditto.
	* g++.dg/cpp1y/pr59113.C: Ditto.
	* g++.dg/cpp1y/pr59629.C: Ditto.
	* g++.dg/cpp1y/pr59635.C: Ditto.
	* g++.dg/cpp1y/pr59636.C: Ditto.
	* g++.dg/cpp1y/pr59638.C: Ditto.
	* g++.dg/cpp1y/pr59867.C: Ditto.
	* g++.dg/cpp1y/pr60033.C: Ditto.
	* g++.dg/cpp1y/pr60052.C: Ditto.
	* g++.dg/cpp1y/pr60053.C: Ditto.
	* g++.dg/cpp1y/pr60054.C: Ditto.
	* g++.dg/cpp1y/pr60064.C: Ditto.
	* g++.dg/cpp1y/pr60065.C: Ditto.
	* g++.dg/cpp1y/pr60190.C: Ditto.
	* g++.dg/cpp1y/pr60311.C: Ditto.
	* g++.dg/cpp1y/pr60332.C: Ditto.
	* g++.dg/cpp1y/pr60376.C: Ditto.
	* g++.dg/cpp1y/pr60377.C: Ditto.
	* g++.dg/cpp1y/pr60384.C: Ditto.
	* g++.dg/cpp1y/pr60390.C: Ditto.
	* g++.dg/cpp1y/pr60391.C: Ditto.
	* g++.dg/cpp1y/pr60393.C: Ditto.
	* g++.dg/cpp1y/pr60573.C: Ditto.
	* g++.dg/cpp1y/pr60626.C: Ditto.
	* g++.dg/cpp1y/pr60627.C: Ditto.
	* g++.dg/cpp1y/regress1.C: Ditto.
	* g++.dg/cpp1y/system-binary-constants-1.C: Ditto.
	* g++.dg/cpp1y/udlit-char-template.C: Ditto.
	* g++.dg/cpp1y/udlit-char-template-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-empty-string-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-enc-prefix-neg.C: Ditto.
	* g++.dg/cpp1y/udlit-userdef-string.C: Ditto.
	* g++.dg/cpp1y/var-templ1.C: Ditto.
	* g++.dg/cpp1y/var-templ2.C: Ditto.
	* g++.dg/cpp1y/var-templ3.C: Ditto.
	* g++.dg/cpp1y/var-templ4.C: Ditto.
	* g++.dg/cpp1y/var-templ5.C: Ditto.
	* g++.dg/cpp1y/var-templ6.C: Ditto.
	* g++.dg/cpp1y/var-templ7.C: Ditto.
	* g++.dg/cpp1y/vla1.C: Ditto.
	* g++.dg/cpp1y/vla2.C: Ditto.
	* g++.dg/cpp1y/vla3.C: Ditto.
	* g++.dg/cpp1y/vla4.C: Ditto.
	* g++.dg/cpp1y/vla5.C: Ditto.
	* g++.dg/cpp1y/vla8.C: Ditto.
	* g++.dg/cpp1y/vla9.C: Ditto.
	* g++.dg/cpp1y/vla10.C: Ditto.
	* g++.dg/cpp1y/vla11.C: Ditto.
	* g++.dg/cpp1y/vla12.C: Ditto.
	* g++.dg/cpp1y/vla13.C: Ditto.
	* g++.dg/cpp1y/vla-initlist1.C: Ditto.
	* g++.dg/ext/vector23.C: Ditto.
	* g++.dg/ext/vla11.C: Ditto.
	* gcc/testsuite/g++.dg/ubsan/cxx1y-vla.C: Ditto.
	* g++.dg/warn/Wvla-2.C: Ditto.
	* g++.dg/debug/dwarf2/auto1.C: Ditto.
	* g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C: Ditto.
	* g++.dg/cpp1y/cplusplus.C: Check for exact date.
	* g++.dg/cpp1y/system-binary-constants-1.C: Check C++14 instead of C++1y
	in error message.
	* g++.dg/system-binary-constants-1.C: Ditto.
	* g++.dg/cpp1y/cplusplus_1y.C: New.
	* g++.dg/cpp1z/cplusplus.C: New.
	* lib/target-supports.exp:
	(check_effective_target_c++1y*): Rename to check_effective_target_c++14*
	(check_effective_target_c++11_only): Call check_effective_target_c++14;
	(check_effective_target_c++11_down): Ditto.


[-- Attachment #3: patch_test --]
[-- Type: text/plain, Size: 82005 bytes --]

Index: libcpp/include/cpplib.h
===================================================================
--- libcpp/include/cpplib.h	(revision 213910)
+++ libcpp/include/cpplib.h	(working copy)
@@ -166,7 +166,7 @@
 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_GNUCXX1Y, CLK_CXX1Y, CLK_ASM};
+	     CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX1Z, CLK_CXX1Z, CLK_ASM};
 
 /* Payload of a NUMBER, STRING, CHAR or COMMENT token.  */
 struct GTY(()) cpp_string {
Index: libcpp/init.c
===================================================================
--- libcpp/init.c	(revision 213910)
+++ libcpp/init.c	(working copy)
@@ -90,26 +90,29 @@
   char user_literals;
   char binary_constants;
   char digit_separators;
+  char trigraphs;
 };
 
 static const struct lang_flags lang_defaults[] =
-{ /*              c99 c++ xnum xid c11 std  //   digr ulit rlit udlit bin_cst dig_sep */
-  /* GNUC89   */  { 0,  0,  1,   0,  0,  0,   1,   1,   0,   0,   0,    0,      0 },
-  /* GNUC99   */  { 1,  0,  1,   0,  0,  0,   1,   1,   1,   1,   0,    0,      0 },
-  /* GNUC11   */  { 1,  0,  1,   0,  1,  0,   1,   1,   1,   1,   0,    0,      0 },
-  /* STDC89   */  { 0,  0,  0,   0,  0,  1,   0,   0,   0,   0,   0,    0,      0 },
-  /* STDC94   */  { 0,  0,  0,   0,  0,  1,   0,   1,   0,   0,   0,    0,      0 },
-  /* STDC99   */  { 1,  0,  1,   0,  0,  1,   1,   1,   0,   0,   0,    0,      0 },
-  /* STDC11   */  { 1,  0,  1,   0,  1,  1,   1,   1,   1,   0,   0,    0,      0 },
-  /* GNUCXX   */  { 0,  1,  1,   0,  0,  0,   1,   1,   0,   0,   0,    0,      0 },
-  /* CXX98    */  { 0,  1,  1,   0,  0,  1,   1,   1,   0,   0,   0,    0,      0 },
-  /* GNUCXX11 */  { 1,  1,  1,   0,  1,  0,   1,   1,   1,   1,   1,    0,      0 },
-  /* CXX11    */  { 1,  1,  1,   0,  1,  1,   1,   1,   1,   1,   1,    0,      0 },
-  /* GNUCXX1Y */  { 1,  1,  1,   0,  1,  0,   1,   1,   1,   1,   1,    1,      1 },
-  /* CXX1Y    */  { 1,  1,  1,   0,  1,  1,   1,   1,   1,   1,   1,    1,      1 },
-  /* ASM      */  { 0,  0,  1,   0,  0,  0,   1,   0,   0,   0,   0,    0,      0 }
+{ /*              c99 c++ xnum xid c11 std // digr ulit rlit udlit bincst digsep trig */
+  /* GNUC89   */  { 0,  0,  1,  0,  0,  0,  1,  1,  0,   0,   0,    0,     0,     0 },
+  /* GNUC99   */  { 1,  0,  1,  0,  0,  0,  1,  1,  1,   1,   0,    0,     0,     0 },
+  /* GNUC11   */  { 1,  0,  1,  0,  1,  0,  1,  1,  1,   1,   0,    0,     0,     0 },
+  /* STDC89   */  { 0,  0,  0,  0,  0,  1,  0,  0,  0,   0,   0,    0,     0,     1 },
+  /* STDC94   */  { 0,  0,  0,  0,  0,  1,  0,  1,  0,   0,   0,    0,     0,     1 },
+  /* STDC99   */  { 1,  0,  1,  0,  0,  1,  1,  1,  0,   0,   0,    0,     0,     1 },
+  /* STDC11   */  { 1,  0,  1,  0,  1,  1,  1,  1,  1,   0,   0,    0,     0,     1 },
+  /* GNUCXX   */  { 0,  1,  1,  0,  0,  0,  1,  1,  0,   0,   0,    0,     0,     0 },
+  /* CXX98    */  { 0,  1,  1,  0,  0,  1,  1,  1,  0,   0,   0,    0,     0,     1 },
+  /* GNUCXX11 */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    0,     0,     0 },
+  /* CXX11    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    0,     0,     1 },
+  /* GNUCXX14 */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* CXX14    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    1,     1,     1 },
+  /* GNUCXX1Z */  { 1,  1,  1,  0,  1,  0,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* CXX1Z    */  { 1,  1,  1,  0,  1,  1,  1,  1,  1,   1,   1,    1,     1,     0 },
+  /* ASM      */  { 0,  0,  1,  0,  0,  0,  1,  0,  0,   0,   0,    0,     0,     0 }
   /* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX11, CXX11,
-     GNUCXX1Y, and CXX1Y when no longer experimental (when all uses of
+     GNUCXX14, and CXX14 when no longer experimental (when all uses of
      identifiers in the compiler have been audited for correct handling
      of extended identifiers).  */
 };
@@ -128,7 +131,6 @@
   CPP_OPTION (pfile, extended_identifiers)	 = l->extended_identifiers;
   CPP_OPTION (pfile, c11_identifiers)		 = l->c11_identifiers;
   CPP_OPTION (pfile, std)			 = l->std;
-  CPP_OPTION (pfile, trigraphs)			 = l->std;
   CPP_OPTION (pfile, cplusplus_comments)	 = l->cplusplus_comments;
   CPP_OPTION (pfile, digraphs)			 = l->digraphs;
   CPP_OPTION (pfile, uliterals)			 = l->uliterals;
@@ -136,6 +138,7 @@
   CPP_OPTION (pfile, user_literals)		 = l->user_literals;
   CPP_OPTION (pfile, binary_constants)		 = l->binary_constants;
   CPP_OPTION (pfile, digit_separators)		 = l->digit_separators;
+  CPP_OPTION (pfile, trigraphs)			 = l->trigraphs;
 }
 
 /* Initialize library global state.  */
@@ -489,9 +492,12 @@
 
   if (CPP_OPTION (pfile, cplusplus))
     {
-      if (CPP_OPTION (pfile, lang) == CLK_CXX1Y
-	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Y)
-	_cpp_define_builtin (pfile, "__cplusplus 201300L");
+      if (CPP_OPTION (pfile, lang) == CLK_CXX1Z
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Z)
+	_cpp_define_builtin (pfile, "__cplusplus 201500L");
+      else if (CPP_OPTION (pfile, lang) == CLK_CXX14
+	  || CPP_OPTION (pfile, lang) == CLK_GNUCXX14)
+	_cpp_define_builtin (pfile, "__cplusplus 201402L");
       else if (CPP_OPTION (pfile, lang) == CLK_CXX11
 	       || CPP_OPTION (pfile, lang) == CLK_GNUCXX11)
 	_cpp_define_builtin (pfile, "__cplusplus 201103L");
@@ -509,7 +515,9 @@
     _cpp_define_builtin (pfile, "__STDC_VERSION__ 199901L");
 
   if (CPP_OPTION (pfile, uliterals)
-      && !CPP_OPTION (pfile, cplusplus))
+      && !(CPP_OPTION (pfile, cplusplus)
+	   && (CPP_OPTION (pfile, lang) == GNUCXX
+	    || CPP_OPTION (pfile, lang) == CXX98)))
     {
       _cpp_define_builtin (pfile, "__STDC_UTF_16__ 1");
       _cpp_define_builtin (pfile, "__STDC_UTF_32__ 1");
Index: libcpp/expr.c
===================================================================
--- libcpp/expr.c	(revision 213910)
+++ libcpp/expr.c	(working copy)
@@ -687,7 +687,7 @@
       && CPP_PEDANTIC (pfile))
     cpp_error_with_line (pfile, CPP_DL_PEDWARN, virtual_location, 0,
 			 CPP_OPTION (pfile, cplusplus)
-			 ? "binary constants are a C++1y feature "
+			 ? "binary constants are a C++14 feature "
 			   "or GCC extension"
 			 : "binary constants are a GCC extension");
 
Index: gcc/c-family/c-common.h
===================================================================
--- gcc/c-family/c-common.h	(revision 213910)
+++ gcc/c-family/c-common.h	(working copy)
@@ -640,8 +640,9 @@
   /* C++11  */
   cxx0x,
   cxx11 = cxx0x,
-  /* C++1y (C++14?) */
+  /* C++14  */
   cxx1y,
+  cxx14 = cxx1y,
   /* C++1z (C++17?) */
   cxx1z
 };
Index: gcc/c-family/c-opts.c
===================================================================
--- gcc/c-family/c-opts.c	(revision 213910)
+++ gcc/c-family/c-opts.c	(working copy)
@@ -115,7 +115,7 @@
 static void handle_OPT_d (const char *);
 static void set_std_cxx98 (int);
 static void set_std_cxx11 (int);
-static void set_std_cxx1y (int);
+static void set_std_cxx14 (int);
 static void set_std_cxx1z (int);
 static void set_std_c89 (int, int);
 static void set_std_c99 (int);
@@ -697,7 +697,7 @@
     case OPT_std_gnu__1y:
       if (!preprocessing_asm_p)
 	{
-	  set_std_cxx1y (code == OPT_std_c__1y /* ISO */);
+	  set_std_cxx14 (code == OPT_std_c__1y /* ISO */);
 	  if (code == OPT_std_c__1y)
 	    cpp_opts->ext_numeric_literals = 0;
 	}
@@ -1585,9 +1585,9 @@
 
 /* Set the C++ 201y draft standard (without GNU extensions if ISO).  */
 static void
-set_std_cxx1y (int iso)
+set_std_cxx14 (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
+  cpp_set_lang (parse_in, iso ? CLK_CXX14: CLK_GNUCXX14);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1594,7 +1594,7 @@
   /* C++11 includes the C99 standard library.  */
   flag_isoc94 = 1;
   flag_isoc99 = 1;
-  cxx_dialect = cxx1y;
+  cxx_dialect = cxx14;
 }
 
 /* Set the C++ 201z draft standard (without GNU extensions if ISO).  */
@@ -1601,7 +1601,7 @@
 static void
 set_std_cxx1z (int iso)
 {
-  cpp_set_lang (parse_in, iso ? CLK_CXX1Y: CLK_GNUCXX1Y);
+  cpp_set_lang (parse_in, iso ? CLK_CXX1Z: CLK_GNUCXX1Z);
   flag_no_gnu_keywords = iso;
   flag_no_nonansi_builtin = iso;
   flag_iso = iso;
@@ -1608,6 +1608,7 @@
   /* C++11 includes the C99 standard library.  */
   flag_isoc94 = 1;
   flag_isoc99 = 1;
+  flag_isoc11 = 1;
   cxx_dialect = cxx1z;
 }
 
Index: gcc/c-family/c-ubsan.c
===================================================================
--- gcc/c-family/c-ubsan.c	(revision 213910)
+++ gcc/c-family/c-ubsan.c	(working copy)
@@ -146,12 +146,12 @@
 			build_int_cst (TREE_TYPE (tt), 0));
     }
 
-  /* For signed x << y, in C++11/C++14, the following:
+  /* For signed x << y, in C++11 and later, the following:
      x < 0 || ((unsigned) x >> (precm1 - y))
      if > 1, is undefined.  */
   if (code == LSHIFT_EXPR
       && !TYPE_UNSIGNED (TREE_TYPE (op0))
-      && (cxx_dialect == cxx11 || cxx_dialect == cxx1y))
+      && (cxx_dialect >= cxx11))
     {
       tree x = fold_build2 (MINUS_EXPR, integer_type_node, precm1, op1);
       tt = fold_convert_loc (loc, unsigned_type_for (type0), op0);
Index: gcc/cp/decl.c
===================================================================
--- gcc/cp/decl.c	(revision 213910)
+++ gcc/cp/decl.c	(working copy)
@@ -8417,7 +8417,7 @@
 	   /* We don't allow VLAs at non-function scopes, or during
 	      tentative template substitution.  */
 	   || !at_function_scope_p ()
-	   || (cxx_dialect < cxx1y && !(complain & tf_error)))
+	   || (cxx_dialect < cxx14 && !(complain & tf_error)))
     {
       if (!(complain & tf_error))
 	return error_mark_node;
@@ -8429,7 +8429,7 @@
 	error ("size of array is not an integral constant-expression");
       size = integer_one_node;
     }
-  else if (cxx_dialect < cxx1y && pedantic && warn_vla != 0)
+  else if (cxx_dialect < cxx14 && pedantic && warn_vla != 0)
     {
       if (name)
 	pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array %qD", name);
@@ -8487,7 +8487,7 @@
 
 	  stabilize_vla_size (itype);
 
-	  if (cxx_dialect >= cxx1y && flag_exceptions)
+	  if (cxx_dialect >= cxx14 && flag_exceptions)
 	    {
 	      /* If the VLA bound is larger than half the address space,
 	         or less than zero, throw std::bad_array_length.  */
@@ -8503,7 +8503,7 @@
 					 DECL_ATTRIBUTES
 					   (current_function_decl)))
 	    {
-	      /* From C++1y onwards, we throw an exception on a negative
+	      /* From C++14 onwards, we throw an exception on a negative
 		 length size of an array; see above.  */
 
 	      /* We have to add 1 -- in the ubsan routine we generate
@@ -8632,7 +8632,7 @@
       return error_mark_node;
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     pedwarn (input_location, OPT_Wvla, "array of array of runtime bound");
 
@@ -9652,14 +9652,14 @@
 			if (current_class_type
 			    && LAMBDA_TYPE_P (current_class_type))
 			  /* OK for C++11 lambdas.  */;
-			else if (cxx_dialect < cxx1y)
+			else if (cxx_dialect < cxx14)
 			  {
 			    error ("%qs function uses "
 				   "%<auto%> type specifier without trailing "
 				   "return type", name);
 			    inform (input_location, "deduced return type "
-				    "only available with -std=c++1y or "
-				    "-std=gnu++1y");
+				    "only available with -std=c++14 or "
+				    "-std=gnu++14");
 			  }
 			else if (virtualp)
 			  {
@@ -9878,7 +9878,7 @@
                    : G_("cannot declare pointer to qualified function type %qT"),
 		   type);
 
-	  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+	  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
 	      && (flag_iso || warn_vla > 0))
 	    pedwarn (input_location, OPT_Wvla,
 		     declarator->kind == cdk_reference
@@ -10235,7 +10235,7 @@
 	  type = error_mark_node;
 	}
 
-      if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+      if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
 	  && (flag_iso || warn_vla > 0))
 	pedwarn (input_location, OPT_Wvla,
 		 "typedef naming array of runtime bound");
@@ -10481,7 +10481,7 @@
 
       if (type_uses_auto (type))
 	{
-	  if (cxx_dialect >= cxx1y)
+	  if (cxx_dialect >= cxx14)
 	    error ("%<auto%> parameter not permitted in this context");
 	  else
 	    error ("parameter declared %<auto%>");
@@ -14631,7 +14631,7 @@
 bool
 undeduced_auto_decl (tree decl)
 {
-  if (cxx_dialect < cxx1y)
+  if (cxx_dialect < cxx14)
     return false;
   return type_uses_auto (TREE_TYPE (decl));
 }
Index: gcc/cp/lambda.c
===================================================================
--- gcc/cp/lambda.c	(revision 213910)
+++ gcc/cp/lambda.c	(working copy)
@@ -474,7 +474,7 @@
     }
   else if (variably_modified_type_p (type, NULL_TREE))
     {
-      error ("capture of variable-size type %qT that is not a C++1y array "
+      error ("capture of variable-size type %qT that is not a C++14 array "
 	     "of runtime bound", type);
       if (TREE_CODE (type) == ARRAY_TYPE
 	  && variably_modified_type_p (TREE_TYPE (type), NULL_TREE))
Index: gcc/cp/parser.c
===================================================================
--- gcc/cp/parser.c	(revision 213910)
+++ gcc/cp/parser.c	(working copy)
@@ -4972,10 +4972,10 @@
 	/* ~auto means the destructor of whatever the object is.  */
 	if (cp_parser_is_keyword (token, RID_AUTO))
 	  {
-	    if (cxx_dialect < cxx1y)
+	    if (cxx_dialect < cxx14)
 	      pedwarn (input_location, 0,
 		       "%<~auto%> only available with "
-		       "-std=c++1y or -std=gnu++1y");
+		       "-std=c++14 or -std=gnu++14");
 	    cp_lexer_consume_token (parser->lexer);
 	    return build_nt (BIT_NOT_EXPR, make_auto ());
 	  }
@@ -6897,10 +6897,10 @@
       && cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_AUTO)
       && !type_dependent_expression_p (object))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	pedwarn (input_location, 0,
 		 "%<~auto%> only available with "
-		 "-std=c++1y or -std=gnu++1y");
+		 "-std=c++14 or -std=gnu++14");
       cp_lexer_consume_token (parser->lexer);
       cp_lexer_consume_token (parser->lexer);
       *scope = NULL_TREE;
@@ -9067,10 +9067,10 @@
 	{
 	  bool direct, non_constant;
 	  /* An explicit initializer exists.  */
-	  if (cxx_dialect < cxx1y)
+	  if (cxx_dialect < cxx14)
 	    pedwarn (input_location, 0,
 		     "lambda capture initializers "
-		     "only available with -std=c++1y or -std=gnu++1y");
+		     "only available with -std=c++14 or -std=gnu++14");
 	  capture_init_expr = cp_parser_initializer (parser, &direct,
 						     &non_constant);
 	  explicit_init_p = true;
@@ -9193,10 +9193,10 @@
      an opening angle if present.  */
   if (cp_lexer_next_token_is (parser->lexer, CPP_LESS))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	pedwarn (parser->lexer->next_token->location, 0,
 		 "lambda templates are only available with "
-		 "-std=c++1y or -std=gnu++1y");
+		 "-std=c++14 or -std=gnu++14");
 
       cp_lexer_consume_token (parser->lexer);
 
@@ -12171,7 +12171,7 @@
     return error_mark_node;
 
   /* decltype (auto) */
-  if (cxx_dialect >= cxx1y
+  if (cxx_dialect >= cxx14
       && cp_lexer_next_token_is_keyword (parser->lexer, RID_AUTO))
     {
       cp_lexer_consume_token (parser->lexer);
@@ -12354,7 +12354,7 @@
   if (! cp_parser_uncommitted_to_tentative_parse_p (parser)
       && type_uses_auto (type_specified))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
 	{
 	  error ("invalid use of %<auto%> in conversion operator");
 	  return error_mark_node;
@@ -14719,17 +14719,17 @@
 
 	  if (current_class_type && LAMBDA_TYPE_P (current_class_type))
 	    {
-	      if (cxx_dialect < cxx1y)
+	      if (cxx_dialect < cxx14)
 		pedwarn (location_of (type), 0,
 			 "use of %<auto%> in lambda parameter declaration "
 			 "only available with "
-			 "-std=c++1y or -std=gnu++1y");
+			 "-std=c++14 or -std=gnu++14");
 	    }
-	  else if (cxx_dialect < cxx1y)
+	  else if (cxx_dialect < cxx14)
 	    pedwarn (location_of (type), 0,
 		     "use of %<auto%> in parameter declaration "
 		     "only available with "
-		     "-std=c++1y or -std=gnu++1y");
+		     "-std=c++14 or -std=gnu++14");
 	  else
 	    pedwarn (location_of (type), OPT_Wpedantic,
 		     "ISO C++ forbids use of %<auto%> in parameter "
@@ -18231,7 +18231,7 @@
   if (type_specifier_seq.type
       /* None of the valid uses of 'auto' in C++14 involve the type-id
 	 nonterminal, but it is valid in a trailing-return-type.  */
-      && !(cxx_dialect >= cxx1y && is_trailing_return)
+      && !(cxx_dialect >= cxx14 && is_trailing_return)
       && type_uses_auto (type_specifier_seq.type))
     {
       /* A type-id with type 'auto' is only ok if the abstract declarator
@@ -18264,7 +18264,7 @@
     = G_("types may not be defined in template arguments");
   r = cp_parser_type_id_1 (parser, true, false);
   parser->type_definition_forbidden_message = saved_message;
-  if (cxx_dialect >= cxx1y && type_uses_auto (r))
+  if (cxx_dialect >= cxx14 && type_uses_auto (r))
     {
       error ("invalid use of %<auto%> in template argument");
       r = error_mark_node;
@@ -22120,7 +22120,7 @@
       if (is_attribute_p ("noreturn", attr_id))
 	TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu");
       /* C++14 deprecated attribute is equivalent to GNU's.  */
-      else if (cxx_dialect >= cxx1y && is_attribute_p ("deprecated", attr_id))
+      else if (cxx_dialect >= cxx14 && is_attribute_p ("deprecated", attr_id))
 	TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu");
     }
 
@@ -23333,7 +23333,7 @@
 		  || !TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm)))
 		ok = false;
 	    }
-	  else if (num_parms == 2 && cxx_dialect >= cxx1y)
+	  else if (num_parms == 2 && cxx_dialect >= cxx14)
 	    {
 	      tree parm_type = TREE_VEC_ELT (parameter_list, 0);
 	      tree type = INNERMOST_TEMPLATE_PARMS (parm_type);
@@ -23348,7 +23348,7 @@
 	}
       if (!ok)
 	{
-	  if (cxx_dialect >= cxx1y)
+	  if (cxx_dialect >= cxx14)
 	    error ("literal operator template %qD has invalid parameter list."
 		   "  Expected non-type template argument pack <char...>"
 		   " or <typename CharT, CharT...>",
Index: gcc/cp/pt.c
===================================================================
--- gcc/cp/pt.c	(revision 213910)
+++ gcc/cp/pt.c	(working copy)
@@ -2310,10 +2310,10 @@
   int wanted = num_template_headers_for_class (ctx);
   if (!TYPE_P (ctx) || !CLASSTYPE_TEMPLATE_INFO (ctx))
     {
-      if (cxx_dialect < cxx1y)
+      if (cxx_dialect < cxx14)
         pedwarn (DECL_SOURCE_LOCATION (decl), 0,
                  "variable templates only available with "
-                 "-std=c++1y or -std=gnu++1y");
+                 "-std=c++14 or -std=gnu++14");
 
       // Namespace-scope variable templates should have a template header.
       ++wanted;
@@ -12125,7 +12125,7 @@
 	  r = cp_build_reference_type (type, TYPE_REF_IS_RVALUE (t));
 	r = cp_build_qualified_type_real (r, cp_type_quals (t), complain);
 
-	if (cxx_dialect >= cxx1y
+	if (cxx_dialect >= cxx14
 	    && !(TREE_CODE (t) == REFERENCE_TYPE && REFERENCE_VLA_OK (t))
 	    && array_of_runtime_bound_p (type)
 	    && (flag_iso || warn_vla > 0))
Index: gcc/cp/semantics.c
===================================================================
--- gcc/cp/semantics.c	(revision 213910)
+++ gcc/cp/semantics.c	(working copy)
@@ -1610,7 +1610,7 @@
 force_paren_expr (tree expr)
 {
   /* This is only needed for decltype(auto) in C++14.  */
-  if (cxx_dialect < cxx1y)
+  if (cxx_dialect < cxx14)
     return expr;
 
   /* If we're in unevaluated context, we can't be deducing a
@@ -7063,7 +7063,7 @@
 	}
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     {
       if (complain & tf_warning_or_error)
Index: gcc/cp/tree.c
===================================================================
--- gcc/cp/tree.c	(revision 213910)
+++ gcc/cp/tree.c	(working copy)
@@ -890,7 +890,7 @@
   return build_cplus_array_type (elt, build_index_type (size_int (n - 1)));
 }
 
-/* True iff T is a C++1y array of runtime bound (VLA).  */
+/* True iff T is a C++14 array of runtime bound (VLA).  */
 
 bool
 array_of_runtime_bound_p (tree t)
Index: gcc/cp/typeck.c
===================================================================
--- gcc/cp/typeck.c	(revision 213910)
+++ gcc/cp/typeck.c	(working copy)
@@ -1148,7 +1148,7 @@
 
   /* In C++14 we can end up comparing 'auto' to a normal template
      parameter.  Don't confuse them.  */
-  if (cxx_dialect >= cxx1y && (is_auto (t1) || is_auto (t2)))
+  if (cxx_dialect >= cxx14 && (is_auto (t1) || is_auto (t2)))
     return TYPE_IDENTIFIER (t1) == TYPE_IDENTIFIER (t2);
 
   return true;
@@ -1558,7 +1558,7 @@
       return value;
     }
 
-  if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (type)
+  if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (type)
       && (flag_iso || warn_vla > 0))
     {
       if (complain & tf_warning_or_error)
@@ -5509,7 +5509,7 @@
 
   if (argtype != error_mark_node)
     {
-      if (cxx_dialect >= cxx1y && array_of_runtime_bound_p (argtype)
+      if (cxx_dialect >= cxx14 && array_of_runtime_bound_p (argtype)
 	  && (flag_iso || warn_vla > 0))
 	{
 	  if (complain & tf_warning_or_error)
@@ -6331,7 +6331,7 @@
       /* In C++14 mode, this interacts badly with force_paren_expr.  And it
 	 isn't necessary in any mode, because the code below handles
 	 glvalues properly.  For 4.9, just skip it in C++14 mode.  */
-      if (cxx_dialect < cxx1y && REFERENCE_REF_P (expr))
+      if (cxx_dialect < cxx14 && REFERENCE_REF_P (expr))
 	expr = TREE_OPERAND (expr, 0);
 
       if ((TREE_CODE (type) == REFERENCE_TYPE
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi	(revision 213910)
+++ gcc/doc/invoke.texi	(working copy)
@@ -1721,13 +1721,23 @@
 GNU dialect of @option{-std=c++11}.
 The name @samp{gnu++0x} is deprecated.
 
-@item c++1y
+@item c++14
+@itemx c++1y
+The 2014 ISO C++ standard plus amendments.
+The name @samp{c++1y} is deprecated.
+
+@item gnu++14
+@itemx gnu++1y
+GNU dialect of @option{-std=c++14}.
+The name @samp{gnu++1y} is deprecated.
+
+@item c++1z
 The next revision of the ISO C++ standard, tentatively planned for
-2014.  Support is highly experimental, and will almost certainly
+2017.  Support is highly experimental, and will almost certainly
 change in incompatible ways in future releases.
 
-@item gnu++1y
-GNU dialect of @option{-std=c++1y}.  Support is highly experimental,
+@item gnu++1z
+GNU dialect of @option{-std=c++1z}.  Support is highly experimental,
 and will almost certainly change in incompatible ways in future
 releases.
 @end table
@@ -2675,7 +2685,7 @@
 as C++11 user-defined literal numeric suffixes.
 This is on by default for all pre-C++11 dialects and all GNU dialects:
 @option{-std=c++98}, @option{-std=gnu++98}, @option{-std=gnu++11},
-@option{-std=gnu++1y}.
+@option{-std=gnu++14}.
 This option is off by default
 for ISO C++11 onwards (@option{-std=c++11}, ...).
 @end table
@@ -5485,7 +5495,7 @@
 @opindex fsanitize=vla-bound
 This option instructs the compiler to check that the size of a variable
 length array is positive.  This option does not have any effect in
-@option{-std=c++1y} mode, as the standard requires the exception be thrown
+@option{-std=c++14} mode, as the standard requires the exception be thrown
 instead.
 
 @item -fsanitize=null
Index: gcc/testsuite/g++.dg/cpp0x/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/cplusplus.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp0x/cplusplus.C	(working copy)
@@ -0,0 +1,5 @@
+// { dg-do compile { target c++11_only } }
+
+#if __cplusplus != 201103L
+#error "__cplusplus != 201103L"
+#endif
Index: gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C	(working copy)
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+#if __cplusplus != 201103L
+#error "__cplusplus != 201103L"
+#endif
Index: gcc/testsuite/g++.dg/cpp0x/auto3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/auto3.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp0x/auto3.C	(working copy)
@@ -19,7 +19,7 @@
 // CWG issue 625
 A<auto> A2 = A1;		// { dg-error "" }
 
-auto foo() { }			// { dg-error "auto" "" { target { ! c++1y } } }
+auto foo() { }			// { dg-error "auto" "" { target { ! c++14 } } }
 
 void bar(auto i)		// { dg-error "incomplete|auto" }
 {
Index: gcc/testsuite/g++.dg/cpp0x/auto41.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/auto41.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp0x/auto41.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58550
 // { dg-do compile { target c++11 } }
 
-auto foo();			// { dg-error "auto" "" { target { ! c++1y } } }
-auto fp = foo;			// { dg-error "auto" "" { target c++1y } }
+auto foo();			// { dg-error "auto" "" { target { ! c++14 } } }
+auto fp = foo;			// { dg-error "auto" "" { target c++14 } }
Index: gcc/testsuite/g++.dg/cpp0x/auto9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/auto9.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp0x/auto9.C	(working copy)
@@ -15,13 +15,13 @@
 
 struct A
 {
-  operator auto ();				// { dg-error "auto" "" { target { ! c++1y } } }
-  operator auto *();				// { dg-error "auto" "" { target { ! c++1y } } }
+  operator auto ();				// { dg-error "auto" "" { target { ! c++14 } } }
+  operator auto *();				// { dg-error "auto" "" { target { ! c++14 } } }
 };
 
 struct A2
 {
-  operator auto () -> int;			// { dg-error "invalid use of" "" { target { ! c++1y } } }
+  operator auto () -> int;			// { dg-error "invalid use of" "" { target { ! c++14 } } }
   operator auto *() -> int;			// { dg-error "auto" }
 };
 
@@ -98,8 +98,8 @@
 template <typename T = auto> struct E {};	// { dg-error "invalid use of" }
 template <class T = auto *> struct F {};	// { dg-error "invalid use of|expected" }
 
-auto fnlate () -> auto;				// { dg-error "invalid use of" "" { target { ! c++1y } } }
-auto fnlate2 () -> auto *;			// { dg-error "invalid use of|expected" "" { target { ! c++1y } } }
+auto fnlate () -> auto;				// { dg-error "invalid use of" "" { target { ! c++14 } } }
+auto fnlate2 () -> auto *;			// { dg-error "invalid use of|expected" "" { target { ! c++14 } } }
 
 void
 badthrow () throw (auto)			// { dg-error "invalid use of" }
Index: gcc/testsuite/g++.dg/cpp0x/initlist26.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/initlist26.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp0x/initlist26.C	(working copy)
@@ -1,6 +1,6 @@
 // PR c++/42059
 // { dg-do compile { target c++11 } }
-// { dg-options "" { target { ! c++1y } } }
+// { dg-options "" { target { ! c++14 } } }
 
 void
 foo (int i)
Index: gcc/testsuite/g++.dg/cpp0x/pr59111.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/pr59111.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp0x/pr59111.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59111
 // { dg-do compile { target c++11 } }
 
-auto& foo();	// { dg-error "type specifier without trailing return type" "" { target { ! c++1y } } }
+auto& foo();	// { dg-error "type specifier without trailing return type" "" { target { ! c++14 } } }
 int i = foo();	// { dg-error "" }
Index: gcc/testsuite/g++.dg/cpp0x/trailing2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/trailing2.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp0x/trailing2.C	(working copy)
@@ -3,7 +3,7 @@
 // { dg-do compile { target c++11 } }
 
 auto f1 () -> int;
-auto f2 ();		// { dg-error "without trailing return type" "" { target { ! c++1y } } }
+auto f2 ();		// { dg-error "without trailing return type" "" { target { ! c++14 } } }
 int f3 () -> int;	// { dg-error "trailing return type" }
 auto *f4 () -> int;	// { dg-error "trailing return type" }
 
@@ -10,7 +10,7 @@
 struct A
 {
   auto f5 () const -> int;
-  auto f6 ();		// { dg-error "without trailing return type" "" { target { ! c++1y } } }
+  auto f6 ();		// { dg-error "without trailing return type" "" { target { ! c++14 } } }
   int f7 () -> int;	// { dg-error "trailing return type" }
   auto *f8 () -> int;	// { dg-error "trailing return type" }
 };
Index: gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 class [[deprecated]] A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C	(working copy)
@@ -1,5 +1,5 @@
 // DR 1586
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template <class T>
 void f (T* p)
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 constexpr auto f() { return (char)42; }
 #define SA(X) static_assert ((X),#X)
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn10.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn10.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn10.C	(working copy)
@@ -1,6 +1,6 @@
 // A template declared with auto should be declared with auto in an
 // explicit instantiation or explicit specialization, too.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f(T t) { return t; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn11.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn11.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn11.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return; } 		// OK, return type is void
 auto* g() { return; }		// { dg-error "no value" }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn12.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn12.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn12.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-final { scan-assembler "_ZN1AIiEcvDaEv" } }
 
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn13.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn13.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn13.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A {
   template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn14.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn14.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn14.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/56177
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f ();
 auto f () { return 33; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn15.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn15.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn15.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-Wno-return-local-addr" }
 
 template<class,class> struct same_type;
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn16.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn16.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn16.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<class,class> struct ST;
 template<class T> struct ST<T,T> {};
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn17.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn17.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn17.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int c;
 int d;
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn18.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn18.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn18.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn19.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn19.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn19.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f() { return T::i; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn2.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn2.C	(working copy)
@@ -1,3 +1,3 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return f(); }	// { dg-error "auto" }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn20.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn20.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn20.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 auto f(T) { return 42; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn21.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn21.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn21.C	(working copy)
@@ -1,5 +1,5 @@
 // N3638: decltype(auto) must stand alone
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f();
 decltype(auto) g1() { return &f; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn22.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn22.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn22.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn23.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn23.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn23.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58561
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-g" }
 
 auto foo();
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn24.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn24.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn24.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60314
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-g" }
 
 // fine
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn25.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn25.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60574
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-require-effective-target lto }
 // { dg-options "-flto" }
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn3.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn3.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 bool b;
 auto f()
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn4.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn4.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T>
 constexpr auto f(T t) { return t+1; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn5.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn5.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i;
 auto& f() { return i; }
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn6.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn6.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn6.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T, class U> struct ST;
 template <class T> struct ST<T,T> {};
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn7.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn7.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn7.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f();
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn8.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn8.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f() { return 42; }		// { dg-message "old declaration .auto" }
 auto f();			// OK
Index: gcc/testsuite/g++.dg/cpp1y/auto-fn9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-fn9.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-fn9.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-final { scan-assembler "_Z1fIiERDaRKT_S1_" } }
 
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C	(working copy)
@@ -1,5 +1,5 @@
 // Mangling for decltype(auto)
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f();
 
Index: gcc/testsuite/g++.dg/cpp1y/auto-neg1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/auto-neg1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/auto-neg1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60312
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> struct A;
 
Index: gcc/testsuite/g++.dg/cpp1y/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/cplusplus.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/cplusplus.C	(working copy)
@@ -1,5 +1,5 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14_only } }
 
-#if __cplusplus <= 201103L
-#error
+#if __cplusplus != 201402L
+#error "__cplusplus != 201402L"
 #endif
Index: gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C	(working copy)
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// { dg-options "-std=c++1y" }
+
+#if __cplusplus != 201402L
+#error "__cplusplus != 201402L"
+#endif
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target { ! c++1y } } }
+// { dg-do compile { target { ! c++14 } } }
 
 #define assert(E) if(!(E))__builtin_abort();
 
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 main()
Index: gcc/testsuite/g++.dg/cpp1y/digit-sep.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/digit-sep.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/digit-sep.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #define assert(E) if(!(E))__builtin_abort();
 
Index: gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C	(working copy)
@@ -1,5 +1,5 @@
 // Out-of-line generic member function definitions.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C	(working copy)
@@ -1,7 +1,7 @@
 // Testcase for an extension to allow return type deduction when the lambda
 // contains more than just a single return-statement.
 
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 bool b;
 template <class T>
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda conversion to function ptr test from N3690 5.1.2.6
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void f1(int (*)(int)) { }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda type dependence test part from N3690 5.1.2.12
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f(int, const int (&)[2] = {}) { } // #1
 void f(const int&, const int (&)[1]) { } // #2
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C	(working copy)
@@ -1,5 +1,5 @@
 // Mixed explicit and implicit generic lambda test.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C	(working copy)
@@ -1,6 +1,6 @@
 // Ensure that generic lambdas properly construct and destroy user types.
 // { dg-options "-DUSE_AUTO_SYNTAX" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i = 3;
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C	(working copy)
@@ -1,5 +1,5 @@
 // Basic generic lambda test
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template <typename T, typename U> struct pair {};
 template <typename... T> struct tuple {};
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59271
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 extern "C" int printf (const char *, ...);
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C	(working copy)
@@ -1,5 +1,5 @@
 // Explicit generic lambda test from N3690 5.1.2.5
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <iostream>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C	(working copy)
@@ -1,5 +1,5 @@
 // Explicit generic lambda conversion to function ptr test from N3690 5.1.2.6
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void f1(int (*)(int)) { }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C	(working copy)
@@ -1,5 +1,5 @@
 // Ensure that generic lambdas properly construct and destroy user types.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-DUSE_EXPLICIT_TEMPLATE_SYNTAX" }
 
 #include "lambda-generic-udt.C"
Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic.C	(working copy)
@@ -1,5 +1,5 @@
 // Generic lambda test from N3690 5.1.2.5
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <iostream>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init.C	(working copy)
@@ -1,5 +1,5 @@
-// Test for the explicit initializer extension of C++1y
-// { dg-do compile { target c++1y } }
+// Test for the explicit initializer extension of C++14
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init1.C	(working copy)
@@ -1,6 +1,6 @@
 // N3648: capture init
 // { dg-options "-w" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init2.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init2.C	(working copy)
@@ -1,5 +1,5 @@
 // N3648: redundancy and capture init
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init3.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init3.C	(working copy)
@@ -1,6 +1,6 @@
 // N3648: capture init at non-block scope
 // { dg-options "-w" }
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int i = 42;
 int j = [x=i]{ return x; }();
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init4.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init4.C	(working copy)
@@ -1,5 +1,5 @@
 // N3648: capture init example from paper
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 int x = 4;
 auto y = [&r = x, x = x+1]()->int {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init5.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init5.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for paren and brace initializers
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <initializer_list>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init6.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init6.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init6.C	(working copy)
@@ -1,5 +1,5 @@
 // Test that captures are not named in the closure type.
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int main()
 {
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init7.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init7.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59349
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int foo () {
   [bar()]{};			// { dg-error "empty initializer" }
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init8.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init8.C	(working copy)
@@ -1,5 +1,5 @@
 // DR1760: "no additional copy and destruction is performed"
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <cassert>
 
Index: gcc/testsuite/g++.dg/cpp1y/lambda-init9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-init9.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-init9.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void f()
 {
Index: gcc/testsuite/g++.dg/cpp1y/mangle1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/mangle1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/mangle1.C	(working copy)
@@ -1,5 +1,5 @@
 // Test that the parens don't show up in the mangling
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-Wno-return-local-addr" }
 // { dg-final { scan-assembler "_Z1gI1AEDTdtfp_1iET_" } }
 
Index: gcc/testsuite/g++.dg/cpp1y/pr57640.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr57640.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr57640.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <chrono>
 
Index: gcc/testsuite/g++.dg/cpp1y/pr57644.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr57644.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr57644.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct Foo
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr58500.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58500.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr58500.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58500
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {};
Index: gcc/testsuite/g++.dg/cpp1y/pr58533.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58533.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr58533.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58533
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr58534.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58534.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr58534.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58534
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template<typename> void foo(const auto&) {}
Index: gcc/testsuite/g++.dg/cpp1y/pr58535.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58535.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr58535.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58535
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr58536.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58536.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr58536.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58536
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr58548.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58548.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr58548.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58548
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto)
Index: gcc/testsuite/g++.dg/cpp1y/pr58549.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58549.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr58549.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/58549
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto)
Index: gcc/testsuite/g++.dg/cpp1y/pr58637.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58637.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr58637.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/58637
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<> void foo(auto); // { dg-error "auto|not a template" }
Index: gcc/testsuite/g++.dg/cpp1y/pr58708.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr58708.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr58708.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 template<typename, typename>
   struct is_same
Index: gcc/testsuite/g++.dg/cpp1y/pr59110.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59110.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr59110.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59110
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int i = *(auto*)0; // { dg-error "" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59112.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59112.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr59112.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59112
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr59113.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59113.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr59113.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59113
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr59629.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59629.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr59629.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59629
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int i = []{ auto 0; }()); // { dg-error "expected|could not convert" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59635.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59635.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr59635.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59635
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = [] (auto, ...) { return 0; };
 
Index: gcc/testsuite/g++.dg/cpp1y/pr59636.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59636.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr59636.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/59636
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = []() { return []<>() {}; };  // { dg-error "expected identifier" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59638.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59638.C	(revision 214399)
+++ gcc/testsuite/g++.dg/cpp1y/pr59638.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59638
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void (*a)(auto);         // { dg-error "" }
Index: gcc/testsuite/g++.dg/cpp1y/pr59867.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr59867.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr59867.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/59867
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 using namespace std;
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60033.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60033.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60033.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60033
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <typename... T>
 auto f(T&&... ts)
Index: gcc/testsuite/g++.dg/cpp1y/pr60052.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60052.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60052.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60052
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60053.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60053.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60053.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60053
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60054.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60054.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60054.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60054
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename T> T fooA(T);
 template<typename T> decltype(T{}) fooB(T);
Index: gcc/testsuite/g++.dg/cpp1y/pr60064.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60064.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60064.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60064
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 class A
Index: gcc/testsuite/g++.dg/cpp1y/pr60065.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60065.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60065.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60065
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template <int> void foo(auto... x);
Index: gcc/testsuite/g++.dg/cpp1y/pr60190.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60190.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60190.C	(working copy)
@@ -1,4 +1,4 @@
 // PR c++/60190
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 auto f = []<int>() -> int() {}; // { dg-error "returning a function|expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60311.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60311.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60311.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60311
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<void(*)(auto)> struct A {}; // { dg-error "auto" }
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60332.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60332.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60332.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60332
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo();
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60376.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60376.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60376.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60376
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/cpp1y/pr60377.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60377.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60377.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60377
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void foo(auto, void (f*)()); // { dg-error "expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60384.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60384.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60384.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60384
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> int foo();
 
Index: gcc/testsuite/g++.dg/cpp1y/pr60390.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60390.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60390.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60390
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60391.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60391.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60391.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60391
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 namespace N
Index: gcc/testsuite/g++.dg/cpp1y/pr60393.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60393.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60393.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60393
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 void (*f)(auto) + 0; // { dg-error "expected" }
Index: gcc/testsuite/g++.dg/cpp1y/pr60573.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60573.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60573.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60573
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A
Index: gcc/testsuite/g++.dg/cpp1y/pr60626.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60626.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60626.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60626
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 struct A {};
Index: gcc/testsuite/g++.dg/cpp1y/pr60627.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/pr60627.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/pr60627.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60627
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "" }
 
 template<typename T> void foo(T) {}
Index: gcc/testsuite/g++.dg/cpp1y/regress1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/regress1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/regress1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60409
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 struct A
 {
Index: gcc/testsuite/g++.dg/system-binary-constants-1.C
===================================================================
--- gcc/testsuite/g++.dg/system-binary-constants-1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/system-binary-constants-1.C	(working copy)
@@ -14,5 +14,5 @@
 					    warning.  */
   return 23;
 #endif
-  return 0b1101; /* { dg-warning "binary constants are a C..1y feature or GCC extension" } */
+  return 0b1101; /* { dg-warning "binary constants are a C..14 feature or GCC extension" } */
 }
Index: gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C	(working copy)
@@ -1,5 +1,5 @@
 // Origin: Dodji Seketeli <dodji@redhat.com>
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include "../system-binary-constants-1.h"
 
@@ -9,5 +9,5 @@
 #if BINARY_INT_CONSTANT_IN_SYSTEM_HEADER
   return 23;
 #endif
-  return 0b1101; // { dg-bogus "binary constants are a C..1y feature or GCC extension" }
+  return 0b1101; // { dg-bogus "binary constants are a C..14 feature or GCC extension" }
 }
Index: gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target { c++11 && { ! c++1y } } } }
+// { dg-do compile { target { c++11 && { ! c++14 } } } }
 
 template<typename CharT, CharT... String>
   int
Index: gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-char-template.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename CharT, CharT... String>
   int
Index: gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-empty-string-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 operator "*"_s(unsigned long long) // { dg-error "expected empty string after 'operator'" }
Index: gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-enc-prefix-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int
 operator L""_Ls(unsigned long long) // { dg-error "invalid encoding prefix in literal operator" }
Index: gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include "complex_literals.h"
 
Index: gcc/testsuite/g++.dg/cpp1y/var-templ1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/var-templ1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/var-templ1.C	(working copy)
@@ -1,5 +1,4 @@
-// { dg-do run }
-// { dg-options "-std=c++1y" }
+// { dg-do run { target c++14 } }
 
 template<int A, int B>
   struct S1
Index: gcc/testsuite/g++.dg/cpp1y/var-templ2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/var-templ2.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/var-templ2.C	(working copy)
@@ -1,5 +1,4 @@
-// { dg-do compile }
-// { dg-options "-std=c++1y" }
+// { dg-do compile { target c++14 } }
 
 // Template variables and static member variables of template classes are
 // often confused.
Index: gcc/testsuite/g++.dg/cpp1y/var-templ3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/var-templ3.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/var-templ3.C	(working copy)
@@ -1,5 +1,4 @@
-// { dg-do run }
-// { dg-options "-std=c++1y" }
+// { dg-do run { target c++14 } }
 
 template<typename T>
  constexpr int var = sizeof (T);
Index: gcc/testsuite/g++.dg/cpp1y/var-templ4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/var-templ4.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/var-templ4.C	(working copy)
@@ -1,5 +1,4 @@
-// { dg-do run }
-// { dg-options "-std=c++1y" }
+// { dg-do run { target c++14 } }
 
 template<typename T>
   constexpr int var = sizeof (T);
Index: gcc/testsuite/g++.dg/cpp1y/var-templ5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/var-templ5.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/var-templ5.C	(working copy)
@@ -1,5 +1,4 @@
-// { dg-do run }
-// { dg-options "-std=c++1y" }
+// { dg-do run { target c++14 } }
 
 template<int A, int B>
   struct S1
Index: gcc/testsuite/g++.dg/cpp1y/var-templ6.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/var-templ6.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/var-templ6.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-options "-std=c++1y" }
+// { dg-do compile { target c++14 } }
 
 template<typename T>
   constexpr bool Class = __is_class(T);
Index: gcc/testsuite/g++.dg/cpp1y/var-templ7.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/var-templ7.C	(revision 214399)
+++ gcc/testsuite/g++.dg/cpp1y/var-templ7.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template <class T> T var = 0;
 
Index: gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <initializer_list>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla1.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 #include <typeinfo>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla10.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla10.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla10.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/57402
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 int i = 2;
 
Index: gcc/testsuite/g++.dg/cpp1y/vla11.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla11.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla11.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60251
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla12.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla12.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla12.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60250
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename> void foo()
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla13.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla13.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla13.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/60227
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void foo(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla2.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla2.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla2.C	(working copy)
@@ -1,5 +1,5 @@
 // N3639 allows initialization and capture of VLAs
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 void f(int n)
 {
Index: gcc/testsuite/g++.dg/cpp1y/vla3.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla3.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla3.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for throwing bad_array_length on invalid array length
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <new>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla4.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla4.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla4.C	(working copy)
@@ -1,5 +1,5 @@
 // Test for range-based for with VLAs.
-// { dg-do run { target c++1y } }
+// { dg-do run { target c++14 } }
 
 #include <new>
 
Index: gcc/testsuite/g++.dg/cpp1y/vla5.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla5.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla5.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/55149
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 void test(int n) {
   int r[n];
Index: gcc/testsuite/g++.dg/cpp1y/vla8.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla8.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla8.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/55149
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<unsigned int TA>
  struct SA
Index: gcc/testsuite/g++.dg/cpp1y/vla9.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/vla9.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1y/vla9.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/57408
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 
 template<typename Callable>
   struct Impl
Index: gcc/testsuite/g++.dg/ext/vector23.C
===================================================================
--- gcc/testsuite/g++.dg/ext/vector23.C	(revision 213910)
+++ gcc/testsuite/g++.dg/ext/vector23.C	(working copy)
@@ -1,4 +1,4 @@
-/* { dg-do compile { target c++1y } } */
+/* { dg-do compile { target c++14 } } */
 /* { dg-options "-Wsign-conversion" } */
 // Ignore warning on some powerpc-linux configurations.
 // { dg-prune-output "non-standard ABI extension" }
Index: gcc/testsuite/g++.dg/ext/vla11.C
===================================================================
--- gcc/testsuite/g++.dg/ext/vla11.C	(revision 213910)
+++ gcc/testsuite/g++.dg/ext/vla11.C	(working copy)
@@ -1,6 +1,6 @@
 // Test that auto works with VLAs.
 // { dg-do compile { target c++11 } }
-// { dg-options "" { target { ! c++1y } } }
+// { dg-options "" { target { ! c++14 } } }
 
 void bar(int n)
 {
Index: gcc/testsuite/g++.dg/ubsan/cxx1y-vla.C
===================================================================
--- gcc/testsuite/g++.dg/ubsan/cxx1y-vla.C	(revision 213910)
+++ gcc/testsuite/g++.dg/ubsan/cxx1y-vla.C	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-fsanitize=vla-bound -Wall -Wno-unused-variable -std=c++1y" } */
+/* { dg-options "-fsanitize=vla-bound -Wall -Wno-unused-variable -std=c++14" } */
 /* { dg-shouldfail "ubsan" } */
 
 int
Index: gcc/testsuite/g++.dg/warn/Wvla-2.C
===================================================================
--- gcc/testsuite/g++.dg/warn/Wvla-2.C	(revision 213910)
+++ gcc/testsuite/g++.dg/warn/Wvla-2.C	(working copy)
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { ! c++1y } } } */
+/* { dg-do compile { target { ! c++14 } } } */
 /* { dg-options "-pedantic-errors -Wvla" } */
 
 void func (int i)
Index: gcc/testsuite/g++.dg/debug/dwarf2/auto1.C
===================================================================
--- gcc/testsuite/g++.dg/debug/dwarf2/auto1.C	(revision 213910)
+++ gcc/testsuite/g++.dg/debug/dwarf2/auto1.C	(working copy)
@@ -1,5 +1,5 @@
 // PR c++/53756
-// { dg-do compile { target c++1y } }
+// { dg-do compile { target c++14 } }
 // { dg-options "-g -dA -fno-debug-types-section" }
 // We're looking for something like
 
Index: gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C	(revision 213910)
+++ gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C	(working copy)
@@ -1,4 +1,4 @@
-// { dg-do compile { target c++1y_down } }
+// { dg-do compile { target c++14_down } }
 // { dg-options "-pedantic" }
 
 template<typename T>
Index: gcc/testsuite/g++.dg/cpp1z/cplusplus.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1z/cplusplus.C	(revision 0)
+++ gcc/testsuite/g++.dg/cpp1z/cplusplus.C	(working copy)
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// { dg-options "-std=c++1z" }
+
+#if __cplusplus <= 201402L
+#error "__cplusplus <= 201402L"
+#endif
Index: gcc/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp	(revision 213910)
+++ gcc/testsuite/lib/target-supports.exp	(working copy)
@@ -5683,7 +5683,7 @@
 }
 
 # Check whether the current active language standard supports the features
-# of C++11/C++1y by checking for the presence of one of the -std
+# of C++11/C++14 by checking for the presence of one of the -std
 # flags.  This assumes that the default for the compiler is C++98, and that
 # there will never be multiple -std= arguments on the command line.
 proc check_effective_target_c++11_only { } {
@@ -5696,28 +5696,29 @@
     if [check_effective_target_c++11_only] {
 	return 1
     }
-    return [check_effective_target_c++1y]
+    return [check_effective_target_c++14]
 }
 proc check_effective_target_c++11_down { } {
     if ![check_effective_target_c++] {
 	return 0
     }
-    return ![check_effective_target_c++1y]
+    return ![check_effective_target_c++14]
 }
 
-proc check_effective_target_c++1y_only { } {
+proc check_effective_target_c++14_only { } {
     if ![check_effective_target_c++] {
 	return 0
     }
     return [check-flags { { } { } { -std=c++1y -std=gnu++1y -std=c++14 -std=gnu++14 } }]
 }
-proc check_effective_target_c++1y { } {
-    if [check_effective_target_c++1y_only] {
+
+proc check_effective_target_c++14 { } {
+    if [check_effective_target_c++14_only] {
 	return 1
     }
     return [check_effective_target_c++1z]
 }
-proc check_effective_target_c++1y_down { } {
+proc check_effective_target_c++14_down { } {
     if ![check_effective_target_c++] {
 	return 0
     }

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH, C++, CPP] Add C++1z to the preprocessor.  Rename C++1y to C++14.
  2014-08-23 17:03           ` Ed Smith-Rowland
@ 2014-08-25  5:03             ` Jason Merrill
  0 siblings, 0 replies; 9+ messages in thread
From: Jason Merrill @ 2014-08-25  5:03 UTC (permalink / raw)
  To: Ed Smith-Rowland, Mike Stump; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 27 bytes --]

Adding a few more tweaks:


[-- Attachment #2: cxx14.patch --]
[-- Type: text/x-patch, Size: 3410 bytes --]

commit bf054f32b165fda6e90c52a57a31538e5ae24678
Author: Jason Merrill <jason@redhat.com>
Date:   Mon Aug 25 00:48:17 2014 -0400

    	* c.opt: Change -std=c++1y and -std=gnu++1y to be aliases for
    	-std=c++14 and -std=gnu++14, rather than the reverse.
    	* c-opts.c (c_common_handle_option): Change OPT_std_c__1y and
    	OPT_std_gnu__1y to OPT_std_c__14 and OPT_std_gnu__14.
    	* c-common.h (cxx_dialect): Remove cxx1y.

diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index f621a3a..d1cc810 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -640,9 +640,8 @@ enum cxx_dialect {
   /* C++11  */
   cxx0x,
   cxx11 = cxx0x,
-  /* C++14  */
-  cxx1y,
-  cxx14 = cxx1y,
+  /* C++14 */
+  cxx14,
   /* C++1z (C++17?) */
   cxx1z
 };
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index 42f1759..1b01b4f 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -698,12 +698,12 @@ c_common_handle_option (size_t scode, const char *arg, int value,
 	}
       break;
 
-    case OPT_std_c__1y:
-    case OPT_std_gnu__1y:
+    case OPT_std_c__14:
+    case OPT_std_gnu__14:
       if (!preprocessing_asm_p)
 	{
-	  set_std_cxx14 (code == OPT_std_c__1y /* ISO */);
-	  if (code == OPT_std_c__1y)
+	  set_std_cxx14 (code == OPT_std_c__14 /* ISO */);
+	  if (code == OPT_std_c__14)
 	    cpp_opts->ext_numeric_literals = 0;
 	}
       break;
@@ -1587,7 +1587,7 @@ set_std_cxx11 (int iso)
   cxx_dialect = cxx11;
 }
 
-/* Set the C++ 201y draft standard (without GNU extensions if ISO).  */
+/* Set the C++ 2014 draft standard (without GNU extensions if ISO).  */
 static void
 set_std_cxx14 (int iso)
 {
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index cb7bb3e..d619250 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -1440,11 +1440,12 @@ C++ ObjC++ Alias(std=c++11) Undocumented
 Deprecated in favor of -std=c++11
 
 std=c++1y
-C++ ObjC++
-Conform to the ISO 2014(?) C++ draft standard (experimental and incomplete support)
+C++ ObjC++ Alias(std=c++14) Undocumented
+Deprecated in favor of -std=c++14
 
 std=c++14
-C++ ObjC++ Alias(std=c++1y) Undocumented
+C++ ObjC++ Undocumented
+Conform to the ISO 2014 C++ standard (experimental and incomplete support)
 
 std=c++1z
 C++ ObjC++
@@ -1496,11 +1497,11 @@ C++ ObjC++ Alias(std=gnu++11)
 Deprecated in favor of -std=gnu++11
 
 std=gnu++1y
-C++ ObjC++
-Conform to the ISO 201y(4?) C++ draft standard with GNU extensions (experimental and incomplete support)
+C++ ObjC++ Alias(std=gnu++14) Undocumented
 
 std=gnu++14
-C++ ObjC++ Alias(std=gnu++1y) Undocumented
+C++ ObjC++
+Conform to the ISO 2014 C++ standard with GNU extensions (experimental and incomplete support)
 
 std=gnu++1z
 C++ ObjC++
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index f76fc3f..c50d8b8 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -248,10 +248,10 @@ static GTY(()) bool cold_text_section_used = false;
 /* The default cold text section.  */
 static GTY(()) section *cold_text_section;
 
-/* The DIE for C++1y 'auto' in a function return type.  */
+/* The DIE for C++14 'auto' in a function return type.  */
 static GTY(()) dw_die_ref auto_die;
 
-/* The DIE for C++1y 'decltype(auto)' in a function return type.  */
+/* The DIE for C++14 'decltype(auto)' in a function return type.  */
 static GTY(()) dw_die_ref decltype_auto_die;
 
 /* Forward declarations for functions defined in this file.  */

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2014-08-25  5:03 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-10  9:13 [PATCH, C++, CPP] Add C++1z to the preprocessor. Rename C++1y to C++14 Ed Smith-Rowland
2014-07-10 10:51 ` Mike Stump
2014-07-16 15:02   ` Ed Smith-Rowland
2014-07-16 16:22     ` Mike Stump
2014-07-26 14:07       ` Ed Smith-Rowland
2014-08-22 20:36         ` Jason Merrill
2014-08-23 17:03           ` Ed Smith-Rowland
2014-08-25  5:03             ` Jason Merrill
2014-07-26 17:50       ` Ed Smith-Rowland

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).