c-format.c (gcc_cxxdiag_char_table): Add %X.
authorJason Merrill <jason@redhat.com>
Wed, 23 Oct 2013 19:16:15 +0000 (15:16 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 23 Oct 2013 19:16:15 +0000 (15:16 -0400)
c-family/
* c-format.c (gcc_cxxdiag_char_table): Add %X.
cp/
* error.c (eh_spec_to_string): New.
(cp_printer): Use it for %X.

From-SVN: r203988

gcc/c-family/ChangeLog
gcc/c-family/c-format.c
gcc/cp/ChangeLog
gcc/cp/error.c

index 106bfa8c8c857f6fc8c441f641407a6bffd75bb7..c7534b3326148bd6a415a891ea3fabb35cdc77cb 100644 (file)
@@ -1,3 +1,7 @@
+2013-10-23  Jason Merrill  <jason@redhat.com>
+
+       * c-format.c (gcc_cxxdiag_char_table): Add %X.
+
 2013-10-11  Jakub Jelinek  <jakub@redhat.com>
 
        * c-common.h (omp_clause_mask::operator !=): New method.
index c11d93aa89d96c012a471606a53f156e868a03f8..f0371d3cb6ec200d139c498eb155cf8718bcbf55 100644 (file)
@@ -721,7 +721,7 @@ static const format_char_info gcc_cxxdiag_char_table[] =
   /* Custom conversion specifiers.  */
 
   /* These will require a "tree" at runtime.  */
-  { "ADEFKSTV",0,STD_C89,{ T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q+#",   "",   NULL },
+  { "ADEFKSTVX",0,STD_C89,{ T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q+#",   "",   NULL },
 
   { "v", 0,STD_C89, { T89_I,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q#",  "",   NULL },
 
index 99269af9c6f0e6246d186256ab2bef8c1d8df3fb..78721a3ba356116058c30e837c3c1a347b095375 100644 (file)
@@ -1,5 +1,8 @@
 2013-10-23  Jason Merrill  <jason@redhat.com>
 
+       * error.c (eh_spec_to_string): New.
+       (cp_printer): Use it for %X.
+
        In C++11 a trivial [cd]tor might not be callable.
        * class.c (user_provided_p): A function deleted on its declation
        in the class is not user-provided.
index 3f6f5948a6651b50fbf3acaed7735da9c39015a0..5f997c3ed2924a04617a01af167ba068c4b226de 100644 (file)
@@ -2998,6 +2998,15 @@ cv_to_string (tree p, int v)
   return pp_ggc_formatted_text (cxx_pp);
 }
 
+static const char *
+eh_spec_to_string (tree p, int /*v*/)
+{
+  int flags = 0;
+  reinit_cxx_pp ();
+  dump_exception_spec (cxx_pp, p, flags);
+  return pp_ggc_formatted_text (cxx_pp);
+}
+
 /* Langhook for print_error_function.  */
 void
 cxx_print_error_function (diagnostic_context *context, const char *file,
@@ -3379,8 +3388,10 @@ maybe_print_constexpr_context (diagnostic_context *context)
    %O  binary operator.
    %P   function parameter whose position is indicated by an integer.
    %Q  assignment operator.
+   %S   substitution (template + args)
    %T   type.
-   %V   cv-qualifier.  */
+   %V   cv-qualifier.
+   %X   exception-specification.  */
 static bool
 cp_printer (pretty_printer *pp, text_info *text, const char *spec,
            int precision, bool wide, bool set_locus, bool verbose)
@@ -3427,6 +3438,7 @@ cp_printer (pretty_printer *pp, text_info *text, const char *spec,
     case 'S': result = subst_to_string (next_tree);            break;
     case 'T': result = type_to_string (next_tree, verbose);    break;
     case 'V': result = cv_to_string (next_tree, verbose);      break;
+    case 'X': result = eh_spec_to_string (next_tree, verbose);  break;
 
     case 'K':
       percent_K_format (text);