dumpfile.h (TDI_lang_all): New.
authorNathan Sidwell <nathan@acm.org>
Wed, 10 May 2017 12:16:25 +0000 (12:16 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Wed, 10 May 2017 12:16:25 +0000 (12:16 +0000)
* dumpfile.h (TDI_lang_all): New.
(TDF_KIND): New. Renumber others
(TDF_LANG, TDF_TREE, TDF_RTL, TDF_IPA): Enumerate value, rather
than bits.
* dumpfile.c (dump_files): Mark language dumps as TDF_LANG.  add
lang-all.
(get_dump_file_name): Adjust suffix generation.
(dump_enable_all): Use TDF_KIND.
* doc/invoke.texi (-fdump-lang-all): Document.

From-SVN: r247833

gcc/ChangeLog
gcc/doc/invoke.texi
gcc/dumpfile.c
gcc/dumpfile.h

index 91a14b8bb6009193e787e747cd096af01b923246..72dd1bc196848b1ec50eed8d77b196b4ce2454de 100644 (file)
@@ -1,5 +1,15 @@
 2017-05-10  Nathan Sidwell  <nathan@acm.org>
 
+       * dumpfile.h (TDI_lang_all): New.
+       (TDF_KIND): New. Renumber others
+       (TDF_LANG, TDF_TREE, TDF_RTL, TDF_IPA): Enumerate value, rather
+       than bits.
+       * dumpfile.c (dump_files): Mark language dumps as TDF_LANG.  add
+       lang-all.
+       (get_dump_file_name): Adjust suffix generation.
+       (dump_enable_all): Use TDF_KIND.
+       * doc/invoke.texi (-fdump-lang-all): Document.
+
        * dumpfile.h: Tabify.
 
 2017-05-10  Wilco Dijkstra  <wdijkstr@arm.com>
index 5360255a67c1a3a61f2c12e9d04446585fc525c2..a6ce483d8905f474955e46e110c33f99598b2f0c 100644 (file)
@@ -543,6 +543,7 @@ Objective-C and Objective-C++ Dialects}.
 -fdump-class-hierarchy@r{[}-@var{n}@r{]} @gol
 -fdump-final-insns@r{[}=@var{file}@r{]}
 -fdump-ipa-all  -fdump-ipa-cgraph  -fdump-ipa-inline @gol
+-fdump-lang-all @gol
 -fdump-passes @gol
 -fdump-rtl-@var{pass}  -fdump-rtl-@var{pass}=@var{filename} @gol
 -fdump-statistics @gol
@@ -12970,6 +12971,10 @@ Dump after function inlining.
 
 @end table
 
+@item -fdump-lang-all
+@opindex fdump-lang-all
+Control the dumping of language-specific information.
+
 @item -fdump-passes
 @opindex fdump-passes
 Print on @file{stderr} the list of optimization passes that are turned
index 6b9a47c5a2612a44ca91a5195bf9cd3fee2e4477..66b81a85733112753a3ba6b58f8999993f0508a1 100644 (file)
@@ -57,9 +57,9 @@ static struct dump_file_info dump_files[TDI_end] =
    0, 0, 0, 0, 0, false, false},
   {".ipa-clones", "ipa-clones", NULL, NULL, NULL, NULL, NULL, TDF_IPA,
    0, 0, 0, 0, 0, false, false},
-  {".tu", "translation-unit", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
+  {".tu", "translation-unit", NULL, NULL, NULL, NULL, NULL, TDF_LANG,
    0, 0, 0, 0, 1, false, false},
-  {".class", "class-hierarchy", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
+  {".class", "class-hierarchy", NULL, NULL, NULL, NULL, NULL, TDF_LANG,
    0, 0, 0, 0, 2, false, false},
   {".original", "tree-original", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
    0, 0, 0, 0, 3, false, false},
@@ -69,6 +69,8 @@ static struct dump_file_info dump_files[TDI_end] =
    0, 0, 0, 0, 5, false, false},
 #define FIRST_AUTO_NUMBERED_DUMP 6
 
+  {NULL, "lang-all", NULL, NULL, NULL, NULL, NULL, TDF_LANG,
+   0, 0, 0, 0, 0, false, false},
   {NULL, "tree-all", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
    0, 0, 0, 0, 0, false, false},
   {NULL, "rtl-all", NULL, NULL, NULL, NULL, NULL, TDF_RTL,
@@ -115,7 +117,7 @@ static const struct dump_option_value_info dump_options[] =
   {"missed", MSG_MISSED_OPTIMIZATION},
   {"note", MSG_NOTE},
   {"optall", MSG_ALL},
-  {"all", ~(TDF_RAW | TDF_SLIM | TDF_LINENO | TDF_TREE | TDF_RTL | TDF_IPA
+  {"all", ~(TDF_KIND_MASK | TDF_RAW | TDF_SLIM | TDF_LINENO
            | TDF_STMTADDR | TDF_GRAPH | TDF_DIAGNOSTIC | TDF_VERBOSE
            | TDF_RHS_ONLY | TDF_NOUID | TDF_ENUMERATE_LOCALS | TDF_SCEV
            | TDF_GIMPLE)},
@@ -282,15 +284,11 @@ get_dump_file_name (struct dump_file_info *dfi) const
     dump_id[0] = '\0';
   else
     {
-      char suffix;
-      if (dfi->pflags & TDF_TREE)
-       suffix = 't';
-      else if (dfi->pflags & TDF_IPA)
-       suffix = 'i';
-      else
-       suffix = 'r';
-
-      if (snprintf (dump_id, sizeof (dump_id), ".%03d%c", dfi->num, suffix) < 0)
+      /* LANG, TREE, RTL, IPA.  */
+      char suffix = "ltri"[TDF_KIND (dfi->pflags)];
+      
+      if (snprintf (dump_id, sizeof (dump_id), ".%03d%c", dfi->num, suffix)
+         < 0)
        dump_id[0] = '\0';
     }
 
@@ -657,13 +655,13 @@ int
 gcc::dump_manager::
 dump_enable_all (int flags, const char *filename)
 {
-  int ir_dump_type = (flags & (TDF_TREE | TDF_RTL | TDF_IPA));
+  int ir_dump_type = TDF_KIND (flags);
   int n = 0;
   size_t i;
 
   for (i = TDI_none + 1; i < (size_t) TDI_end; i++)
     {
-      if ((dump_files[i].pflags & ir_dump_type))
+      if (TDF_KIND (dump_files[i].pflags) == ir_dump_type)
         {
           const char *old_filename = dump_files[i].pfilename;
           dump_files[i].pstate = -1;
@@ -684,7 +682,7 @@ dump_enable_all (int flags, const char *filename)
 
   for (i = 0; i < m_extra_dump_files_in_use; i++)
     {
-      if ((m_extra_dump_files[i].pflags & ir_dump_type))
+      if (TDF_KIND (m_extra_dump_files[i].pflags) & ir_dump_type)
         {
           const char *old_filename = m_extra_dump_files[i].pfilename;
           m_extra_dump_files[i].pstate = -1;
index 053442318e63537f56151b4bbcdaa80fa67609fe..df5203748a5d077b2e4942977c24e74af4ca55ab 100644 (file)
@@ -35,6 +35,8 @@ enum tree_dump_index
   TDI_original,                        /* dump each function before optimizing it */
   TDI_generic,                 /* dump each function after genericizing it */
   TDI_nested,                  /* dump each function after unnesting it */
+
+  TDI_lang_all,                        /* enable all the language dumps.  */
   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.  */
@@ -47,21 +49,26 @@ enum tree_dump_index
    the DUMP_OPTIONS array in dumpfile.c. The TDF_* flags coexist with
    MSG_* flags (for -fopt-info) and the bit values must be chosen to
    allow that.  */
-#define TDF_ADDRESS    (1 << 0)        /* dump node addresses */
-#define TDF_SLIM       (1 << 1)        /* don't go wild following links */
-#define TDF_RAW                (1 << 2)        /* don't unparse the function */
-#define TDF_DETAILS    (1 << 3)        /* show more detailed info about
+#define TDF_LANG       0       /* is a lang-specific dump.  */
+#define TDF_TREE       1       /* is a tree dump */
+#define TDF_RTL                2       /* is a RTL dump */
+#define TDF_IPA                3       /* is an IPA dump */
+#define TDF_KIND_MASK   3
+#define TDF_KIND(X) ((X) & TDF_KIND_MASK)
+
+/* Bit 2 unused, available for hire.  */
+#define TDF_ADDRESS    (1 << 3)        /* dump node addresses */
+#define TDF_SLIM       (1 << 4)        /* don't go wild following links */
+#define TDF_RAW                (1 << 5)        /* don't unparse the function */
+#define TDF_DETAILS    (1 << 6)        /* show more detailed info about
                                           each pass */
-#define TDF_STATS      (1 << 4)        /* dump various statistics about
+#define TDF_STATS      (1 << 7)        /* dump various statistics about
                                           each pass */
-#define TDF_BLOCKS     (1 << 5)        /* display basic block boundaries */
-#define TDF_VOPS       (1 << 6)        /* display virtual operands */
-#define TDF_LINENO     (1 << 7)        /* display statement line numbers */
-#define TDF_UID                (1 << 8)        /* display decl UIDs */
-
-#define TDF_TREE       (1 << 9)        /* is a tree dump */
-#define TDF_RTL                (1 << 10)       /* is a RTL dump */
-#define TDF_IPA                (1 << 11)       /* is an IPA dump */
+#define TDF_BLOCKS     (1 << 8)        /* display basic block boundaries */
+#define TDF_VOPS       (1 << 9)        /* display virtual operands */
+#define TDF_LINENO     (1 << 10)       /* display statement line numbers */
+#define TDF_UID                (1 << 11)       /* display decl UIDs */
+
 #define TDF_STMTADDR   (1 << 12)       /* Address of stmt.  */
 
 #define TDF_GRAPH      (1 << 13)       /* a graph dump is being emitted */