Patchwork Fix -fdump-ada-spec

login
register
mail settings
Submitter Arnaud Charlet
Date Oct. 4, 2012, 8:26 a.m.
Message ID <20121004082643.GA30743@adacore.com>
Download mbox | patch
Permalink /patch/189060/
State New
Headers show

Comments

Arnaud Charlet - Oct. 4, 2012, 8:26 a.m.
After changes by Sharad (Add option for dumping to stderr (issue6190057)),
-fdump-ada-spec is broken, and is now a no-op.

Admittedly, this is because -fdump-ada-spec is handled differently from
other -fdump-* switches, so this patch fixes support for -fdump-ada-spec
by using an approach similar to -fdump-go-spec, and use regular switches
via c/c.opt. I've removed the handling of TDF_RAW, which was a debugging
option, and never really used, so can be simply deleted.

Change is mostly trivial/mechanical.

Tested on x86_64-pc-linux-gnu, OK for trunk?

gcc/

2012-10-04  Arnaud Charlet  <charlet@adacore.com>

	* dumpfile.h, dumpfile.c: Remove TDI_ada.

c-family/

2012-10-04  Arnaud Charlet  <charlet@adacore.com>

	* c-ada-spec.c (print_ada_declaration): Remove handling of TDF_RAW.
	* c.opt (-fdump-ada-spec, -fdump-ada-spec-slim): Move switch definition
	out of dumpfile.h.

c/

2012-10-04  Arnaud Charlet  <charlet@adacore.com>

	* c-decl.c (c_write_global_declarations): Fix handling of
	-fdump-ada-spec*.

cp/

2012-10-04  Arnaud Charlet  <charlet@adacore.com>
        
        * decl2.c (cp_write_global_declarations): Fix handling of
        -fdump-ada-spec*.

Arno
--
Richard Guenther - Oct. 4, 2012, 8:47 a.m.
On Thu, Oct 4, 2012 at 10:26 AM, Arnaud Charlet <charlet@adacore.com> wrote:
> After changes by Sharad (Add option for dumping to stderr (issue6190057)),
> -fdump-ada-spec is broken, and is now a no-op.
>
> Admittedly, this is because -fdump-ada-spec is handled differently from
> other -fdump-* switches, so this patch fixes support for -fdump-ada-spec
> by using an approach similar to -fdump-go-spec, and use regular switches
> via c/c.opt. I've removed the handling of TDF_RAW, which was a debugging
> option, and never really used, so can be simply deleted.
>
> Change is mostly trivial/mechanical.
>
> Tested on x86_64-pc-linux-gnu, OK for trunk?

Much cleaner indeed.

Ok,
Thanks,
Richard.

> gcc/
>
> 2012-10-04  Arnaud Charlet  <charlet@adacore.com>
>
>         * dumpfile.h, dumpfile.c: Remove TDI_ada.
>
> c-family/
>
> 2012-10-04  Arnaud Charlet  <charlet@adacore.com>
>
>         * c-ada-spec.c (print_ada_declaration): Remove handling of TDF_RAW.
>         * c.opt (-fdump-ada-spec, -fdump-ada-spec-slim): Move switch definition
>         out of dumpfile.h.
>
> c/
>
> 2012-10-04  Arnaud Charlet  <charlet@adacore.com>
>
>         * c-decl.c (c_write_global_declarations): Fix handling of
>         -fdump-ada-spec*.
>
> cp/
>
> 2012-10-04  Arnaud Charlet  <charlet@adacore.com>
>
>         * decl2.c (cp_write_global_declarations): Fix handling of
>         -fdump-ada-spec*.
>
> Arno
> --
> Index: c-family/c.opt
> ===================================================================
> --- c-family/c.opt      (revision 192062)
> +++ c-family/c.opt      (working copy)
> @@ -799,6 +799,14 @@ fdollars-in-identifiers
>  C ObjC C++ ObjC++
>  Permit '$' as an identifier character
>
> +fdump-ada-spec
> +C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
> +Write all declarations as Ada code transitively
> +
> +fdump-ada-spec-slim
> +C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
> +Write all declarations as Ada code for the given file only
> +
>  felide-constructors
>  C++ ObjC++ Var(flag_elide_constructors) Init(1)
>
> Index: c-family/c-ada-spec.c
> ===================================================================
> --- c-family/c-ada-spec.c       (revision 192062)
> +++ c-family/c-ada-spec.c       (working copy)
> @@ -2535,7 +2535,6 @@ print_ada_declaration (pretty_printer *b
>    int is_class = false;
>    tree name = TYPE_NAME (TREE_TYPE (t));
>    tree decl_name = DECL_NAME (t);
> -  bool dump_internal = get_dump_file_info (TDI_ada)->pflags & TDF_RAW;
>    tree orig = NULL_TREE;
>
>    if (cpp_check && cpp_check (t, IS_TEMPLATE))
> @@ -2705,8 +2704,7 @@ print_ada_declaration (pretty_printer *b
>      }
>    else
>      {
> -      if (!dump_internal
> -         && TREE_CODE (t) == VAR_DECL
> +      if (TREE_CODE (t) == VAR_DECL
>           && decl_name
>           && *IDENTIFIER_POINTER (decl_name) == '_')
>         return 0;
> @@ -2796,8 +2794,7 @@ print_ada_declaration (pretty_printer *b
>
>        /* If this function has an entry in the dispatch table, we cannot
>          omit it.  */
> -      if (!dump_internal && !DECL_VINDEX (t)
> -         && *IDENTIFIER_POINTER (decl_name) == '_')
> +      if (!DECL_VINDEX (t) && *IDENTIFIER_POINTER (decl_name) == '_')
>         {
>           if (IDENTIFIER_POINTER (decl_name)[1] == '_')
>             return 0;
> Index: c/c-decl.c
> ===================================================================
> --- c/c-decl.c  (revision 192062)
> +++ c/c-decl.c  (working copy)
> @@ -10079,10 +10079,10 @@ c_write_global_declarations (void)
>    gcc_assert (!current_scope);
>
>    /* Handle -fdump-ada-spec[-slim]. */
> -  if (dump_initialized_p (TDI_ada))
> +  if (flag_dump_ada_spec || flag_dump_ada_spec_slim)
>      {
>        /* Build a table of files to generate specs for */
> -      if (get_dump_file_info (TDI_ada)->pflags & TDF_SLIM)
> +      if (flag_dump_ada_spec_slim)
>         collect_source_ref (main_input_filename);
>        else
>         for_each_global_decl (collect_source_ref_cb);
> Index: cp/decl2.c
> ===================================================================
> --- cp/decl2.c  (revision 192062)
> +++ cp/decl2.c  (working copy)
> @@ -3698,9 +3698,9 @@ cp_write_global_declarations (void)
>    cgraph_process_same_body_aliases ();
>
>    /* Handle -fdump-ada-spec[-slim] */
> -  if (dump_initialized_p (TDI_ada))
> +  if (flag_dump_ada_spec || flag_dump_ada_spec_slim)
>      {
> -      if (get_dump_file_info (TDI_ada)->pflags & TDF_SLIM)
> +      if (flag_dump_ada_spec_slim)
>         collect_source_ref (main_input_filename);
>        else
>         collect_source_refs (global_namespace);
> Index: dumpfile.c
> ===================================================================
> --- dumpfile.c  (revision 192062)
> +++ dumpfile.c  (working copy)
> @@ -57,8 +57,7 @@ static struct dump_file_info dump_files[
>     0, 0, 0, 5},
>    {".vcg", "tree-vcg", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
>     0, 0, 0, 6},
> -  {".ads", "ada-spec", NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 7},
> -#define FIRST_AUTO_NUMBERED_DUMP 8
> +#define FIRST_AUTO_NUMBERED_DUMP 7
>
>    {NULL, "tree-all", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
>     0, 0, 0, 0},
> Index: dumpfile.h
> ===================================================================
> --- dumpfile.h  (revision 192062)
> +++ dumpfile.h  (working copy)
> @@ -37,7 +37,6 @@ enum tree_dump_index
>    TDI_nested,                  /* dump each function after unnesting it */
>    TDI_vcg,                     /* create a VCG graph file for each
>                                    function's flowgraph.  */
> -  TDI_ada,                      /* dump declarations in Ada syntax.  */
>    TDI_tree_all,                 /* enable all the GENERIC/GIMPLE dumps.  */
>    TDI_rtl_all,                  /* enable all the RTL dumps.  */
>    TDI_ipa_all,                  /* enable all the IPA dumps.  */

Patch

Index: c-family/c.opt
===================================================================
--- c-family/c.opt	(revision 192062)
+++ c-family/c.opt	(working copy)
@@ -799,6 +799,14 @@  fdollars-in-identifiers
 C ObjC C++ ObjC++
 Permit '$' as an identifier character
 
+fdump-ada-spec
+C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec)
+Write all declarations as Ada code transitively
+
+fdump-ada-spec-slim
+C ObjC C++ ObjC++ RejectNegative Var(flag_dump_ada_spec_slim)
+Write all declarations as Ada code for the given file only
+
 felide-constructors
 C++ ObjC++ Var(flag_elide_constructors) Init(1)
 
Index: c-family/c-ada-spec.c
===================================================================
--- c-family/c-ada-spec.c	(revision 192062)
+++ c-family/c-ada-spec.c	(working copy)
@@ -2535,7 +2535,6 @@  print_ada_declaration (pretty_printer *b
   int is_class = false;
   tree name = TYPE_NAME (TREE_TYPE (t));
   tree decl_name = DECL_NAME (t);
-  bool dump_internal = get_dump_file_info (TDI_ada)->pflags & TDF_RAW;
   tree orig = NULL_TREE;
 
   if (cpp_check && cpp_check (t, IS_TEMPLATE))
@@ -2705,8 +2704,7 @@  print_ada_declaration (pretty_printer *b
     }
   else
     {
-      if (!dump_internal
-	  && TREE_CODE (t) == VAR_DECL
+      if (TREE_CODE (t) == VAR_DECL
 	  && decl_name
 	  && *IDENTIFIER_POINTER (decl_name) == '_')
 	return 0;
@@ -2796,8 +2794,7 @@  print_ada_declaration (pretty_printer *b
 
       /* If this function has an entry in the dispatch table, we cannot
 	 omit it.  */
-      if (!dump_internal && !DECL_VINDEX (t)
-	  && *IDENTIFIER_POINTER (decl_name) == '_')
+      if (!DECL_VINDEX (t) && *IDENTIFIER_POINTER (decl_name) == '_')
 	{
 	  if (IDENTIFIER_POINTER (decl_name)[1] == '_')
 	    return 0;
Index: c/c-decl.c
===================================================================
--- c/c-decl.c	(revision 192062)
+++ c/c-decl.c	(working copy)
@@ -10079,10 +10079,10 @@  c_write_global_declarations (void)
   gcc_assert (!current_scope);
 
   /* Handle -fdump-ada-spec[-slim]. */
-  if (dump_initialized_p (TDI_ada))
+  if (flag_dump_ada_spec || flag_dump_ada_spec_slim)
     {
       /* Build a table of files to generate specs for */
-      if (get_dump_file_info (TDI_ada)->pflags & TDF_SLIM)
+      if (flag_dump_ada_spec_slim)
 	collect_source_ref (main_input_filename);
       else
 	for_each_global_decl (collect_source_ref_cb);
Index: cp/decl2.c
===================================================================
--- cp/decl2.c	(revision 192062)
+++ cp/decl2.c	(working copy)
@@ -3698,9 +3698,9 @@  cp_write_global_declarations (void)
   cgraph_process_same_body_aliases ();
 
   /* Handle -fdump-ada-spec[-slim] */
-  if (dump_initialized_p (TDI_ada))
+  if (flag_dump_ada_spec || flag_dump_ada_spec_slim)
     {
-      if (get_dump_file_info (TDI_ada)->pflags & TDF_SLIM)
+      if (flag_dump_ada_spec_slim)
 	collect_source_ref (main_input_filename);
       else
 	collect_source_refs (global_namespace);
Index: dumpfile.c
===================================================================
--- dumpfile.c	(revision 192062)
+++ dumpfile.c	(working copy)
@@ -57,8 +57,7 @@  static struct dump_file_info dump_files[
    0, 0, 0, 5},
   {".vcg", "tree-vcg", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
    0, 0, 0, 6},
-  {".ads", "ada-spec", NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 7},
-#define FIRST_AUTO_NUMBERED_DUMP 8
+#define FIRST_AUTO_NUMBERED_DUMP 7
 
   {NULL, "tree-all", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
    0, 0, 0, 0},
Index: dumpfile.h
===================================================================
--- dumpfile.h	(revision 192062)
+++ dumpfile.h	(working copy)
@@ -37,7 +37,6 @@  enum tree_dump_index
   TDI_nested,			/* dump each function after unnesting it */
   TDI_vcg,			/* create a VCG graph file for each
 				   function's flowgraph.  */
-  TDI_ada,                      /* dump declarations in Ada syntax.  */
   TDI_tree_all,                 /* enable all the GENERIC/GIMPLE dumps.  */
   TDI_rtl_all,                  /* enable all the RTL dumps.  */
   TDI_ipa_all,                  /* enable all the IPA dumps.  */