LCOV - code coverage report
Current view: top level - gcc - tree-pretty-print.cc (source / functions) Coverage Total Hit
Test: gcc.info Lines: 78.8 % 3456 2724
Test Date: 2026-10-17 16:30:31 Functions: 94.7 % 38 36
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /* Pretty formatting of GENERIC trees in C syntax.
       2              :    Copyright (C) 2001-2026 Free Software Foundation, Inc.
       3              :    Adapted from c-pretty-print.cc by Diego Novillo <dnovillo@redhat.com>
       4              : 
       5              : This file is part of GCC.
       6              : 
       7              : GCC is free software; you can redistribute it and/or modify it under
       8              : the terms of the GNU General Public License as published by the Free
       9              : Software Foundation; either version 3, or (at your option) any later
      10              : version.
      11              : 
      12              : GCC is distributed in the hope that it will be useful, but WITHOUT ANY
      13              : WARRANTY; without even the implied warranty of MERCHANTABILITY or
      14              : FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      15              : for more details.
      16              : 
      17              : You should have received a copy of the GNU General Public License
      18              : along with GCC; see the file COPYING3.  If not see
      19              : <http://www.gnu.org/licenses/>.  */
      20              : 
      21              : #include "config.h"
      22              : #include "system.h"
      23              : #include "coretypes.h"
      24              : #include "backend.h"
      25              : #include "rtl.h"
      26              : #include "tree.h"
      27              : #include "predict.h"
      28              : #include "cgraph.h"
      29              : #include "tree-pretty-print.h"
      30              : #include "stor-layout.h"
      31              : #include "langhooks.h"
      32              : #include "tree-iterator.h"
      33              : #include "dumpfile.h"
      34              : #include "internal-fn.h"
      35              : #include "gomp-constants.h"
      36              : #include "gimple.h"
      37              : #include "fold-const.h"
      38              : #include "omp-general.h"
      39              : 
      40              : /* Routines in this file get invoked via the default tree printer
      41              :    used by diagnostics and thus they are called from pp_printf which
      42              :    isn't reentrant.  Avoid using pp_printf in this file.  */
      43              : #pragma GCC poison pp_printf
      44              : 
      45              : /* Disable warnings about quoting issues in the pp_xxx calls below
      46              :    that (intentionally) don't follow GCC diagnostic conventions.  */
      47              : #if __GNUC__ >= 10
      48              : #  pragma GCC diagnostic push
      49              : #  pragma GCC diagnostic ignored "-Wformat-diag"
      50              : #endif
      51              : 
      52              : /* Local functions, macros and variables.  */
      53              : static const char *op_symbol (const_tree, dump_flags_t = TDF_NONE);
      54              : static void newline_and_indent (pretty_printer *, int);
      55              : static void maybe_init_pretty_print (FILE *);
      56              : static void print_struct_decl (pretty_printer *, const_tree, int, dump_flags_t);
      57              : static void do_niy (pretty_printer *, const_tree, int, dump_flags_t);
      58              : 
      59              : #define INDENT(SPACE) do { \
      60              :   int i; for (i = 0; i<SPACE; i++) pp_space (pp); } while (0)
      61              : 
      62              : #define NIY do_niy (pp, node, spc, flags)
      63              : 
      64              : static pretty_printer *tree_pp;
      65              : 
      66              : /* Try to print something for an unknown tree code.  */
      67              : 
      68              : static void
      69        13288 : do_niy (pretty_printer *pp, const_tree node, int spc, dump_flags_t flags)
      70              : {
      71        13288 :   int i, len;
      72              : 
      73        13288 :   pp_string (pp, "<<< Unknown tree: ");
      74        13288 :   pp_string (pp, get_tree_code_name (TREE_CODE (node)));
      75              : 
      76        13288 :   if (EXPR_P (node))
      77              :     {
      78        13070 :       len = TREE_OPERAND_LENGTH (node);
      79        43201 :       for (i = 0; i < len; ++i)
      80              :         {
      81        17061 :           newline_and_indent (pp, spc+2);
      82        17061 :           dump_generic_node (pp, TREE_OPERAND (node, i), spc+2, flags, false);
      83              :         }
      84              :     }
      85              : 
      86        13288 :   pp_string (pp, " >>>");
      87        13288 : }
      88              : 
      89              : /* Debugging function to print out a generic expression.  */
      90              : 
      91              : DEBUG_FUNCTION void
      92            1 : debug_generic_expr (tree t)
      93              : {
      94            1 :   print_generic_expr (stderr, t, TDF_VOPS|TDF_MEMSYMS);
      95            1 :   fprintf (stderr, "\n");
      96            1 : }
      97              : 
      98              : /* Debugging function to print out a generic statement.  */
      99              : 
     100              : DEBUG_FUNCTION void
     101            0 : debug_generic_stmt (tree t)
     102              : {
     103            0 :   print_generic_stmt (stderr, t, TDF_VOPS|TDF_MEMSYMS);
     104            0 :   fprintf (stderr, "\n");
     105            0 : }
     106              : 
     107              : /* Debugging function to print out a chain of trees .  */
     108              : 
     109              : DEBUG_FUNCTION void
     110            0 : debug_tree_chain (tree t)
     111              : {
     112            0 :   hash_set<tree> seen;
     113              : 
     114            0 :   while (t)
     115              :     {
     116            0 :       print_generic_expr (stderr, t, TDF_VOPS|TDF_MEMSYMS|TDF_UID);
     117            0 :       fprintf (stderr, " ");
     118            0 :       t = TREE_CHAIN (t);
     119            0 :       if (seen.add (t))
     120              :         {
     121            0 :           fprintf (stderr, "... [cycled back to ");
     122            0 :           print_generic_expr (stderr, t, TDF_VOPS|TDF_MEMSYMS|TDF_UID);
     123            0 :           fprintf (stderr, "]");
     124            0 :           break;
     125              :         }
     126              :     }
     127            0 :   fprintf (stderr, "\n");
     128            0 : }
     129              : 
     130              : /* Prints declaration DECL to the FILE with details specified by FLAGS.  */
     131              : void
     132       295225 : print_generic_decl (FILE *file, tree decl, dump_flags_t flags)
     133              : {
     134       295225 :   maybe_init_pretty_print (file);
     135       295225 :   print_declaration (tree_pp, decl, 2, flags);
     136       295225 :   pp_write_text_to_stream (tree_pp);
     137       295225 : }
     138              : 
     139              : /* Print tree T, and its successors, on file FILE.  FLAGS specifies details
     140              :    to show in the dump.  See TDF_* in dumpfile.h.  */
     141              : 
     142              : void
     143        71820 : print_generic_stmt (FILE *file, tree t, dump_flags_t flags)
     144              : {
     145        71820 :   maybe_init_pretty_print (file);
     146        71820 :   dump_generic_node (tree_pp, t, 0, flags, true);
     147        71820 :   pp_newline_and_flush (tree_pp);
     148        71820 : }
     149              : 
     150              : /* Print tree T, and its successors, on file FILE.  FLAGS specifies details
     151              :    to show in the dump.  See TDF_* in dumpfile.h.  The output is indented by
     152              :    INDENT spaces.  */
     153              : 
     154              : void
     155         6402 : print_generic_stmt_indented (FILE *file, tree t, dump_flags_t flags, int indent)
     156              : {
     157         6402 :   int i;
     158              : 
     159         6402 :   maybe_init_pretty_print (file);
     160              : 
     161        12804 :   for (i = 0; i < indent; i++)
     162            0 :     pp_space (tree_pp);
     163         6402 :   dump_generic_node (tree_pp, t, indent, flags, true);
     164         6402 :   pp_newline_and_flush (tree_pp);
     165         6402 : }
     166              : 
     167              : /* Print a single expression T on file FILE.  FLAGS specifies details to show
     168              :    in the dump.  See TDF_* in dumpfile.h.  */
     169              : 
     170              : void
     171      5840079 : print_generic_expr (FILE *file, tree t, dump_flags_t flags)
     172              : {
     173      5840079 :   maybe_init_pretty_print (file);
     174      5840079 :   dump_generic_node (tree_pp, t, 0, flags, false);
     175      5840079 :   pp_flush (tree_pp);
     176      5840079 : }
     177              : 
     178              : /* Print a single expression T to string, and return it.  The caller
     179              :    must free the returned memory.  */
     180              : 
     181              : char *
     182        62603 : print_generic_expr_to_str (tree t)
     183              : {
     184        62603 :   pretty_printer pp;
     185        62603 :   dump_generic_node (&pp, t, 0, TDF_VOPS|TDF_MEMSYMS, false);
     186        62603 :   return xstrdup (pp_formatted_text (&pp));
     187        62603 : }
     188              : 
     189              : /* Dump NAME, an IDENTIFIER_POINTER, sanitized so that D<num> sequences
     190              :    in it are replaced with Dxxxx, as long as they are at the start or
     191              :    preceded by $ and at the end or followed by $.  See make_fancy_name
     192              :    in tree-sra.cc.  */
     193              : 
     194              : static void
     195         2480 : dump_fancy_name (pretty_printer *pp, tree name)
     196              : {
     197         2480 :   int cnt = 0;
     198         2480 :   int length = IDENTIFIER_LENGTH (name);
     199         2480 :   const char *n = IDENTIFIER_POINTER (name);
     200         2480 :   do
     201              :     {
     202         2480 :       n = strchr (n, 'D');
     203         2480 :       if (n == NULL)
     204              :         break;
     205            0 :       if (ISDIGIT (n[1])
     206            0 :           && (n == IDENTIFIER_POINTER (name) || n[-1] == '$'))
     207              :         {
     208              :           int l = 2;
     209            0 :           while (ISDIGIT (n[l]))
     210            0 :             l++;
     211            0 :           if (n[l] == '\0' || n[l] == '$')
     212              :             {
     213            0 :               cnt++;
     214            0 :               length += 5 - l;
     215              :             }
     216            0 :           n += l;
     217              :         }
     218              :       else
     219            0 :         n++;
     220              :     }
     221              :   while (1);
     222         2480 :   if (cnt == 0)
     223              :     {
     224         2480 :       pp_tree_identifier (pp, name);
     225         2480 :       return;
     226              :     }
     227              : 
     228            0 :   char *str = XNEWVEC (char, length + 1);
     229            0 :   char *p = str;
     230            0 :   const char *q;
     231            0 :   q = n = IDENTIFIER_POINTER (name);
     232            0 :   do
     233              :     {
     234            0 :       q = strchr (q, 'D');
     235            0 :       if (q == NULL)
     236              :         break;
     237            0 :       if (ISDIGIT (q[1])
     238            0 :           && (q == IDENTIFIER_POINTER (name) || q[-1] == '$'))
     239              :         {
     240              :           int l = 2;
     241            0 :           while (ISDIGIT (q[l]))
     242            0 :             l++;
     243            0 :           if (q[l] == '\0' || q[l] == '$')
     244              :             {
     245            0 :               memcpy (p, n, q - n);
     246            0 :               memcpy (p + (q - n), "Dxxxx", 5);
     247            0 :               p += (q - n) + 5;
     248            0 :               n = q + l;
     249              :             }
     250            0 :           q += l;
     251              :         }
     252              :       else
     253            0 :         q++;
     254              :     }
     255              :   while (1);
     256            0 :   memcpy (p, n, IDENTIFIER_LENGTH (name) - (n - IDENTIFIER_POINTER (name)));
     257            0 :   str[length] = '\0';
     258            0 :   if (pp_translate_identifiers (pp))
     259              :     {
     260            0 :       const char *text = identifier_to_locale (str);
     261            0 :       pp_append_text (pp, text, text + strlen (text));
     262              :     }
     263              :   else
     264            0 :     pp_append_text (pp, str, str + length);
     265            0 :   XDELETEVEC (str);
     266              : }
     267              : 
     268              : /* Dump the name of a _DECL node and its DECL_UID if TDF_UID is set
     269              :    in FLAGS.  */
     270              : 
     271              : static void
     272      6030861 : dump_decl_name (pretty_printer *pp, tree node, dump_flags_t flags)
     273              : {
     274      6030861 :   tree name = DECL_NAME (node);
     275      6030861 :   if (name)
     276              :     {
     277      5513982 :       if ((flags & TDF_ASMNAME)
     278        17282 :           && HAS_DECL_ASSEMBLER_NAME_P (node)
     279      5529249 :           && DECL_ASSEMBLER_NAME_SET_P (node))
     280         1628 :         pp_tree_identifier (pp, DECL_ASSEMBLER_NAME_RAW (node));
     281              :       /* For -fcompare-debug don't dump DECL_NAMELESS names at all,
     282              :          -g might have created more fancy names and their indexes
     283              :          could get out of sync.  Usually those should be DECL_IGNORED_P
     284              :          too, SRA can create even non-DECL_IGNORED_P DECL_NAMELESS fancy
     285              :          names, let's hope those never get out of sync after doing the
     286              :          dump_fancy_name sanitization.  */
     287      5512354 :       else if ((flags & TDF_COMPARE_DEBUG)
     288        44044 :                && DECL_NAMELESS (node)
     289      5517608 :                && DECL_IGNORED_P (node))
     290              :         name = NULL_TREE;
     291              :       /* For DECL_NAMELESS names look for embedded uids in the
     292              :          names and sanitize them for TDF_NOUID.  */
     293      5507756 :       else if ((flags & TDF_NOUID) && DECL_NAMELESS (node))
     294         1278 :         dump_fancy_name (pp, name);
     295              :       else
     296      5506478 :         pp_tree_identifier (pp, name);
     297              :     }
     298      6030861 :   char uid_sep = (flags & TDF_GIMPLE) ? '_' : '.';
     299      6030861 :   if ((flags & TDF_UID) || name == NULL_TREE)
     300              :     {
     301       539057 :       if (TREE_CODE (node) == LABEL_DECL && LABEL_DECL_UID (node) != -1)
     302              :         {
     303            3 :           pp_character (pp, 'L');
     304            3 :           pp_character (pp, uid_sep);
     305            3 :           pp_decimal_int (pp, (int) LABEL_DECL_UID (node));
     306              :         }
     307       539054 :       else if (TREE_CODE (node) == DEBUG_EXPR_DECL)
     308              :         {
     309         4499 :           if (flags & TDF_NOUID)
     310            0 :             pp_string (pp, "D#xxxx");
     311              :           else
     312              :             {
     313         4499 :               pp_string (pp, "D#");
     314         4499 :               pp_decimal_int (pp, (int) DEBUG_TEMP_UID (node));
     315              :             }
     316              :         }
     317              :       else
     318              :         {
     319       534555 :           char c = TREE_CODE (node) == CONST_DECL ? 'C' : 'D';
     320       534555 :           pp_character (pp, c);
     321       534555 :           pp_character (pp, uid_sep);
     322       534555 :           if (flags & TDF_NOUID)
     323         7387 :             pp_string (pp, "xxxx");
     324              :           else
     325       527168 :             pp_scalar (pp, "%u", DECL_UID (node));
     326              :         }
     327              :     }
     328      6030861 :   if ((flags & TDF_ALIAS) && DECL_PT_UID (node) != DECL_UID (node))
     329              :     {
     330            2 :       if (flags & TDF_NOUID)
     331            0 :         pp_string (pp, "ptD.xxxx");
     332              :       else
     333              :         {
     334            2 :           pp_string (pp, "ptD.");
     335            2 :           pp_scalar (pp, "%u", DECL_PT_UID (node));
     336              :         }
     337              :     }
     338      6030861 : }
     339              : 
     340              : /* Like the above, but used for pretty printing function calls.  */
     341              : 
     342              : static void
     343       180910 : dump_function_name (pretty_printer *pp, tree node, dump_flags_t flags)
     344              : {
     345       180910 :   if (CONVERT_EXPR_P (node))
     346            0 :     node = TREE_OPERAND (node, 0);
     347       180910 :   if (DECL_NAME (node) && (flags & TDF_ASMNAME) == 0)
     348              :     {
     349       180521 :       pp_string (pp, lang_hooks.decl_printable_name (node, 1));
     350       180521 :       if (flags & TDF_UID)
     351              :         {
     352            0 :           char uid_sep = (flags & TDF_GIMPLE) ? '_' : '.';
     353            0 :           pp_character (pp, 'D');
     354            0 :           pp_character (pp, uid_sep);
     355            0 :           pp_scalar (pp, "%u", DECL_UID (node));
     356              :         }
     357              :     }
     358              :   else
     359          389 :     dump_decl_name (pp, node, flags);
     360       180910 : }
     361              : 
     362              : /* Dump a function declaration.  NODE is the FUNCTION_TYPE.  PP, SPC and
     363              :    FLAGS are as in dump_generic_node.  */
     364              : 
     365              : static void
     366        16384 : dump_function_declaration (pretty_printer *pp, tree node,
     367              :                            int spc, dump_flags_t flags)
     368              : {
     369        16384 :   bool wrote_arg = false;
     370        16384 :   tree arg;
     371              : 
     372        16384 :   pp_space (pp);
     373        16384 :   pp_left_paren (pp);
     374              : 
     375              :   /* Print the argument types.  */
     376        16384 :   arg = TYPE_ARG_TYPES (node);
     377        44817 :   while (arg && arg != void_list_node && arg != error_mark_node)
     378              :     {
     379        28433 :       if (wrote_arg)
     380              :         {
     381        17404 :           pp_comma (pp);
     382        17404 :           pp_space (pp);
     383              :         }
     384        28433 :       wrote_arg = true;
     385        28433 :       dump_generic_node (pp, TREE_VALUE (arg), spc, flags, false);
     386        28433 :       arg = TREE_CHAIN (arg);
     387              :     }
     388              : 
     389              :   /* Drop the trailing void_type_node if we had any previous argument.  */
     390        16384 :   if (arg == void_list_node && !wrote_arg)
     391         2859 :     pp_string (pp, "void");
     392              :   /* Properly dump vararg function types.  */
     393        13525 :   else if (!arg && wrote_arg)
     394          115 :     pp_string (pp, ", ...");
     395              :   /* Avoid printing any arg for unprototyped functions.  */
     396              : 
     397        16384 :   pp_right_paren (pp);
     398        16384 : }
     399              : 
     400              : /* Dump the domain associated with an array.  */
     401              : 
     402              : static void
     403       105939 : dump_array_domain (pretty_printer *pp, tree domain, int spc, dump_flags_t flags)
     404              : {
     405       105939 :   pp_left_bracket (pp);
     406       105939 :   if (domain)
     407              :     {
     408       105621 :       tree min = TYPE_MIN_VALUE (domain);
     409       105621 :       tree max = TYPE_MAX_VALUE (domain);
     410              : 
     411       105621 :       if (min && max
     412        82730 :           && integer_zerop (min)
     413       183514 :           && tree_fits_shwi_p (max))
     414        73109 :         pp_wide_integer (pp, tree_to_shwi (max) + 1);
     415              :       else
     416              :         {
     417        32512 :           if (min)
     418        32512 :             dump_generic_node (pp, min, spc, flags, false);
     419        32512 :           pp_colon (pp);
     420        32512 :           if (max)
     421         9621 :             dump_generic_node (pp, max, spc, flags, false);
     422              :         }
     423              :     }
     424              :   else
     425          318 :     pp_string (pp, "<unknown>");
     426       105939 :   pp_right_bracket (pp);
     427       105939 : }
     428              : 
     429              : 
     430              : /* Dump OpenMP iterators ITER.  */
     431              : 
     432              : static void
     433          137 : dump_omp_iterators (pretty_printer *pp, tree iter, int spc, dump_flags_t flags)
     434              : {
     435          137 :   pp_string (pp, "iterator(");
     436          479 :   for (tree it = iter; it; it = TREE_CHAIN (it))
     437              :     {
     438          205 :       if (it != iter)
     439           68 :         pp_string (pp, ", ");
     440          205 :       dump_generic_node (pp, TREE_TYPE (OMP_ITERATOR_VAR (it)), spc, flags,
     441              :                          false);
     442          205 :       pp_space (pp);
     443          205 :       dump_generic_node (pp, OMP_ITERATOR_VAR (it), spc, flags, false);
     444          205 :       pp_equal (pp);
     445          205 :       dump_generic_node (pp, OMP_ITERATOR_BEGIN (it), spc, flags, false);
     446          205 :       pp_colon (pp);
     447          205 :       dump_generic_node (pp, OMP_ITERATOR_END (it), spc, flags, false);
     448          205 :       pp_colon (pp);
     449          205 :       dump_generic_node (pp, OMP_ITERATOR_STEP (it), spc, flags, false);
     450              :     }
     451          137 :   if (flags & TDF_DETAILS && OMP_ITERATOR_BLOCK (iter))
     452              :     {
     453            0 :       pp_string (pp, ", block=");
     454            0 :       pp_left_brace (pp);
     455            0 :       newline_and_indent (pp, spc + 2);
     456            0 :       dump_generic_node (pp, BLOCK_SUBBLOCKS (OMP_ITERATOR_BLOCK (iter)),
     457              :                          spc + 2, flags, true);
     458            0 :       newline_and_indent (pp, spc);
     459            0 :       pp_right_brace (pp);
     460              :     }
     461          137 :   if (OMP_ITERATOR_EXPANDED_P (iter))
     462              :     {
     463          119 :       pp_string (pp, ", loop_label=");
     464          119 :       dump_generic_node (pp, OMP_ITERATOR_LABEL (iter), spc, flags, false);
     465          119 :       pp_string (pp, ", elems=");
     466          119 :       dump_generic_node (pp, OMP_ITERATOR_ELEMS (iter), spc, flags, false);
     467          119 :       pp_string (pp, ", index=");
     468          119 :       dump_generic_node (pp, OMP_ITERATOR_INDEX (iter), spc, flags, false);
     469              :       /* The count field is not used yet.  */
     470              :     }
     471          137 :   pp_right_paren (pp);
     472          137 : }
     473              : 
     474              : /* Dump OpenMP's prefer_type of the init clause.  */
     475              : 
     476              : static void
     477          251 : dump_omp_init_prefer_type (pretty_printer *pp, tree t)
     478              : {
     479          251 :   if (t == NULL_TREE)
     480              :     return;
     481          119 :   pp_string (pp, "prefer_type(");
     482          119 :   const char *str = TREE_STRING_POINTER (t);
     483          527 :   while (str[0] == (char) GOMP_INTEROP_IFR_SEPARATOR)
     484              :     {
     485          408 :       bool has_fr = false;
     486          408 :       pp_character (pp, '{');
     487          408 :       str++;
     488          794 :       while (str[0] != (char) GOMP_INTEROP_IFR_SEPARATOR)
     489              :         {
     490          386 :           if (has_fr)
     491            0 :             pp_character (pp, ',');
     492          386 :           has_fr = true;
     493          386 :           pp_string (pp, "fr(\"");
     494          386 :           pp_string (pp, omp_get_name_from_fr_id (str[0]));
     495          386 :           pp_string (pp, "\")");
     496          386 :           str++;
     497              :         }
     498          408 :       str++;
     499          408 :       if (has_fr && str[0] != '\0')
     500           52 :         pp_character (pp, ',');
     501          534 :       while (str[0] != '\0')
     502              :         {
     503          126 :           pp_string (pp, "attr(\"");
     504          126 :           pp_string (pp, str);
     505          126 :           pp_string (pp, "\")");
     506          126 :           str += strlen (str) + 1;
     507          126 :           if (str[0] != '\0')
     508           52 :             pp_character (pp, ',');
     509              :         }
     510          408 :       str++;
     511          408 :       pp_character (pp, '}');
     512          408 :       if (str[0] != '\0')
     513          289 :         pp_string (pp, ", ");
     514              :     }
     515          119 :   pp_right_paren (pp);
     516              : }
     517              : 
     518              : /* Dump OMP clause CLAUSE, without following OMP_CLAUSE_CHAIN.
     519              : 
     520              :    PP, CLAUSE, SPC and FLAGS are as in dump_generic_node.  */
     521              : 
     522              : static void
     523        30137 : dump_omp_clause (pretty_printer *pp, tree clause, int spc, dump_flags_t flags)
     524              : {
     525        30137 :   const char *name;
     526        30137 :   const char *modifier = NULL;
     527        30137 :   switch (OMP_CLAUSE_CODE (clause))
     528              :     {
     529         3272 :     case OMP_CLAUSE_PRIVATE:
     530         3272 :       name = "private";
     531         3272 :       goto print_remap;
     532         1121 :     case OMP_CLAUSE_SHARED:
     533         1121 :       name = "shared";
     534         1121 :       goto print_remap;
     535         1551 :     case OMP_CLAUSE_FIRSTPRIVATE:
     536         1551 :       name = "firstprivate";
     537         1551 :       goto print_remap;
     538         1166 :     case OMP_CLAUSE_LASTPRIVATE:
     539         1166 :       name = "lastprivate";
     540         1166 :       if (OMP_CLAUSE_LASTPRIVATE_CONDITIONAL (clause))
     541            7 :         modifier = "conditional:";
     542         1166 :       goto print_remap;
     543            4 :     case OMP_CLAUSE_COPYIN:
     544            4 :       name = "copyin";
     545            4 :       goto print_remap;
     546            1 :     case OMP_CLAUSE_COPYPRIVATE:
     547            1 :       name = "copyprivate";
     548            1 :       goto print_remap;
     549          747 :     case OMP_CLAUSE_UNIFORM:
     550          747 :       name = "uniform";
     551          747 :       goto print_remap;
     552          131 :     case OMP_CLAUSE_USE_DEVICE_PTR:
     553          131 :       name = "use_device_ptr";
     554          131 :       if (OMP_CLAUSE_USE_DEVICE_PTR_IF_PRESENT (clause))
     555           29 :         modifier = "if_present:";
     556          131 :       goto print_remap;
     557           30 :     case OMP_CLAUSE_USE_DEVICE_ADDR:
     558           30 :       name = "use_device_addr";
     559           30 :       goto print_remap;
     560           40 :     case OMP_CLAUSE_HAS_DEVICE_ADDR:
     561           40 :       name = "has_device_addr";
     562           40 :       goto print_remap;
     563          116 :     case OMP_CLAUSE_IS_DEVICE_PTR:
     564          116 :       name = "is_device_ptr";
     565          116 :       goto print_remap;
     566            3 :     case OMP_CLAUSE_INCLUSIVE:
     567            3 :       name = "inclusive";
     568            3 :       goto print_remap;
     569            2 :     case OMP_CLAUSE_EXCLUSIVE:
     570            2 :       name = "exclusive";
     571            2 :       goto print_remap;
     572           45 :     case OMP_CLAUSE_NOVARIANTS:
     573           45 :       pp_string (pp, "novariants");
     574           45 :       pp_left_paren (pp);
     575           45 :       gcc_assert (OMP_CLAUSE_NOVARIANTS_EXPR (clause));
     576           45 :       dump_generic_node (pp, OMP_CLAUSE_NOVARIANTS_EXPR (clause), spc, flags,
     577              :                          false);
     578           45 :       pp_right_paren (pp);
     579           45 :       break;
     580           60 :     case OMP_CLAUSE_NOCONTEXT:
     581           60 :       pp_string (pp, "nocontext");
     582           60 :       pp_left_paren (pp);
     583           60 :       gcc_assert (OMP_CLAUSE_NOCONTEXT_EXPR (clause));
     584           60 :       dump_generic_node (pp, OMP_CLAUSE_NOCONTEXT_EXPR (clause), spc, flags,
     585              :                          false);
     586           60 :       pp_right_paren (pp);
     587           60 :       break;
     588           86 :     case OMP_CLAUSE__LOOPTEMP_:
     589           86 :       name = "_looptemp_";
     590           86 :       goto print_remap;
     591           12 :     case OMP_CLAUSE__REDUCTEMP_:
     592           12 :       name = "_reductemp_";
     593           12 :       goto print_remap;
     594            0 :     case OMP_CLAUSE__CONDTEMP_:
     595            0 :       name = "_condtemp_";
     596            0 :       goto print_remap;
     597            0 :     case OMP_CLAUSE__SCANTEMP_:
     598            0 :       name = "_scantemp_";
     599            0 :       goto print_remap;
     600            0 :     case OMP_CLAUSE_ENTER:
     601            0 :       if (OMP_CLAUSE_ENTER_TO (clause))
     602              :         name = "to";
     603              :       else
     604            0 :         name = "enter";
     605            0 :       goto print_remap;
     606            0 :     case OMP_CLAUSE_LINK:
     607            0 :       name = "link";
     608            0 :       goto print_remap;
     609            3 :     case OMP_CLAUSE_NONTEMPORAL:
     610            3 :       name = "nontemporal";
     611            3 :       goto print_remap;
     612         8285 :   print_remap:
     613         8285 :       pp_string (pp, name);
     614         8285 :       pp_left_paren (pp);
     615         8285 :       if (modifier)
     616           36 :         pp_string (pp, modifier);
     617         8285 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
     618              :                          spc, flags, false);
     619         8285 :       pp_right_paren (pp);
     620         8285 :       break;
     621              : 
     622           24 :     case OMP_CLAUSE_TASK_REDUCTION:
     623           24 :     case OMP_CLAUSE_IN_REDUCTION:
     624           27 :       pp_string (pp, OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_IN_REDUCTION
     625              :                      ? "in_" : "task_");
     626              :       /* FALLTHRU */
     627         1239 :     case OMP_CLAUSE_REDUCTION:
     628         1239 :       pp_string (pp, "reduction(");
     629         1239 :       if (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_REDUCTION)
     630              :         {
     631         1215 :           if (OMP_CLAUSE_REDUCTION_TASK (clause))
     632           12 :             pp_string (pp, "task,");
     633         1203 :           else if (OMP_CLAUSE_REDUCTION_INSCAN (clause))
     634            6 :             pp_string (pp, "inscan,");
     635              :         }
     636         1239 :       if (OMP_CLAUSE_REDUCTION_CODE (clause) != ERROR_MARK)
     637              :         {
     638         1227 :           pp_string (pp,
     639         1227 :                      op_symbol_code (OMP_CLAUSE_REDUCTION_CODE (clause)));
     640         1227 :           pp_colon (pp);
     641              :         }
     642         1239 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
     643              :                          spc, flags, false);
     644         1239 :       pp_right_paren (pp);
     645         1239 :       break;
     646              : 
     647          148 :     case OMP_CLAUSE_IF:
     648          148 :       pp_string (pp, "if(");
     649          148 :       switch (OMP_CLAUSE_IF_MODIFIER (clause))
     650              :         {
     651              :         case ERROR_MARK: break;
     652            0 :         case VOID_CST: pp_string (pp, "cancel:"); break;
     653            4 :         case OMP_PARALLEL: pp_string (pp, "parallel:"); break;
     654            2 :         case OMP_SIMD: pp_string (pp, "simd:"); break;
     655            0 :         case OMP_TASK: pp_string (pp, "task:"); break;
     656            4 :         case OMP_TASKLOOP: pp_string (pp, "taskloop:"); break;
     657            0 :         case OMP_TARGET_DATA: pp_string (pp, "target data:"); break;
     658            0 :         case OMP_TARGET: pp_string (pp, "target:"); break;
     659            0 :         case OMP_TARGET_UPDATE: pp_string (pp, "target update:"); break;
     660            0 :         case OMP_TARGET_ENTER_DATA:
     661            0 :           pp_string (pp, "target enter data:"); break;
     662            0 :         case OMP_TARGET_EXIT_DATA: pp_string (pp, "target exit data:"); break;
     663            0 :         default: gcc_unreachable ();
     664              :         }
     665          148 :       dump_generic_node (pp, OMP_CLAUSE_IF_EXPR (clause),
     666              :                          spc, flags, false);
     667          148 :       pp_right_paren (pp);
     668          148 :       break;
     669              : 
     670           52 :     case OMP_CLAUSE_DESTROY:
     671           52 :       pp_string (pp, "destroy(");
     672           52 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
     673              :                          spc, flags, false);
     674           52 :       pp_right_paren (pp);
     675           52 :       break;
     676              : 
     677          251 :     case OMP_CLAUSE_INIT:
     678          251 :       pp_string (pp, "init(");
     679          251 :       dump_omp_init_prefer_type (pp, OMP_CLAUSE_INIT_PREFER_TYPE (clause));
     680          251 :       if (OMP_CLAUSE_INIT_TARGET (clause))
     681              :         {
     682          156 :           if (OMP_CLAUSE_INIT_PREFER_TYPE (clause))
     683           67 :             pp_string (pp, ", ");
     684          156 :           pp_string (pp, "target");
     685              :         }
     686          251 :       if (OMP_CLAUSE_INIT_TARGETSYNC (clause))
     687              :         {
     688          128 :           if (OMP_CLAUSE_INIT_PREFER_TYPE (clause) || OMP_CLAUSE_INIT_TARGET (clause))
     689           85 :             pp_string (pp, ", ");
     690          128 :           pp_string (pp, "targetsync");
     691              :         }
     692          251 :       if (OMP_CLAUSE_INIT_PREFER_TYPE (clause)
     693          132 :           || OMP_CLAUSE_INIT_TARGET (clause)
     694          294 :           || OMP_CLAUSE_INIT_TARGETSYNC (clause))
     695          251 :         pp_string (pp, ": ");
     696          251 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
     697              :                          spc, flags, false);
     698          251 :       pp_right_paren (pp);
     699          251 :       break;
     700              : 
     701           59 :     case OMP_CLAUSE_USE:
     702           59 :       pp_string (pp, "use(");
     703           59 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
     704              :                          spc, flags, false);
     705           59 :       pp_right_paren (pp);
     706           59 :       break;
     707              : 
     708           61 :     case OMP_CLAUSE_SELF:
     709           61 :       pp_string (pp, "self(");
     710           61 :       dump_generic_node (pp, OMP_CLAUSE_SELF_EXPR (clause),
     711              :                          spc, flags, false);
     712           61 :       pp_right_paren (pp);
     713           61 :       break;
     714              : 
     715          141 :     case OMP_CLAUSE_NUM_THREADS:
     716          141 :       pp_string (pp, "num_threads(");
     717          141 :       if (OMP_CLAUSE_NUM_THREADS_STRICT (clause))
     718            9 :         pp_string (pp, "strict");
     719          141 :       if (OMP_CLAUSE_NUM_THREADS_STRICT (clause)
     720          141 :           && OMP_CLAUSE_NUM_THREADS_DIMS (clause))
     721            5 :         pp_comma (pp);
     722          141 :       if (OMP_CLAUSE_NUM_THREADS_DIMS (clause))
     723           11 :         pp_string (pp, "dims()");
     724          141 :       if (OMP_CLAUSE_NUM_THREADS_STRICT (clause)
     725          141 :           || OMP_CLAUSE_NUM_THREADS_DIMS (clause))
     726           15 :         pp_colon (pp);
     727          141 :       dump_generic_node (pp, OMP_CLAUSE_NUM_THREADS_EXPR (clause),
     728              :                          spc, flags, false);
     729          141 :       pp_right_paren (pp);
     730          141 :       break;
     731              : 
     732          752 :     case OMP_CLAUSE_NOWAIT:
     733          752 :       pp_string (pp, "nowait");
     734          752 :       break;
     735           27 :     case OMP_CLAUSE_ORDERED:
     736           27 :       pp_string (pp, "ordered");
     737           27 :       if (OMP_CLAUSE_ORDERED_EXPR (clause))
     738              :         {
     739            9 :           pp_left_paren (pp);
     740            9 :           dump_generic_node (pp, OMP_CLAUSE_ORDERED_EXPR (clause),
     741              :                              spc, flags, false);
     742            9 :           pp_right_paren (pp);
     743              :         }
     744              :       break;
     745              : 
     746         1258 :     case OMP_CLAUSE_DEFAULT:
     747         1258 :       pp_string (pp, "default(");
     748         1258 :       switch (OMP_CLAUSE_DEFAULT_KIND (clause))
     749              :         {
     750              :         case OMP_CLAUSE_DEFAULT_UNSPECIFIED:
     751              :           break;
     752           11 :         case OMP_CLAUSE_DEFAULT_SHARED:
     753           11 :           pp_string (pp, "shared");
     754           11 :           break;
     755         1192 :         case OMP_CLAUSE_DEFAULT_NONE:
     756         1192 :           pp_string (pp, "none");
     757         1192 :           break;
     758            0 :         case OMP_CLAUSE_DEFAULT_PRIVATE:
     759            0 :           pp_string (pp, "private");
     760            0 :           break;
     761            2 :         case OMP_CLAUSE_DEFAULT_FIRSTPRIVATE:
     762            2 :           pp_string (pp, "firstprivate");
     763            2 :           break;
     764           53 :         case OMP_CLAUSE_DEFAULT_PRESENT:
     765           53 :           pp_string (pp, "present");
     766           53 :           break;
     767            0 :         default:
     768            0 :           gcc_unreachable ();
     769              :         }
     770         1258 :       pp_right_paren (pp);
     771         1258 :       break;
     772              : 
     773          152 :     case OMP_CLAUSE_SCHEDULE:
     774          152 :       pp_string (pp, "schedule(");
     775          152 :       if (OMP_CLAUSE_SCHEDULE_KIND (clause)
     776              :           & (OMP_CLAUSE_SCHEDULE_MONOTONIC
     777              :              | OMP_CLAUSE_SCHEDULE_NONMONOTONIC))
     778              :         {
     779            0 :           if (OMP_CLAUSE_SCHEDULE_KIND (clause)
     780              :               & OMP_CLAUSE_SCHEDULE_MONOTONIC)
     781            0 :             pp_string (pp, "monotonic");
     782              :           else
     783            0 :             pp_string (pp, "nonmonotonic");
     784            0 :           if (OMP_CLAUSE_SCHEDULE_SIMD (clause))
     785            0 :             pp_comma (pp);
     786              :           else
     787            0 :             pp_colon (pp);
     788              :         }
     789          152 :       if (OMP_CLAUSE_SCHEDULE_SIMD (clause))
     790            0 :         pp_string (pp, "simd:");
     791              : 
     792          152 :       switch (OMP_CLAUSE_SCHEDULE_KIND (clause) & OMP_CLAUSE_SCHEDULE_MASK)
     793              :         {
     794          111 :         case OMP_CLAUSE_SCHEDULE_STATIC:
     795          111 :           pp_string (pp, "static");
     796          111 :           break;
     797            4 :         case OMP_CLAUSE_SCHEDULE_DYNAMIC:
     798            4 :           pp_string (pp, "dynamic");
     799            4 :           break;
     800           27 :         case OMP_CLAUSE_SCHEDULE_GUIDED:
     801           27 :           pp_string (pp, "guided");
     802           27 :           break;
     803            2 :         case OMP_CLAUSE_SCHEDULE_RUNTIME:
     804            2 :           pp_string (pp, "runtime");
     805            2 :           break;
     806            8 :         case OMP_CLAUSE_SCHEDULE_AUTO:
     807            8 :           pp_string (pp, "auto");
     808            8 :           break;
     809            0 :         default:
     810            0 :           gcc_unreachable ();
     811              :         }
     812          152 :       if (OMP_CLAUSE_SCHEDULE_CHUNK_EXPR (clause))
     813              :         {
     814           16 :           pp_comma (pp);
     815           16 :           dump_generic_node (pp, OMP_CLAUSE_SCHEDULE_CHUNK_EXPR (clause),
     816              :                              spc, flags, false);
     817              :         }
     818          152 :       pp_right_paren (pp);
     819          152 :       break;
     820              : 
     821            4 :     case OMP_CLAUSE_UNTIED:
     822            4 :       pp_string (pp, "untied");
     823            4 :       break;
     824              : 
     825          418 :     case OMP_CLAUSE_COLLAPSE:
     826          418 :       pp_string (pp, "collapse(");
     827          418 :       dump_generic_node (pp, OMP_CLAUSE_COLLAPSE_EXPR (clause),
     828              :                          spc, flags, false);
     829          418 :       pp_right_paren (pp);
     830          418 :       break;
     831              : 
     832            4 :     case OMP_CLAUSE_FINAL:
     833            4 :       pp_string (pp, "final(");
     834            4 :       dump_generic_node (pp, OMP_CLAUSE_FINAL_EXPR (clause),
     835              :                          spc, flags, false);
     836            4 :       pp_right_paren (pp);
     837            4 :       break;
     838              : 
     839            4 :     case OMP_CLAUSE_MERGEABLE:
     840            4 :       pp_string (pp, "mergeable");
     841            4 :       break;
     842              : 
     843           18 :     case OMP_CLAUSE_MESSAGE:
     844           18 :       if (OMP_CLAUSE_MESSAGE_EXPR (clause))
     845              :         {
     846           17 :           pp_string (pp, "message(");
     847           17 :           dump_generic_node (pp, OMP_CLAUSE_MESSAGE_EXPR (clause),
     848              :                              spc, flags, false);
     849           17 :           if (OMP_CLAUSE_MESSAGE_LEN (clause))
     850              :             {
     851           17 :               pp_string (pp, " [len:");
     852           17 :               dump_generic_node (pp, OMP_CLAUSE_MESSAGE_LEN (clause),
     853              :                                  spc, flags, false);
     854           17 :               pp_right_bracket (pp);
     855              :             }
     856           17 :           pp_right_paren (pp);
     857           17 :           pp_space (pp);
     858              :         }
     859           18 :       if (OMP_CLAUSE_MESSAGE_SEVERITY_WARN (clause))
     860            4 :         pp_string (pp, "severity(warning)");
     861              :       else
     862           14 :         pp_string (pp, "severity(fatal)");
     863              :       break;
     864              : 
     865         1901 :     case OMP_CLAUSE_LINEAR:
     866         1901 :       pp_string (pp, "linear(");
     867         1901 :       if (OMP_CLAUSE_LINEAR_OLD_LINEAR_MODIFIER (clause))
     868            4 :         switch (OMP_CLAUSE_LINEAR_KIND (clause))
     869              :           {
     870              :           case OMP_CLAUSE_LINEAR_DEFAULT:
     871              :             break;
     872            4 :           case OMP_CLAUSE_LINEAR_REF:
     873            4 :             pp_string (pp, "ref(");
     874            4 :             break;
     875            0 :           case OMP_CLAUSE_LINEAR_VAL:
     876            0 :             pp_string (pp, "val(");
     877            0 :             break;
     878            0 :           case OMP_CLAUSE_LINEAR_UVAL:
     879            0 :             pp_string (pp, "uval(");
     880            0 :             break;
     881            0 :           default:
     882            0 :             gcc_unreachable ();
     883              :           }
     884         1901 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
     885              :                          spc, flags, false);
     886         1901 :       if (OMP_CLAUSE_LINEAR_OLD_LINEAR_MODIFIER (clause)
     887         1901 :           && OMP_CLAUSE_LINEAR_KIND (clause) != OMP_CLAUSE_LINEAR_DEFAULT)
     888            4 :         pp_right_paren (pp);
     889         1901 :       pp_colon (pp);
     890         1901 :       if (!OMP_CLAUSE_LINEAR_OLD_LINEAR_MODIFIER (clause)
     891         1901 :           && OMP_CLAUSE_LINEAR_KIND (clause) != OMP_CLAUSE_LINEAR_DEFAULT)
     892           81 :         switch (OMP_CLAUSE_LINEAR_KIND (clause))
     893              :           {
     894           60 :             case OMP_CLAUSE_LINEAR_REF:
     895           60 :               pp_string (pp, "ref,step(");
     896           60 :               break;
     897           13 :             case OMP_CLAUSE_LINEAR_VAL:
     898           13 :               pp_string (pp, "val,step(");
     899           13 :               break;
     900            8 :             case OMP_CLAUSE_LINEAR_UVAL:
     901            8 :               pp_string (pp, "uval,step(");
     902            8 :               break;
     903            0 :             default:
     904            0 :               gcc_unreachable ();
     905              :           }
     906         1901 :       dump_generic_node (pp, OMP_CLAUSE_LINEAR_STEP (clause),
     907              :                          spc, flags, false);
     908         1901 :       if (!OMP_CLAUSE_LINEAR_OLD_LINEAR_MODIFIER (clause)
     909         1901 :           && OMP_CLAUSE_LINEAR_KIND (clause) != OMP_CLAUSE_LINEAR_DEFAULT)
     910           81 :         pp_right_paren (pp);
     911         1901 :       pp_right_paren (pp);
     912         1901 :       break;
     913              : 
     914          338 :     case OMP_CLAUSE_ALIGNED:
     915          338 :       pp_string (pp, "aligned(");
     916          338 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
     917              :                          spc, flags, false);
     918          338 :       if (OMP_CLAUSE_ALIGNED_ALIGNMENT (clause))
     919              :         {
     920          338 :           pp_colon (pp);
     921          338 :           dump_generic_node (pp, OMP_CLAUSE_ALIGNED_ALIGNMENT (clause),
     922              :                              spc, flags, false);
     923              :         }
     924          338 :       pp_right_paren (pp);
     925          338 :       break;
     926              : 
     927           89 :     case OMP_CLAUSE_ALLOCATE:
     928           89 :       pp_string (pp, "allocate(");
     929           89 :       if (OMP_CLAUSE_ALLOCATE_ALLOCATOR (clause))
     930              :         {
     931           88 :           pp_string (pp, "allocator(");
     932           88 :           dump_generic_node (pp, OMP_CLAUSE_ALLOCATE_ALLOCATOR (clause),
     933              :                              spc, flags, false);
     934           88 :           pp_right_paren (pp);
     935              :         }
     936           89 :       if (OMP_CLAUSE_ALLOCATE_ALIGN (clause))
     937              :         {
     938           57 :           if (OMP_CLAUSE_ALLOCATE_ALLOCATOR (clause))
     939           56 :             pp_comma (pp);
     940           57 :           pp_string (pp, "align(");
     941           57 :           dump_generic_node (pp, OMP_CLAUSE_ALLOCATE_ALIGN (clause),
     942              :                              spc, flags, false);
     943           57 :           pp_right_paren (pp);
     944              :         }
     945           89 :       if (OMP_CLAUSE_ALLOCATE_ALLOCATOR (clause)
     946           89 :           || OMP_CLAUSE_ALLOCATE_ALIGN (clause))
     947           89 :         pp_colon (pp);
     948           89 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
     949              :                          spc, flags, false);
     950           89 :       pp_right_paren (pp);
     951           89 :       break;
     952              : 
     953           98 :     case OMP_CLAUSE_USES_ALLOCATORS:
     954           98 :       pp_string (pp, "uses_allocators(memspace(");
     955           98 :       dump_generic_node (pp, OMP_CLAUSE_USES_ALLOCATORS_MEMSPACE (clause),
     956              :                          spc, flags, false);
     957           98 :       pp_string (pp, "), traits(");
     958           98 :       dump_generic_node (pp, OMP_CLAUSE_USES_ALLOCATORS_TRAITS (clause),
     959              :                          spc, flags, false);
     960           98 :       pp_string (pp, ") : ");
     961           98 :       dump_generic_node (pp, OMP_CLAUSE_USES_ALLOCATORS_ALLOCATOR (clause),
     962              :                          spc, flags, false);
     963           98 :       pp_right_paren (pp);
     964           98 :       break;
     965              : 
     966           68 :     case OMP_CLAUSE_AFFINITY:
     967           68 :       pp_string (pp, "affinity(");
     968           68 :       {
     969           68 :         tree t = OMP_CLAUSE_DECL (clause);
     970           68 :         if (OMP_ITERATOR_DECL_P (t))
     971              :           {
     972           18 :             dump_omp_iterators (pp, TREE_PURPOSE (t), spc, flags);
     973           18 :             pp_colon (pp);
     974           18 :             t = TREE_VALUE (t);
     975              :           }
     976           68 :         dump_generic_node (pp, t, spc, flags, false);
     977              :       }
     978           68 :       pp_right_paren (pp);
     979           68 :       break;
     980          176 :     case OMP_CLAUSE_DEPEND:
     981          176 :       pp_string (pp, "depend(");
     982          176 :       switch (OMP_CLAUSE_DEPEND_KIND (clause))
     983              :         {
     984              :         case OMP_CLAUSE_DEPEND_DEPOBJ:
     985              :           name = "depobj";
     986              :           break;
     987            5 :         case OMP_CLAUSE_DEPEND_IN:
     988            5 :           name = "in";
     989            5 :           break;
     990          123 :         case OMP_CLAUSE_DEPEND_OUT:
     991          123 :           name = "out";
     992          123 :           break;
     993           28 :         case OMP_CLAUSE_DEPEND_INOUT:
     994           28 :           name = "inout";
     995           28 :           break;
     996            0 :         case OMP_CLAUSE_DEPEND_MUTEXINOUTSET:
     997            0 :           name = "mutexinoutset";
     998            0 :           break;
     999            0 :         case OMP_CLAUSE_DEPEND_INOUTSET:
    1000            0 :           name = "inoutset";
    1001            0 :           break;
    1002            0 :         case OMP_CLAUSE_DEPEND_LAST:
    1003            0 :           name = "__internal__";
    1004            0 :           break;
    1005            0 :         default:
    1006            0 :           gcc_unreachable ();
    1007              :         }
    1008          176 :       {
    1009          176 :         tree t = OMP_CLAUSE_DECL (clause);
    1010          176 :         if (OMP_ITERATOR_DECL_P (t))
    1011              :           {
    1012            0 :             dump_omp_iterators (pp, TREE_PURPOSE (t), spc, flags);
    1013            0 :             pp_colon (pp);
    1014            0 :             t = TREE_VALUE (t);
    1015              :           }
    1016          176 :         if (name[0])
    1017              :           {
    1018          176 :             pp_string (pp, name);
    1019          176 :             pp_colon (pp);
    1020              :           }
    1021          176 :         if (t == null_pointer_node)
    1022            0 :           pp_string (pp, "omp_all_memory");
    1023              :         else
    1024          176 :           dump_generic_node (pp, t, spc, flags, false);
    1025          176 :         pp_right_paren (pp);
    1026              :       }
    1027          176 :       break;
    1028              : 
    1029           22 :     case OMP_CLAUSE_DOACROSS:
    1030           22 :       pp_string (pp, OMP_CLAUSE_DOACROSS_DEPEND (clause)
    1031              :                      ? "depend(" : "doacross(");
    1032           22 :       switch (OMP_CLAUSE_DOACROSS_KIND (clause))
    1033              :         {
    1034            9 :         case OMP_CLAUSE_DOACROSS_SOURCE:
    1035            9 :           if (OMP_CLAUSE_DOACROSS_DEPEND (clause))
    1036            9 :             pp_string (pp, "source)");
    1037              :           else
    1038            0 :             pp_string (pp, "source:)");
    1039              :           break;
    1040           13 :         case OMP_CLAUSE_DOACROSS_SINK:
    1041           13 :           pp_string (pp, "sink:");
    1042           13 :           if (OMP_CLAUSE_DECL (clause) == NULL_TREE)
    1043              :             {
    1044            0 :               pp_string (pp, "omp_cur_iteration-1)");
    1045            0 :               break;
    1046              :             }
    1047           34 :           for (tree t = OMP_CLAUSE_DECL (clause); t; t = TREE_CHAIN (t))
    1048           21 :             if (TREE_CODE (t) == TREE_LIST)
    1049              :               {
    1050           21 :                 dump_generic_node (pp, TREE_VALUE (t), spc, flags, false);
    1051           21 :                 if (TREE_PURPOSE (t) != integer_zero_node)
    1052              :                   {
    1053           19 :                     if (OMP_CLAUSE_DOACROSS_SINK_NEGATIVE (t))
    1054            8 :                       pp_minus (pp);
    1055              :                     else
    1056           11 :                       pp_plus (pp);
    1057           19 :                     dump_generic_node (pp, TREE_PURPOSE (t), spc, flags,
    1058              :                                        false);
    1059              :                   }
    1060           21 :                 if (TREE_CHAIN (t))
    1061            8 :                   pp_comma (pp);
    1062              :               }
    1063              :             else
    1064            0 :               gcc_unreachable ();
    1065           13 :           pp_right_paren (pp);
    1066           13 :           break;
    1067            0 :         default:
    1068            0 :           gcc_unreachable ();
    1069              :         }
    1070              :       break;
    1071              : 
    1072         6474 :     case OMP_CLAUSE_MAP:
    1073         6474 :       pp_string (pp, "map(");
    1074         6474 :       if (OMP_CLAUSE_MAP_READONLY (clause))
    1075           70 :         pp_string (pp, "readonly,");
    1076         6474 :       if (OMP_CLAUSE_ITERATORS (clause))
    1077              :         {
    1078           84 :           dump_omp_iterators (pp, OMP_CLAUSE_ITERATORS (clause), spc, flags);
    1079           84 :           pp_colon (pp);
    1080              :         }
    1081         6474 :       switch (OMP_CLAUSE_MAP_KIND (clause))
    1082              :         {
    1083         1007 :         case GOMP_MAP_ALLOC:
    1084         1007 :         case GOMP_MAP_POINTER:
    1085         1007 :         case GOMP_MAP_POINTER_TO_ZERO_LENGTH_ARRAY_SECTION:
    1086         1007 :           pp_string (pp, "alloc");
    1087         1007 :           break;
    1088            4 :         case GOMP_MAP_IF_PRESENT:
    1089            4 :           pp_string (pp, "no_alloc");
    1090            4 :           break;
    1091          808 :         case GOMP_MAP_TO:
    1092          808 :         case GOMP_MAP_TO_PSET:
    1093          808 :           pp_string (pp, "to");
    1094          808 :           break;
    1095          602 :         case GOMP_MAP_FROM:
    1096          602 :           pp_string (pp, "from");
    1097          602 :           break;
    1098         2224 :         case GOMP_MAP_TOFROM:
    1099         2224 :           pp_string (pp, "tofrom");
    1100         2224 :           break;
    1101            3 :         case GOMP_MAP_FORCE_ALLOC:
    1102            3 :           pp_string (pp, "force_alloc");
    1103            3 :           break;
    1104           17 :         case GOMP_MAP_FORCE_TO:
    1105           17 :           pp_string (pp, "force_to");
    1106           17 :           break;
    1107           26 :         case GOMP_MAP_FORCE_FROM:
    1108           26 :           pp_string (pp, "force_from");
    1109           26 :           break;
    1110           61 :         case GOMP_MAP_FORCE_TOFROM:
    1111           61 :           pp_string (pp, "force_tofrom");
    1112           61 :           break;
    1113          229 :         case GOMP_MAP_FORCE_PRESENT:
    1114          229 :           pp_string (pp, "force_present");
    1115          229 :           break;
    1116           83 :         case GOMP_MAP_DELETE:
    1117           83 :           pp_string (pp, "delete");
    1118           83 :           break;
    1119            8 :         case GOMP_MAP_FORCE_DEVICEPTR:
    1120            8 :           pp_string (pp, "force_deviceptr");
    1121            8 :           break;
    1122          158 :         case GOMP_MAP_ALWAYS_TO:
    1123          158 :           pp_string (pp, "always,to");
    1124          158 :           break;
    1125           40 :         case GOMP_MAP_ALWAYS_FROM:
    1126           40 :           pp_string (pp, "always,from");
    1127           40 :           break;
    1128           14 :         case GOMP_MAP_ALWAYS_TOFROM:
    1129           14 :           pp_string (pp, "always,tofrom");
    1130           14 :           break;
    1131          190 :         case GOMP_MAP_RELEASE:
    1132          190 :           pp_string (pp, "release");
    1133          190 :           break;
    1134          344 :         case GOMP_MAP_FIRSTPRIVATE_POINTER:
    1135          344 :           pp_string (pp, "firstprivate");
    1136          344 :           break;
    1137            0 :         case GOMP_MAP_FIRSTPRIVATE_REFERENCE:
    1138            0 :           pp_string (pp, "firstprivate ref");
    1139            0 :           break;
    1140          150 :         case GOMP_MAP_STRUCT:
    1141          150 :           pp_string (pp, "struct");
    1142          150 :           break;
    1143            2 :         case GOMP_MAP_STRUCT_UNORD:
    1144            2 :           pp_string (pp, "struct_unord");
    1145            2 :           break;
    1146           51 :         case GOMP_MAP_ALWAYS_POINTER:
    1147           51 :           pp_string (pp, "always_pointer");
    1148           51 :           break;
    1149            0 :         case GOMP_MAP_DEVICE_RESIDENT:
    1150            0 :           pp_string (pp, "device_resident");
    1151            0 :           break;
    1152            0 :         case GOMP_MAP_LINK:
    1153            0 :           pp_string (pp, "link");
    1154            0 :           break;
    1155          162 :         case GOMP_MAP_ATTACH:
    1156          162 :           pp_string (pp, "attach");
    1157          162 :           break;
    1158           42 :         case GOMP_MAP_DETACH:
    1159           42 :           pp_string (pp, "detach");
    1160           42 :           break;
    1161            8 :         case GOMP_MAP_FORCE_DETACH:
    1162            8 :           pp_string (pp, "force_detach");
    1163            8 :           break;
    1164           46 :         case GOMP_MAP_ATTACH_DETACH:
    1165           46 :           pp_string (pp, "attach_detach");
    1166           46 :           break;
    1167            8 :         case GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION:
    1168            8 :           pp_string (pp, "attach_zero_length_array_section");
    1169            8 :           break;
    1170           29 :         case GOMP_MAP_PRESENT_ALLOC:
    1171           29 :           pp_string (pp, "present,alloc");
    1172           29 :           break;
    1173           29 :         case GOMP_MAP_PRESENT_TO:
    1174           29 :           pp_string (pp, "present,to");
    1175           29 :           break;
    1176           16 :         case GOMP_MAP_PRESENT_FROM:
    1177           16 :           pp_string (pp, "present,from");
    1178           16 :           break;
    1179           15 :         case GOMP_MAP_PRESENT_TOFROM:
    1180           15 :           pp_string (pp, "present,tofrom");
    1181           15 :           break;
    1182           40 :         case GOMP_MAP_ALWAYS_PRESENT_TO:
    1183           40 :           pp_string (pp, "always,present,to");
    1184           40 :           break;
    1185           30 :         case GOMP_MAP_ALWAYS_PRESENT_FROM:
    1186           30 :           pp_string (pp, "always,present,from");
    1187           30 :           break;
    1188           12 :         case GOMP_MAP_ALWAYS_PRESENT_TOFROM:
    1189           12 :           pp_string (pp, "always,present,tofrom");
    1190           12 :           break;
    1191           16 :         case GOMP_MAP_UNSET:
    1192           16 :           pp_string (pp, "unset");
    1193           16 :           break;
    1194            0 :         case GOMP_MAP_PUSH_MAPPER_NAME:
    1195            0 :           pp_string (pp, "push_mapper");
    1196            0 :           break;
    1197            0 :         case GOMP_MAP_POP_MAPPER_NAME:
    1198            0 :           pp_string (pp, "pop_mapper");
    1199            0 :           break;
    1200            0 :         case GOMP_MAP_USES_ALLOCATORS:
    1201            0 :           pp_string (pp, "uses_allocators");
    1202            0 :           break;
    1203            0 :         default:
    1204            0 :           gcc_unreachable ();
    1205              :         }
    1206         6474 :       pp_colon (pp);
    1207         6474 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
    1208              :                          spc, flags, false);
    1209         6732 :      print_clause_size:
    1210         6732 :       if (OMP_CLAUSE_SIZE (clause))
    1211              :         {
    1212        11297 :           switch (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_MAP
    1213         5719 :                   ? OMP_CLAUSE_MAP_KIND (clause) : GOMP_MAP_TO)
    1214              :             {
    1215          980 :             case GOMP_MAP_POINTER:
    1216          980 :             case GOMP_MAP_FIRSTPRIVATE_POINTER:
    1217          980 :             case GOMP_MAP_FIRSTPRIVATE_REFERENCE:
    1218          980 :             case GOMP_MAP_ALWAYS_POINTER:
    1219          980 :               pp_string (pp, " [pointer assign, bias: ");
    1220          980 :               break;
    1221            4 :             case GOMP_MAP_POINTER_TO_ZERO_LENGTH_ARRAY_SECTION:
    1222            4 :               pp_string (pp, " [pointer assign, zero-length array section, bias: ");
    1223            4 :               break;
    1224          141 :             case GOMP_MAP_TO_PSET:
    1225          141 :               pp_string (pp, " [pointer set, len: ");
    1226          141 :               break;
    1227          266 :             case GOMP_MAP_ATTACH:
    1228          266 :             case GOMP_MAP_DETACH:
    1229          266 :             case GOMP_MAP_FORCE_DETACH:
    1230          266 :             case GOMP_MAP_ATTACH_DETACH:
    1231          266 :             case GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION:
    1232          266 :               pp_string (pp, " [bias: ");
    1233          266 :               break;
    1234          179 :             case GOMP_MAP_RELEASE:
    1235          179 :             case GOMP_MAP_DELETE:
    1236          179 :               if (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_MAP
    1237          179 :                   && OMP_CLAUSE_RELEASE_DESCRIPTOR (clause))
    1238              :                 {
    1239           25 :                   pp_string (pp, " [pointer set, len: ");
    1240           25 :                   break;
    1241              :                 }
    1242              :               /* Fallthrough.  */
    1243         4303 :             default:
    1244         4303 :               pp_string (pp, " [len: ");
    1245         4303 :               break;
    1246              :             }
    1247         5719 :           dump_generic_node (pp, OMP_CLAUSE_SIZE (clause),
    1248              :                              spc, flags, false);
    1249         5719 :           if (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_MAP
    1250         5719 :               && OMP_CLAUSE_MAP_SIZE_NEEDS_ADJUSTMENT (clause))
    1251            2 :             pp_string (pp, " (needs adjustment)");
    1252         5719 :           pp_right_bracket (pp);
    1253              :         }
    1254         6732 :       if (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_MAP)
    1255              :         {
    1256         6474 :           if (OMP_CLAUSE_MAP_RUNTIME_IMPLICIT_P (clause))
    1257          833 :             pp_string (pp, " [runtime_implicit]");
    1258         6474 :           if (OMP_CLAUSE_MAP_GIMPLE_ONLY (clause))
    1259            1 :             pp_string (pp, " [gimple only]");
    1260              :         }
    1261         6732 :       pp_right_paren (pp);
    1262         6732 :       break;
    1263              : 
    1264           91 :     case OMP_CLAUSE_FROM:
    1265           91 :       pp_string (pp, "from(");
    1266           91 :       if (OMP_CLAUSE_MOTION_PRESENT (clause))
    1267           37 :         pp_string (pp, "present:");
    1268           91 :       if (OMP_CLAUSE_ITERATORS (clause))
    1269              :         {
    1270           10 :           dump_omp_iterators (pp, OMP_CLAUSE_ITERATORS (clause), spc, flags);
    1271           10 :           pp_colon (pp);
    1272              :         }
    1273           91 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
    1274              :                          spc, flags, false);
    1275           91 :       goto print_clause_size;
    1276              : 
    1277          111 :     case OMP_CLAUSE_TO:
    1278          111 :       pp_string (pp, "to(");
    1279          111 :       if (OMP_CLAUSE_MOTION_PRESENT (clause))
    1280           37 :         pp_string (pp, "present:");
    1281          111 :       if (OMP_CLAUSE_ITERATORS (clause))
    1282              :         {
    1283           25 :           dump_omp_iterators (pp, OMP_CLAUSE_ITERATORS (clause), spc, flags);
    1284           25 :           pp_colon (pp);
    1285              :         }
    1286          111 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
    1287              :                          spc, flags, false);
    1288          111 :       goto print_clause_size;
    1289              : 
    1290           56 :     case OMP_CLAUSE__CACHE_:
    1291           56 :       pp_string (pp, "(");
    1292           56 :       if (OMP_CLAUSE__CACHE__READONLY (clause))
    1293           32 :         pp_string (pp, "readonly:");
    1294           56 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
    1295              :                          spc, flags, false);
    1296           56 :       goto print_clause_size;
    1297              : 
    1298           24 :     case OMP_CLAUSE__MAPPER_BINDING_:
    1299           24 :       pp_string (pp, "mapper_binding(");
    1300           24 :       if (OMP_CLAUSE__MAPPER_BINDING__ID (clause))
    1301              :         {
    1302            0 :           dump_generic_node (pp, OMP_CLAUSE__MAPPER_BINDING__ID (clause), spc,
    1303              :                              flags, false);
    1304            0 :           pp_comma (pp);
    1305              :         }
    1306           24 :       dump_generic_node (pp,
    1307           24 :                          TREE_TYPE (OMP_CLAUSE__MAPPER_BINDING__DECL (clause)),
    1308              :                          spc, flags, false);
    1309           24 :       pp_comma (pp);
    1310           24 :       dump_generic_node (pp, OMP_CLAUSE__MAPPER_BINDING__MAPPER (clause), spc,
    1311              :                          flags, false);
    1312           24 :       pp_right_paren (pp);
    1313           24 :       break;
    1314              : 
    1315         1190 :     case OMP_CLAUSE_NUM_TEAMS:
    1316         1190 :       pp_string (pp, "num_teams(");
    1317         1190 :       if (OMP_CLAUSE_NUM_TEAMS_DIMS (clause))
    1318           13 :         pp_string (pp, "dims():");
    1319         1190 :       if (OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR (clause))
    1320              :         {
    1321            0 :           dump_generic_node (pp, OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR (clause),
    1322              :                              spc, flags, false);
    1323            0 :           pp_colon (pp);
    1324              :         }
    1325         1190 :       dump_generic_node (pp, OMP_CLAUSE_NUM_TEAMS_UPPER_EXPR (clause),
    1326              :                          spc, flags, false);
    1327         1190 :       pp_right_paren (pp);
    1328         1190 :       break;
    1329              : 
    1330         1202 :     case OMP_CLAUSE_THREAD_LIMIT:
    1331         1202 :       pp_string (pp, "thread_limit(");
    1332         1202 :       if (OMP_CLAUSE_THREAD_LIMIT_STRICT (clause))
    1333           10 :         pp_string (pp, "strict");
    1334         1202 :       if (OMP_CLAUSE_THREAD_LIMIT_STRICT (clause)
    1335         1202 :           && OMP_CLAUSE_THREAD_LIMIT_DIMS (clause))
    1336            7 :         pp_comma (pp);
    1337         1202 :       if (OMP_CLAUSE_THREAD_LIMIT_DIMS (clause))
    1338           11 :         pp_string (pp, "dims()");
    1339         1202 :       if (OMP_CLAUSE_THREAD_LIMIT_STRICT (clause)
    1340         1202 :           || OMP_CLAUSE_THREAD_LIMIT_DIMS (clause))
    1341           14 :         pp_colon (pp);
    1342         1202 :       dump_generic_node (pp, OMP_CLAUSE_THREAD_LIMIT_EXPR (clause),
    1343              :                          spc, flags, false);
    1344         1202 :       pp_right_paren (pp);
    1345         1202 :       break;
    1346              : 
    1347           66 :     case OMP_CLAUSE_DEVICE:
    1348           66 :       pp_string (pp, "device(");
    1349           66 :       if (OMP_CLAUSE_DEVICE_ANCESTOR (clause))
    1350           13 :         pp_string (pp, "ancestor:");
    1351           66 :       dump_generic_node (pp, OMP_CLAUSE_DEVICE_ID (clause),
    1352              :                          spc, flags, false);
    1353           66 :       pp_right_paren (pp);
    1354           66 :       break;
    1355              : 
    1356            0 :     case OMP_CLAUSE_DIST_SCHEDULE:
    1357            0 :       pp_string (pp, "dist_schedule(static");
    1358            0 :       if (OMP_CLAUSE_DIST_SCHEDULE_CHUNK_EXPR (clause))
    1359              :         {
    1360            0 :           pp_comma (pp);
    1361            0 :           dump_generic_node (pp,
    1362            0 :                              OMP_CLAUSE_DIST_SCHEDULE_CHUNK_EXPR (clause),
    1363              :                              spc, flags, false);
    1364              :         }
    1365            0 :       pp_right_paren (pp);
    1366            0 :       break;
    1367              : 
    1368            4 :     case OMP_CLAUSE_PROC_BIND:
    1369            4 :       pp_string (pp, "proc_bind(");
    1370            4 :       switch (OMP_CLAUSE_PROC_BIND_KIND (clause))
    1371              :         {
    1372            0 :         case OMP_CLAUSE_PROC_BIND_MASTER:
    1373              :           /* Same enum value: case OMP_CLAUSE_PROC_BIND_PRIMARY: */
    1374              :           /* TODO: Change to 'primary' for OpenMP 5.1.  */
    1375            0 :           pp_string (pp, "master");
    1376            0 :           break;
    1377            0 :         case OMP_CLAUSE_PROC_BIND_CLOSE:
    1378            0 :           pp_string (pp, "close");
    1379            0 :           break;
    1380            4 :         case OMP_CLAUSE_PROC_BIND_SPREAD:
    1381            4 :           pp_string (pp, "spread");
    1382            4 :           break;
    1383            0 :         default:
    1384            0 :           gcc_unreachable ();
    1385              :         }
    1386            4 :       pp_right_paren (pp);
    1387            4 :       break;
    1388              : 
    1389           16 :     case OMP_CLAUSE_DEVICE_TYPE:
    1390           16 :       pp_string (pp, "device_type(");
    1391           16 :       switch (OMP_CLAUSE_DEVICE_TYPE_KIND (clause))
    1392              :         {
    1393            5 :         case OMP_CLAUSE_DEVICE_TYPE_HOST:
    1394            5 :           pp_string (pp, "host");
    1395            5 :           break;
    1396            6 :         case OMP_CLAUSE_DEVICE_TYPE_NOHOST:
    1397            6 :           pp_string (pp, "nohost");
    1398            6 :           break;
    1399            5 :         case OMP_CLAUSE_DEVICE_TYPE_ANY:
    1400            5 :           pp_string (pp, "any");
    1401            5 :           break;
    1402            0 :         default:
    1403            0 :           gcc_unreachable ();
    1404              :         }
    1405           16 :       pp_right_paren (pp);
    1406           16 :       break;
    1407              : 
    1408           29 :     case OMP_CLAUSE_DYN_GROUPPRIVATE:
    1409           29 :       pp_string (pp, "dyn_groupprivate(");
    1410           29 :       switch (OMP_CLAUSE_DYN_GROUPPRIVATE_KIND (clause))
    1411              :         {
    1412            6 :         case OMP_CLAUSE_FALLBACK_ABORT:
    1413            6 :           pp_string (pp, "fallback(abort):");
    1414            6 :           break;
    1415            6 :         case OMP_CLAUSE_FALLBACK_DEFAULT_MEM:
    1416            6 :           pp_string (pp, "fallback(default_mem):");
    1417            6 :           break;
    1418            6 :         case OMP_CLAUSE_FALLBACK_NULL:
    1419            6 :           pp_string (pp, "fallback(null):");
    1420            6 :           break;
    1421              :         case OMP_CLAUSE_FALLBACK_UNSPECIFIED:
    1422              :           break;
    1423              :         }
    1424           29 :       dump_generic_node (pp, OMP_CLAUSE_DYN_GROUPPRIVATE_EXPR (clause),
    1425              :                          spc, flags, false);
    1426           29 :       pp_right_paren (pp);
    1427           29 :       break;
    1428              : 
    1429           23 :     case OMP_CLAUSE_SAFELEN:
    1430           23 :       pp_string (pp, "safelen(");
    1431           23 :       dump_generic_node (pp, OMP_CLAUSE_SAFELEN_EXPR (clause),
    1432              :                          spc, flags, false);
    1433           23 :       pp_right_paren (pp);
    1434           23 :       break;
    1435              : 
    1436          506 :     case OMP_CLAUSE_SIMDLEN:
    1437          506 :       pp_string (pp, "simdlen(");
    1438          506 :       if (OMP_CLAUSE_SIMDLEN_TYPE (clause))
    1439              :         {
    1440           64 :           pp_string (pp, "scaled(");
    1441           64 :           dump_generic_node (pp, OMP_CLAUSE_SIMDLEN_TYPE (clause),
    1442              :                              spc, flags, false);
    1443           64 :           if (OMP_CLAUSE_SIMDLEN_DIVISOR (clause))
    1444              :             {
    1445           43 :               pp_comma (pp);
    1446           43 :               dump_generic_node (pp, OMP_CLAUSE_SIMDLEN_DIVISOR (clause),
    1447              :                                  spc, flags, false);
    1448              :             }
    1449           64 :           pp_right_paren (pp);
    1450           64 :           pp_colon (pp);
    1451              :         }
    1452          506 :       dump_generic_node (pp, OMP_CLAUSE_SIMDLEN_EXPR (clause),
    1453              :                          spc, flags, false);
    1454          506 :       pp_right_paren (pp);
    1455          506 :       break;
    1456              : 
    1457            4 :     case OMP_CLAUSE_PRIORITY:
    1458            4 :       pp_string (pp, "priority(");
    1459            4 :       dump_generic_node (pp, OMP_CLAUSE_PRIORITY_EXPR (clause),
    1460              :                          spc, flags, false);
    1461            4 :       pp_right_paren (pp);
    1462            4 :       break;
    1463              : 
    1464           10 :     case OMP_CLAUSE_GRAINSIZE:
    1465           10 :       pp_string (pp, "grainsize(");
    1466           10 :       if (OMP_CLAUSE_GRAINSIZE_STRICT (clause))
    1467            0 :         pp_string (pp, "strict:");
    1468           10 :       dump_generic_node (pp, OMP_CLAUSE_GRAINSIZE_EXPR (clause),
    1469              :                          spc, flags, false);
    1470           10 :       pp_right_paren (pp);
    1471           10 :       break;
    1472              : 
    1473            0 :     case OMP_CLAUSE_NUM_TASKS:
    1474            0 :       pp_string (pp, "num_tasks(");
    1475            0 :       if (OMP_CLAUSE_NUM_TASKS_STRICT (clause))
    1476            0 :         pp_string (pp, "strict:");
    1477            0 :       dump_generic_node (pp, OMP_CLAUSE_NUM_TASKS_EXPR (clause),
    1478              :                          spc, flags, false);
    1479            0 :       pp_right_paren (pp);
    1480            0 :       break;
    1481              : 
    1482           24 :     case OMP_CLAUSE_HINT:
    1483           24 :       pp_string (pp, "hint(");
    1484           24 :       dump_generic_node (pp, OMP_CLAUSE_HINT_EXPR (clause),
    1485              :                          spc, flags, false);
    1486           24 :       pp_right_paren (pp);
    1487           24 :       break;
    1488              : 
    1489           43 :     case OMP_CLAUSE_FILTER:
    1490           43 :       pp_string (pp, "filter(");
    1491           43 :       dump_generic_node (pp, OMP_CLAUSE_FILTER_EXPR (clause),
    1492              :                          spc, flags, false);
    1493           43 :       pp_right_paren (pp);
    1494           43 :       break;
    1495              : 
    1496          582 :     case OMP_CLAUSE_DEFAULTMAP:
    1497          582 :       pp_string (pp, "defaultmap(");
    1498          582 :       switch (OMP_CLAUSE_DEFAULTMAP_BEHAVIOR (clause))
    1499              :         {
    1500           12 :         case OMP_CLAUSE_DEFAULTMAP_ALLOC:
    1501           12 :           pp_string (pp, "alloc");
    1502           12 :           break;
    1503           13 :         case OMP_CLAUSE_DEFAULTMAP_TO:
    1504           13 :           pp_string (pp, "to");
    1505           13 :           break;
    1506            4 :         case OMP_CLAUSE_DEFAULTMAP_FROM:
    1507            4 :           pp_string (pp, "from");
    1508            4 :           break;
    1509           37 :         case OMP_CLAUSE_DEFAULTMAP_TOFROM:
    1510           37 :           pp_string (pp, "tofrom");
    1511           37 :           break;
    1512           53 :         case OMP_CLAUSE_DEFAULTMAP_FIRSTPRIVATE:
    1513           53 :           pp_string (pp, "firstprivate");
    1514           53 :           break;
    1515          438 :         case OMP_CLAUSE_DEFAULTMAP_NONE:
    1516          438 :           pp_string (pp, "none");
    1517          438 :           break;
    1518           11 :         case OMP_CLAUSE_DEFAULTMAP_PRESENT:
    1519           11 :           pp_string (pp, "present");
    1520           11 :           break;
    1521           14 :         case OMP_CLAUSE_DEFAULTMAP_DEFAULT:
    1522           14 :           pp_string (pp, "default");
    1523           14 :           break;
    1524            0 :         default:
    1525            0 :           gcc_unreachable ();
    1526              :         }
    1527          582 :       switch (OMP_CLAUSE_DEFAULTMAP_CATEGORY (clause))
    1528              :         {
    1529              :         case OMP_CLAUSE_DEFAULTMAP_CATEGORY_UNSPECIFIED:
    1530              :           break;
    1531           20 :         case OMP_CLAUSE_DEFAULTMAP_CATEGORY_ALL:
    1532           20 :           pp_string (pp, ":all");
    1533           20 :           break;
    1534           41 :         case OMP_CLAUSE_DEFAULTMAP_CATEGORY_SCALAR:
    1535           41 :           pp_string (pp, ":scalar");
    1536           41 :           break;
    1537           46 :         case OMP_CLAUSE_DEFAULTMAP_CATEGORY_AGGREGATE:
    1538           46 :           pp_string (pp, ":aggregate");
    1539           46 :           break;
    1540           12 :         case OMP_CLAUSE_DEFAULTMAP_CATEGORY_ALLOCATABLE:
    1541           12 :           pp_string (pp, ":allocatable");
    1542           12 :           break;
    1543           30 :         case OMP_CLAUSE_DEFAULTMAP_CATEGORY_POINTER:
    1544           30 :           pp_string (pp, ":pointer");
    1545           30 :           break;
    1546            0 :         default:
    1547            0 :           gcc_unreachable ();
    1548              :         }
    1549          582 :       pp_right_paren (pp);
    1550          582 :       break;
    1551              : 
    1552          302 :     case OMP_CLAUSE_ORDER:
    1553          302 :       pp_string (pp, "order(");
    1554          302 :       if (OMP_CLAUSE_ORDER_UNCONSTRAINED (clause))
    1555           20 :         pp_string (pp, "unconstrained:");
    1556          282 :       else if (OMP_CLAUSE_ORDER_REPRODUCIBLE (clause))
    1557           20 :         pp_string (pp, "reproducible:");
    1558          302 :       pp_string (pp, "concurrent)");
    1559          302 :       break;
    1560              : 
    1561          260 :     case OMP_CLAUSE_BIND:
    1562          260 :       pp_string (pp, "bind(");
    1563          260 :       switch (OMP_CLAUSE_BIND_KIND (clause))
    1564              :         {
    1565          143 :         case OMP_CLAUSE_BIND_TEAMS:
    1566          143 :           pp_string (pp, "teams");
    1567          143 :           break;
    1568           97 :         case OMP_CLAUSE_BIND_PARALLEL:
    1569           97 :           pp_string (pp, "parallel");
    1570           97 :           break;
    1571           20 :         case OMP_CLAUSE_BIND_THREAD:
    1572           20 :           pp_string (pp, "thread");
    1573           20 :           break;
    1574            0 :         default:
    1575            0 :           gcc_unreachable ();
    1576              :         }
    1577          260 :       pp_right_paren (pp);
    1578          260 :       break;
    1579              : 
    1580            8 :     case OMP_CLAUSE__SIMDUID_:
    1581            8 :       pp_string (pp, "_simduid_(");
    1582            8 :       dump_generic_node (pp, OMP_CLAUSE__SIMDUID__DECL (clause),
    1583              :                          spc, flags, false);
    1584            8 :       pp_right_paren (pp);
    1585            8 :       break;
    1586              : 
    1587            0 :     case OMP_CLAUSE__SIMT_:
    1588            0 :       pp_string (pp, "_simt_");
    1589            0 :       break;
    1590              : 
    1591          349 :     case OMP_CLAUSE_GANG:
    1592          349 :       pp_string (pp, "gang");
    1593          349 :       if (OMP_CLAUSE_GANG_EXPR (clause) != NULL_TREE)
    1594              :         {
    1595           64 :           pp_string (pp, "(num: ");
    1596           64 :           dump_generic_node (pp, OMP_CLAUSE_GANG_EXPR (clause),
    1597              :                              spc, flags, false);
    1598              :         }
    1599          349 :       if (OMP_CLAUSE_GANG_STATIC_EXPR (clause) != NULL_TREE)
    1600              :         {
    1601           12 :           if (OMP_CLAUSE_GANG_EXPR (clause) == NULL_TREE)
    1602           10 :             pp_left_paren (pp);
    1603              :           else
    1604            2 :             pp_space (pp);
    1605           12 :           pp_string (pp, "static:");
    1606           12 :           if (OMP_CLAUSE_GANG_STATIC_EXPR (clause)
    1607           12 :               == integer_minus_one_node)
    1608            3 :             pp_character (pp, '*');
    1609              :           else
    1610            9 :             dump_generic_node (pp, OMP_CLAUSE_GANG_STATIC_EXPR (clause),
    1611              :                                spc, flags, false);
    1612              :         }
    1613          349 :       if (OMP_CLAUSE_GANG_EXPR (clause) != NULL_TREE
    1614          349 :           || OMP_CLAUSE_GANG_STATIC_EXPR (clause) != NULL_TREE)
    1615           74 :         pp_right_paren (pp);
    1616              :       break;
    1617              : 
    1618           97 :     case OMP_CLAUSE_ASYNC:
    1619           97 :       pp_string (pp, "async");
    1620           97 :       if (OMP_CLAUSE_ASYNC_EXPR (clause))
    1621              :         {
    1622           97 :           pp_character(pp, '(');
    1623           97 :           dump_generic_node (pp, OMP_CLAUSE_ASYNC_EXPR (clause),
    1624              :                              spc, flags, false);
    1625           97 :           pp_character(pp, ')');
    1626              :         }
    1627              :       break;
    1628              : 
    1629           58 :     case OMP_CLAUSE_AUTO:
    1630           58 :     case OMP_CLAUSE_SEQ:
    1631           58 :       pp_string (pp, omp_clause_code_name[OMP_CLAUSE_CODE (clause)]);
    1632           58 :       break;
    1633              : 
    1634          100 :     case OMP_CLAUSE_WAIT:
    1635          100 :       pp_string (pp, "wait(");
    1636          100 :       dump_generic_node (pp, OMP_CLAUSE_WAIT_EXPR (clause),
    1637              :                          spc, flags, false);
    1638          100 :       pp_character(pp, ')');
    1639          100 :       break;
    1640              : 
    1641          192 :     case OMP_CLAUSE_WORKER:
    1642          192 :       pp_string (pp, "worker");
    1643          192 :       if (OMP_CLAUSE_WORKER_EXPR (clause) != NULL_TREE)
    1644              :         {
    1645           62 :           pp_left_paren (pp);
    1646           62 :           dump_generic_node (pp, OMP_CLAUSE_WORKER_EXPR (clause),
    1647              :                              spc, flags, false);
    1648           62 :           pp_right_paren (pp);
    1649              :         }
    1650              :       break;
    1651              : 
    1652          179 :     case OMP_CLAUSE_VECTOR:
    1653          179 :       pp_string (pp, "vector");
    1654          179 :       if (OMP_CLAUSE_VECTOR_EXPR (clause) != NULL_TREE)
    1655              :         {
    1656           62 :           pp_left_paren (pp);
    1657           62 :           dump_generic_node (pp, OMP_CLAUSE_VECTOR_EXPR (clause),
    1658              :                              spc, flags, false);
    1659           62 :           pp_right_paren (pp);
    1660              :         }
    1661              :       break;
    1662              : 
    1663           25 :     case OMP_CLAUSE_NUM_GANGS:
    1664           25 :       pp_string (pp, "num_gangs(");
    1665           25 :       dump_generic_node (pp, OMP_CLAUSE_NUM_GANGS_EXPR (clause),
    1666              :                          spc, flags, false);
    1667           25 :       pp_character (pp, ')');
    1668           25 :       break;
    1669              : 
    1670            2 :     case OMP_CLAUSE_NUM_WORKERS:
    1671            2 :       pp_string (pp, "num_workers(");
    1672            2 :       dump_generic_node (pp, OMP_CLAUSE_NUM_WORKERS_EXPR (clause),
    1673              :                          spc, flags, false);
    1674            2 :       pp_character (pp, ')');
    1675            2 :       break;
    1676              : 
    1677            2 :     case OMP_CLAUSE_VECTOR_LENGTH:
    1678            2 :       pp_string (pp, "vector_length(");
    1679            2 :       dump_generic_node (pp, OMP_CLAUSE_VECTOR_LENGTH_EXPR (clause),
    1680              :                          spc, flags, false);
    1681            2 :       pp_character (pp, ')');
    1682            2 :       break;
    1683              : 
    1684          175 :     case OMP_CLAUSE_INBRANCH:
    1685          175 :       pp_string (pp, "inbranch");
    1686          175 :       break;
    1687          925 :     case OMP_CLAUSE_NOTINBRANCH:
    1688          925 :       pp_string (pp, "notinbranch");
    1689          925 :       break;
    1690            0 :     case OMP_CLAUSE_FOR:
    1691            0 :       pp_string (pp, "for");
    1692            0 :       break;
    1693            0 :     case OMP_CLAUSE_PARALLEL:
    1694            0 :       pp_string (pp, "parallel");
    1695            0 :       break;
    1696            0 :     case OMP_CLAUSE_SECTIONS:
    1697            0 :       pp_string (pp, "sections");
    1698            0 :       break;
    1699            0 :     case OMP_CLAUSE_TASKGROUP:
    1700            0 :       pp_string (pp, "taskgroup");
    1701            0 :       break;
    1702            0 :     case OMP_CLAUSE_NOGROUP:
    1703            0 :       pp_string (pp, "nogroup");
    1704            0 :       break;
    1705            0 :     case OMP_CLAUSE_THREADS:
    1706            0 :       pp_string (pp, "threads");
    1707            0 :       break;
    1708           10 :     case OMP_CLAUSE_SIMD:
    1709           10 :       pp_string (pp, "simd");
    1710           10 :       break;
    1711          431 :     case OMP_CLAUSE_INDEPENDENT:
    1712          431 :       pp_string (pp, "independent");
    1713          431 :       break;
    1714           55 :     case OMP_CLAUSE_TILE:
    1715           55 :       pp_string (pp, "tile(");
    1716           55 :       dump_generic_node (pp, OMP_CLAUSE_TILE_LIST (clause),
    1717              :                          spc, flags, false);
    1718           55 :       pp_right_paren (pp);
    1719           55 :       break;
    1720          135 :     case OMP_CLAUSE_PARTIAL:
    1721          135 :       pp_string (pp, "partial");
    1722          135 :       if (OMP_CLAUSE_PARTIAL_EXPR (clause))
    1723              :         {
    1724          130 :           pp_left_paren (pp);
    1725          130 :           dump_generic_node (pp, OMP_CLAUSE_PARTIAL_EXPR (clause),
    1726              :                              spc, flags, false);
    1727          130 :           pp_right_paren (pp);
    1728              :         }
    1729              :       break;
    1730           55 :     case OMP_CLAUSE_FULL:
    1731           55 :       pp_string (pp, "full");
    1732           55 :       break;
    1733          188 :     case OMP_CLAUSE_SIZES:
    1734          188 :       pp_string (pp, "sizes(");
    1735          188 :       dump_generic_node (pp, OMP_CLAUSE_SIZES_LIST (clause),
    1736              :                          spc, flags, false);
    1737          188 :       pp_right_paren (pp);
    1738          188 :       break;
    1739          351 :     case OMP_CLAUSE_INTEROP:
    1740          351 :       pp_string (pp, "interop(");
    1741          351 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause), spc, flags, false);
    1742          351 :       pp_right_paren (pp);
    1743          351 :       break;
    1744           58 :     case OMP_CLAUSE_IF_PRESENT:
    1745           58 :       pp_string (pp, "if_present");
    1746           58 :       break;
    1747           50 :     case OMP_CLAUSE_FINALIZE:
    1748           50 :       pp_string (pp, "finalize");
    1749           50 :       break;
    1750            5 :     case OMP_CLAUSE_NOHOST:
    1751            5 :       pp_string (pp, "nohost");
    1752            5 :       break;
    1753            0 :     case OMP_CLAUSE_DETACH:
    1754            0 :       pp_string (pp, "detach(");
    1755            0 :       dump_generic_node (pp, OMP_CLAUSE_DECL (clause), spc, flags,
    1756              :                          false);
    1757            0 :       pp_right_paren (pp);
    1758            0 :       break;
    1759            0 :     default:
    1760            0 :       gcc_unreachable ();
    1761              :     }
    1762        30137 : }
    1763              : 
    1764              : 
    1765              : /* Dump chain of OMP clauses.
    1766              : 
    1767              :    PP, SPC and FLAGS are as in dump_generic_node.  */
    1768              : 
    1769              : void
    1770        13080 : dump_omp_clauses (pretty_printer *pp, tree clause, int spc, dump_flags_t flags,
    1771              :                   bool leading_space)
    1772              : {
    1773        43194 :   while (clause)
    1774              :     {
    1775        30114 :       if (leading_space)
    1776        28524 :         pp_space (pp);
    1777        30114 :       dump_omp_clause (pp, clause, spc, flags);
    1778        30114 :       leading_space = true;
    1779              : 
    1780        30114 :       clause = OMP_CLAUSE_CHAIN (clause);
    1781              :     }
    1782        13080 : }
    1783              : 
    1784              : /* Dump an OpenMP context selector CTX to PP.  */
    1785              : static void
    1786          432 : dump_omp_context_selector (pretty_printer *pp, tree ctx, int spc,
    1787              :                            dump_flags_t flags)
    1788              : {
    1789          968 :   for (tree set = ctx; set && set != error_mark_node; set = TREE_CHAIN (set))
    1790              :     {
    1791          536 :       pp_string (pp, OMP_TSS_NAME (set));
    1792          536 :       pp_string (pp, " = {");
    1793          536 :       for (tree sel = OMP_TSS_TRAIT_SELECTORS (set);
    1794         1156 :            sel && sel != error_mark_node; sel = TREE_CHAIN (sel))
    1795              :         {
    1796          620 :           if (OMP_TS_CODE (sel) == OMP_TRAIT_INVALID)
    1797            0 :             pp_string (pp, "<unknown selector>");
    1798              :           else
    1799          620 :             pp_string (pp, OMP_TS_NAME (sel));
    1800          620 :           tree score = OMP_TS_SCORE (sel);
    1801          620 :           tree props = OMP_TS_PROPERTIES (sel);
    1802          620 :           enum omp_tp_type tp_type = omp_ts_map[OMP_TS_CODE (sel)].tp_type;
    1803          620 :           if (props)
    1804              :             {
    1805          311 :               pp_string (pp, " (");
    1806          311 :               if (score)
    1807              :                 {
    1808           55 :                   pp_string (pp, "score(");
    1809           55 :                   dump_generic_node (pp, score, spc + 4, flags, false);
    1810           55 :                   pp_string (pp, "): ");
    1811              :                 }
    1812          638 :               for (tree prop = props; prop; prop = TREE_CHAIN (prop))
    1813              :                 {
    1814          327 :                   if (tp_type == OMP_TRAIT_PROPERTY_CLAUSE_LIST)
    1815           23 :                     dump_omp_clause (pp, prop, spc + 4, flags);
    1816          304 :                   else if (OMP_TP_NAME (prop) == OMP_TP_NAMELIST_NODE)
    1817              :                     {
    1818          169 :                       const char *str = omp_context_name_list_prop (prop);
    1819          169 :                       pp_string (pp, "\"");
    1820          169 :                       pretty_print_string (pp, str, strlen (str) + 1);
    1821          169 :                       pp_string (pp, "\"");
    1822              :                     }
    1823          135 :                   else if (OMP_TP_NAME (prop))
    1824            6 :                     dump_generic_node (pp, OMP_TP_NAME (prop), spc + 4,
    1825              :                                        flags, false);
    1826          129 :                   else if (OMP_TP_VALUE (prop))
    1827          129 :                     dump_generic_node (pp, OMP_TP_VALUE (prop), spc + 4,
    1828              :                                        flags, false);
    1829          327 :                   if (TREE_CHAIN (prop))
    1830              :                     {
    1831           16 :                       pp_comma (pp);
    1832           16 :                       pp_space (pp);
    1833              :                     }
    1834              :                 }
    1835          311 :               pp_string (pp, ")");
    1836              :             }
    1837          620 :           if (TREE_CHAIN (sel))
    1838              :             {
    1839           84 :               pp_comma (pp);
    1840           84 :               pp_space (pp);
    1841              :             }
    1842              :         }
    1843          536 :       pp_string (pp, "}");
    1844          536 :       if (TREE_CHAIN (set))
    1845              :         {
    1846          116 :           pp_comma (pp);
    1847          116 :           newline_and_indent (pp, spc);
    1848              :         }
    1849              :     }
    1850          432 : }
    1851              : 
    1852              : /* Wrapper for above, used for "declare variant".  Compare to
    1853              :    print_generic_expr.  */
    1854              : void
    1855          332 : print_omp_context_selector (FILE *file, tree t, dump_flags_t flags)
    1856              : {
    1857          332 :   maybe_init_pretty_print (file);
    1858          332 :   dump_omp_context_selector (tree_pp, t, 0, flags);
    1859          332 :   pp_flush (tree_pp);
    1860          332 : }
    1861              : 
    1862              : /* Dump location LOC to PP.  */
    1863              : 
    1864              : void
    1865         2329 : dump_location (pretty_printer *pp, location_t loc, dump_flags_t flags)
    1866              : {
    1867         2329 :   expanded_location xloc = expand_location (loc);
    1868         2329 :   int discriminator = get_discriminator_from_loc (loc);
    1869              : 
    1870         2329 :   pp_left_bracket (pp);
    1871         2329 :   if (xloc.file)
    1872              :     {
    1873         2329 :       pp_string (pp, xloc.file);
    1874         2329 :       pp_string (pp, ":");
    1875              :     }
    1876         2329 :   pp_decimal_int (pp, xloc.line);
    1877         2329 :   pp_colon (pp);
    1878         2329 :   pp_decimal_int (pp, xloc.column);
    1879         2329 :   if (discriminator && (flags & TDF_COMPARE_DEBUG) == 0)
    1880              :   {
    1881           12 :     pp_string (pp, " discrim ");
    1882           12 :     pp_decimal_int (pp, discriminator);
    1883              :   }
    1884         2329 :   pp_string (pp, "] ");
    1885         2329 : }
    1886              : 
    1887              : 
    1888              : /* Dump lexical block BLOCK.  PP, SPC and FLAGS are as in
    1889              :    dump_generic_node.  */
    1890              : 
    1891              : static void
    1892            6 : dump_block_node (pretty_printer *pp, tree block, int spc, dump_flags_t flags)
    1893              : {
    1894            6 :   tree t;
    1895              : 
    1896            6 :   pp_string (pp, "BLOCK #");
    1897            6 :   pp_decimal_int (pp, BLOCK_NUMBER (block));
    1898            6 :   pp_character (pp, ' ');
    1899              : 
    1900            6 :   if (flags & TDF_ADDRESS)
    1901              :     {
    1902            0 :       pp_character (pp, '[');
    1903            0 :       pp_scalar (pp, "%p", (void *) block);
    1904            0 :       pp_string (pp, "] ");
    1905              :     }
    1906              : 
    1907            6 :   if (TREE_ASM_WRITTEN (block))
    1908            0 :     pp_string (pp, "[written] ");
    1909              : 
    1910            6 :   if (flags & TDF_SLIM)
    1911            6 :     return;
    1912              : 
    1913            0 :   if (BLOCK_SOURCE_LOCATION (block))
    1914            0 :     dump_location (pp, BLOCK_SOURCE_LOCATION (block), flags);
    1915              : 
    1916            0 :   newline_and_indent (pp, spc + 2);
    1917              : 
    1918            0 :   if (BLOCK_SUPERCONTEXT (block))
    1919              :     {
    1920            0 :       pp_string (pp, "SUPERCONTEXT: ");
    1921            0 :       dump_generic_node (pp, BLOCK_SUPERCONTEXT (block), 0,
    1922              :                          flags | TDF_SLIM, false);
    1923            0 :       newline_and_indent (pp, spc + 2);
    1924              :     }
    1925              : 
    1926            0 :   if (BLOCK_SUBBLOCKS (block)
    1927            0 :       && (!lang_GNU_Fortran ()
    1928            0 :           || TREE_CODE (BLOCK_SUBBLOCKS (block)) != STATEMENT_LIST))
    1929              :     {
    1930            0 :       pp_string (pp, "SUBBLOCKS: ");
    1931            0 :       for (t = BLOCK_SUBBLOCKS (block); t; t = BLOCK_CHAIN (t))
    1932              :         {
    1933            0 :           dump_generic_node (pp, t, 0, flags | TDF_SLIM, false);
    1934            0 :           pp_space (pp);
    1935              :         }
    1936            0 :       newline_and_indent (pp, spc + 2);
    1937              :     }
    1938              : 
    1939            0 :   if (BLOCK_CHAIN (block))
    1940              :     {
    1941            0 :       pp_string (pp, "SIBLINGS: ");
    1942            0 :       for (t = BLOCK_CHAIN (block); t; t = BLOCK_CHAIN (t))
    1943              :         {
    1944            0 :           dump_generic_node (pp, t, 0, flags | TDF_SLIM, false);
    1945            0 :           pp_space (pp);
    1946              :         }
    1947            0 :       newline_and_indent (pp, spc + 2);
    1948              :     }
    1949              : 
    1950            0 :   if (BLOCK_VARS (block))
    1951              :     {
    1952            0 :       pp_string (pp, "VARS: ");
    1953            0 :       for (t = BLOCK_VARS (block); t; t = TREE_CHAIN (t))
    1954              :         {
    1955            0 :           dump_generic_node (pp, t, 0, flags, false);
    1956            0 :           pp_space (pp);
    1957              :         }
    1958            0 :       newline_and_indent (pp, spc + 2);
    1959              :     }
    1960              : 
    1961            0 :   if (vec_safe_length (BLOCK_NONLOCALIZED_VARS (block)) > 0)
    1962              :     {
    1963            0 :       unsigned i;
    1964            0 :       vec<tree, va_gc> *nlv = BLOCK_NONLOCALIZED_VARS (block);
    1965              : 
    1966            0 :       pp_string (pp, "NONLOCALIZED_VARS: ");
    1967            0 :       FOR_EACH_VEC_ELT (*nlv, i, t)
    1968              :         {
    1969            0 :           dump_generic_node (pp, t, 0, flags, false);
    1970            0 :           pp_space (pp);
    1971              :         }
    1972            0 :       newline_and_indent (pp, spc + 2);
    1973              :     }
    1974              : 
    1975            0 :   if (BLOCK_ABSTRACT_ORIGIN (block))
    1976              :     {
    1977            0 :       pp_string (pp, "ABSTRACT_ORIGIN: ");
    1978            0 :       dump_generic_node (pp, BLOCK_ABSTRACT_ORIGIN (block), 0,
    1979              :                          flags | TDF_SLIM, false);
    1980            0 :       newline_and_indent (pp, spc + 2);
    1981              :     }
    1982              : 
    1983            0 :   if (BLOCK_FRAGMENT_ORIGIN (block))
    1984              :     {
    1985            0 :       pp_string (pp, "FRAGMENT_ORIGIN: ");
    1986            0 :       dump_generic_node (pp, BLOCK_FRAGMENT_ORIGIN (block), 0,
    1987              :                          flags | TDF_SLIM, false);
    1988            0 :       newline_and_indent (pp, spc + 2);
    1989              :     }
    1990              : 
    1991            0 :   if (BLOCK_FRAGMENT_CHAIN (block))
    1992              :     {
    1993            0 :       pp_string (pp, "FRAGMENT_CHAIN: ");
    1994            0 :       for (t = BLOCK_FRAGMENT_CHAIN (block); t; t = BLOCK_FRAGMENT_CHAIN (t))
    1995              :         {
    1996            0 :           dump_generic_node (pp, t, 0, flags | TDF_SLIM, false);
    1997            0 :           pp_space (pp);
    1998              :         }
    1999            0 :       newline_and_indent (pp, spc + 2);
    2000              :     }
    2001              : }
    2002              : 
    2003              : /* Dump #pragma omp atomic memory order clause.  */
    2004              : 
    2005              : void
    2006         1343 : dump_omp_atomic_memory_order (pretty_printer *pp, enum omp_memory_order mo)
    2007              : {
    2008         1343 :   switch (mo & OMP_MEMORY_ORDER_MASK)
    2009              :     {
    2010         1158 :     case OMP_MEMORY_ORDER_RELAXED:
    2011         1158 :       pp_string (pp, " relaxed");
    2012         1158 :       break;
    2013           52 :     case OMP_MEMORY_ORDER_SEQ_CST:
    2014           52 :       pp_string (pp, " seq_cst");
    2015           52 :       break;
    2016           37 :     case OMP_MEMORY_ORDER_ACQ_REL:
    2017           37 :       pp_string (pp, " acq_rel");
    2018           37 :       break;
    2019           32 :     case OMP_MEMORY_ORDER_ACQUIRE:
    2020           32 :       pp_string (pp, " acquire");
    2021           32 :       break;
    2022           64 :     case OMP_MEMORY_ORDER_RELEASE:
    2023           64 :       pp_string (pp, " release");
    2024           64 :       break;
    2025              :     case OMP_MEMORY_ORDER_UNSPECIFIED:
    2026              :       break;
    2027            0 :     default:
    2028            0 :       gcc_unreachable ();
    2029              :     }
    2030         1343 :   switch (mo & OMP_FAIL_MEMORY_ORDER_MASK)
    2031              :     {
    2032            0 :     case OMP_FAIL_MEMORY_ORDER_RELAXED:
    2033            0 :       pp_string (pp, " fail(relaxed)");
    2034            0 :       break;
    2035            0 :     case OMP_FAIL_MEMORY_ORDER_SEQ_CST:
    2036            0 :       pp_string (pp, " fail(seq_cst)");
    2037            0 :       break;
    2038            0 :     case OMP_FAIL_MEMORY_ORDER_ACQUIRE:
    2039            0 :       pp_string (pp, " fail(acquire)");
    2040            0 :       break;
    2041              :     case OMP_FAIL_MEMORY_ORDER_UNSPECIFIED:
    2042              :       break;
    2043            0 :     default:
    2044            0 :       gcc_unreachable ();
    2045              :     }
    2046         1343 : }
    2047              : 
    2048              : /* Helper to dump a MEM_REF node.  */
    2049              : 
    2050              : static void
    2051      1334292 : dump_mem_ref (pretty_printer *pp, tree node, int spc, dump_flags_t flags)
    2052              : {
    2053      1334292 :   if ((TREE_CODE (node) == MEM_REF
    2054      1334292 :        || TREE_CODE (node) == TARGET_MEM_REF)
    2055      1334292 :       && (flags & TDF_GIMPLE))
    2056              :     {
    2057            3 :       pp_string (pp, "__MEM <");
    2058            3 :       dump_generic_node (pp, TREE_TYPE (node),
    2059              :                          spc, flags | TDF_SLIM, false);
    2060            6 :       if (TYPE_ALIGN (TREE_TYPE (node))
    2061            3 :           != TYPE_ALIGN (TYPE_MAIN_VARIANT (TREE_TYPE (node))))
    2062              :         {
    2063            3 :           pp_string (pp, ", ");
    2064            3 :           pp_decimal_int (pp, TYPE_ALIGN (TREE_TYPE (node)));
    2065              :         }
    2066            3 :       pp_greater (pp);
    2067            3 :       pp_string (pp, " (");
    2068            3 :       if (TREE_TYPE (TREE_OPERAND (node, 0))
    2069            3 :           != TREE_TYPE (TREE_OPERAND (node, 1)))
    2070              :         {
    2071            3 :           pp_left_paren (pp);
    2072            3 :           dump_generic_node (pp, TREE_TYPE (TREE_OPERAND (node, 1)),
    2073              :                              spc, flags | TDF_SLIM, false);
    2074            3 :           pp_right_paren (pp);
    2075              :         }
    2076            3 :       dump_generic_node (pp, TREE_OPERAND (node, 0),
    2077              :                          spc, flags | TDF_SLIM, false);
    2078            3 :       if (! integer_zerop (TREE_OPERAND (node, 1)))
    2079              :         {
    2080            0 :           pp_string (pp, " + ");
    2081            0 :           dump_generic_node (pp, TREE_OPERAND (node, 1),
    2082              :                              spc, flags | TDF_SLIM, false);
    2083              :         }
    2084            3 :       if (TREE_CODE (node) == TARGET_MEM_REF)
    2085              :         {
    2086            0 :           if (TREE_OPERAND (node, 2))
    2087              :             {
    2088              :               /* INDEX * STEP  */
    2089            0 :               pp_string (pp, " + ");
    2090            0 :               dump_generic_node (pp, TREE_OPERAND (node, 2),
    2091              :                                  spc, flags | TDF_SLIM, false);
    2092            0 :               pp_string (pp, " * ");
    2093            0 :               dump_generic_node (pp, TREE_OPERAND (node, 3),
    2094              :                                  spc, flags | TDF_SLIM, false);
    2095              :             }
    2096            0 :           if (TREE_OPERAND (node, 4))
    2097              :             {
    2098              :               /* INDEX2  */
    2099            0 :               pp_string (pp, " + ");
    2100            0 :               dump_generic_node (pp, TREE_OPERAND (node, 4),
    2101              :                                  spc, flags | TDF_SLIM, false);
    2102              :             }
    2103              :         }
    2104            3 :       if (TREE_CODE (node) == MEM_REF
    2105            3 :           && REF_REVERSE_STORAGE_ORDER (node))
    2106              :         {
    2107            0 :           pp_string (pp, ", ");
    2108            0 :           pp_decimal_int (pp, REF_REVERSE_STORAGE_ORDER (node));
    2109              :         }
    2110            3 :       if (MR_DEPENDENCE_CLIQUE (node) != 0)
    2111              :         {
    2112            0 :           pp_string (pp, ", ");
    2113            0 :           pp_decimal_int (pp, MR_DEPENDENCE_CLIQUE (node));
    2114            0 :           pp_colon (pp);
    2115            0 :           pp_decimal_int (pp, MR_DEPENDENCE_BASE (node));
    2116              :         }
    2117            3 :       pp_right_paren (pp);
    2118              :     }
    2119      1334289 :   else if (TREE_CODE (node) == MEM_REF
    2120      1307369 :            && integer_zerop (TREE_OPERAND (node, 1))
    2121              :            /* Dump the types of INTEGER_CSTs explicitly, for we can't
    2122              :               infer them and MEM_ATTR caching will share MEM_REFs
    2123              :               with differently-typed op0s.  */
    2124       983047 :            && TREE_CODE (TREE_OPERAND (node, 0)) != INTEGER_CST
    2125              :            /* Released SSA_NAMES have no TREE_TYPE.  */
    2126       982908 :            && TREE_TYPE (TREE_OPERAND (node, 0)) != NULL_TREE
    2127              :            /* Same pointer types, but ignoring POINTER_TYPE vs.
    2128              :               REFERENCE_TYPE.  */
    2129       982908 :            && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 0)))
    2130       982908 :                == TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 1))))
    2131      1566824 :            && (TYPE_MODE (TREE_TYPE (TREE_OPERAND (node, 0)))
    2132       783412 :                == TYPE_MODE (TREE_TYPE (TREE_OPERAND (node, 1))))
    2133       783412 :            && (TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (TREE_OPERAND (node, 0)))
    2134       783412 :                == TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (TREE_OPERAND (node, 1))))
    2135              :            /* Same value types ignoring qualifiers.  */
    2136       783263 :            && (TYPE_MAIN_VARIANT (TREE_TYPE (node))
    2137       783263 :                == TYPE_MAIN_VARIANT
    2138              :                (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 1)))))
    2139      2101139 :            && (!(flags & TDF_ALIAS)
    2140         1482 :                || MR_DEPENDENCE_CLIQUE (node) == 0))
    2141              :     {
    2142       765536 :       if (TREE_CODE (TREE_OPERAND (node, 0)) != ADDR_EXPR)
    2143              :         {
    2144              :           /* Enclose pointers to arrays in parentheses.  */
    2145       672027 :           tree op0 = TREE_OPERAND (node, 0);
    2146       672027 :           tree op0type = TREE_TYPE (op0);
    2147       672027 :           if (POINTER_TYPE_P (op0type)
    2148       672027 :               && TREE_CODE (TREE_TYPE (op0type)) == ARRAY_TYPE)
    2149        30295 :             pp_left_paren (pp);
    2150       672027 :           pp_star (pp);
    2151       672027 :           dump_generic_node (pp, op0, spc, flags, false);
    2152       672027 :           if (POINTER_TYPE_P (op0type)
    2153       672027 :               && TREE_CODE (TREE_TYPE (op0type)) == ARRAY_TYPE)
    2154        30295 :             pp_right_paren (pp);
    2155              :         }
    2156              :       else
    2157        93509 :         dump_generic_node (pp,
    2158        93509 :                            TREE_OPERAND (TREE_OPERAND (node, 0), 0),
    2159              :                            spc, flags, false);
    2160              :     }
    2161              :   else
    2162              :     {
    2163       568753 :       pp_string (pp, "MEM");
    2164              : 
    2165       568753 :       tree nodetype = TREE_TYPE (node);
    2166       568753 :       tree op0 = TREE_OPERAND (node, 0);
    2167       568753 :       tree op1 = TREE_OPERAND (node, 1);
    2168       568753 :       tree op1type = TYPE_MAIN_VARIANT (TREE_TYPE (op1));
    2169              : 
    2170       568753 :       tree op0size = TYPE_SIZE (nodetype);
    2171       568753 :       tree op1size = TYPE_SIZE (TREE_TYPE (op1type));
    2172              : 
    2173       568753 :       if (!op0size || !op1size
    2174       568753 :           || !operand_equal_p (op0size, op1size, 0))
    2175              :         {
    2176       226863 :           pp_string (pp, " <");
    2177              :           /* If the size of the type of the operand is not the same
    2178              :              as the size of the MEM_REF expression include the type
    2179              :              of the latter similar to the TDF_GIMPLE output to make
    2180              :              it clear how many bytes of memory are being accessed.  */
    2181       226863 :           dump_generic_node (pp, nodetype, spc, flags | TDF_SLIM, false);
    2182       226863 :           pp_string (pp, "> ");
    2183              :         }
    2184              : 
    2185       568753 :       pp_string (pp, "[(");
    2186       568753 :       dump_generic_node (pp, op1type, spc, flags | TDF_SLIM, false);
    2187       568753 :       pp_right_paren (pp);
    2188       568753 :       dump_generic_node (pp, op0, spc, flags, false);
    2189       568753 :       if (!integer_zerop (op1))
    2190              :         {
    2191       327034 :           pp_string (pp, " + ");
    2192       327034 :           dump_generic_node (pp, op1, spc, flags, false);
    2193              :         }
    2194       568753 :       if (TREE_CODE (node) == TARGET_MEM_REF)
    2195              :         {
    2196        26920 :           tree tmp = TMR_INDEX2 (node);
    2197        26920 :           if (tmp)
    2198              :             {
    2199          280 :               pp_string (pp, " + ");
    2200          280 :               dump_generic_node (pp, tmp, spc, flags, false);
    2201              :             }
    2202        26920 :           tmp = TMR_INDEX (node);
    2203        26920 :           if (tmp)
    2204              :             {
    2205        22362 :               pp_string (pp, " + ");
    2206        22362 :               dump_generic_node (pp, tmp, spc, flags, false);
    2207        22362 :               tmp = TMR_STEP (node);
    2208        22362 :               pp_string (pp, " * ");
    2209        22362 :               if (tmp)
    2210        22349 :                 dump_generic_node (pp, tmp, spc, flags, false);
    2211              :               else
    2212           13 :                 pp_string (pp, "1");
    2213              :             }
    2214              :         }
    2215       568753 :       if ((flags & TDF_ALIAS)
    2216       568753 :           && MR_DEPENDENCE_CLIQUE (node) != 0)
    2217              :         {
    2218         1347 :           pp_string (pp, " clique ");
    2219         1347 :           pp_unsigned_wide_integer (pp, MR_DEPENDENCE_CLIQUE (node));
    2220         1347 :           pp_string (pp, " base ");
    2221         1347 :           pp_unsigned_wide_integer (pp, MR_DEPENDENCE_BASE (node));
    2222              :         }
    2223       568753 :       pp_right_bracket (pp);
    2224              :     }
    2225      1334292 : }
    2226              : 
    2227              : /* Helper function for dump_generic_node.  Dump INIT or COND expression for
    2228              :    OpenMP loop non-rectangular iterators.  */
    2229              : 
    2230              : void
    2231           88 : dump_omp_loop_non_rect_expr (pretty_printer *pp, tree node, int spc,
    2232              :                              dump_flags_t flags)
    2233              : {
    2234           88 :   gcc_assert (TREE_CODE (node) == TREE_VEC);
    2235           88 :   dump_generic_node (pp, TREE_VEC_ELT (node, 0), spc, flags, false);
    2236           88 :   pp_string (pp, " * ");
    2237           88 :   if (op_prio (TREE_VEC_ELT (node, 1)) <= op_code_prio (MULT_EXPR))
    2238              :     {
    2239            0 :       pp_left_paren (pp);
    2240            0 :       dump_generic_node (pp, TREE_VEC_ELT (node, 1), spc, flags, false);
    2241            0 :       pp_right_paren (pp);
    2242              :     }
    2243              :   else
    2244           88 :     dump_generic_node (pp, TREE_VEC_ELT (node, 1), spc, flags, false);
    2245           88 :   pp_string (pp, " + ");
    2246           88 :   if (op_prio (TREE_VEC_ELT (node, 1)) <= op_code_prio (PLUS_EXPR))
    2247              :     {
    2248            0 :       pp_left_paren (pp);
    2249            0 :       dump_generic_node (pp, TREE_VEC_ELT (node, 2), spc, flags, false);
    2250            0 :       pp_right_paren (pp);
    2251              :     }
    2252              :   else
    2253           88 :     dump_generic_node (pp, TREE_VEC_ELT (node, 2), spc, flags, false);
    2254           88 : }
    2255              : 
    2256              : /* Dump the node NODE on the pretty_printer PP, SPC spaces of
    2257              :    indent.  FLAGS specifies details to show in the dump (see TDF_* in
    2258              :    dumpfile.h).  If IS_STMT is true, the object printed is considered
    2259              :    to be a statement and it is terminated by ';' if appropriate.  */
    2260              : 
    2261              : int
    2262     47238020 : dump_generic_node (pretty_printer *pp, tree node, int spc, dump_flags_t flags,
    2263              :                    bool is_stmt)
    2264              : {
    2265     47238020 :   tree type;
    2266     47238020 :   tree op0, op1;
    2267     47238020 :   const char *str;
    2268     47238020 :   bool is_expr;
    2269     47238020 :   enum tree_code code;
    2270              : 
    2271     47238020 :   if (node == NULL_TREE)
    2272              :     return spc;
    2273              : 
    2274     47217017 :   is_expr = EXPR_P (node);
    2275              : 
    2276     47217017 :   if (is_stmt && (flags & TDF_STMTADDR))
    2277              :     {
    2278            4 :       pp_string (pp, "<&");
    2279            4 :       pp_scalar (pp, "%p", (void *)node);
    2280            4 :       pp_string (pp, "> ");
    2281              :     }
    2282              : 
    2283     47217017 :   if ((flags & TDF_LINENO) && EXPR_HAS_LOCATION (node))
    2284          931 :     dump_location (pp, EXPR_LOCATION (node), flags);
    2285              : 
    2286     47217017 :   code = TREE_CODE (node);
    2287     47217017 :   switch (code)
    2288              :     {
    2289           12 :     case ERROR_MARK:
    2290           12 :       pp_string (pp, "<<< error >>>");
    2291           12 :       break;
    2292              : 
    2293      9227709 :     case IDENTIFIER_NODE:
    2294      9227709 :       pp_tree_identifier (pp, node);
    2295      9227709 :       break;
    2296              : 
    2297              :     case TREE_LIST:
    2298        58438 :       while (node && node != error_mark_node)
    2299              :         {
    2300        58438 :           if (TREE_PURPOSE (node))
    2301              :             {
    2302        22000 :               dump_generic_node (pp, TREE_PURPOSE (node), spc, flags, false);
    2303        22000 :               pp_space (pp);
    2304              :             }
    2305        58438 :           dump_generic_node (pp, TREE_VALUE (node), spc, flags, false);
    2306        58438 :           node = TREE_CHAIN (node);
    2307        58438 :           if (node && TREE_CODE (node) == TREE_LIST)
    2308              :             {
    2309         2450 :               pp_comma (pp);
    2310         2450 :               pp_space (pp);
    2311              :             }
    2312              :         }
    2313              :       break;
    2314              : 
    2315            0 :     case TREE_BINFO:
    2316            0 :       dump_generic_node (pp, BINFO_TYPE (node), spc, flags, false);
    2317            0 :       break;
    2318              : 
    2319          153 :     case TREE_VEC:
    2320          153 :       {
    2321          153 :         size_t i;
    2322          153 :         pp_left_brace (pp);
    2323          153 :         if (TREE_VEC_LENGTH (node) > 0)
    2324              :           {
    2325          153 :             size_t len = TREE_VEC_LENGTH (node);
    2326          459 :             for (i = 0; i < len - 1; i++)
    2327              :               {
    2328          306 :                 dump_generic_node (pp, TREE_VEC_ELT (node, i), spc, flags,
    2329              :                                    false);
    2330          306 :                 pp_comma (pp);
    2331          306 :                 pp_space (pp);
    2332              :               }
    2333          153 :             dump_generic_node (pp, TREE_VEC_ELT (node, len - 1), spc,
    2334              :                                flags, false);
    2335              :           }
    2336          153 :         pp_right_brace (pp);
    2337              :       }
    2338          153 :       break;
    2339              : 
    2340      4621281 :     case VOID_TYPE:
    2341      4621281 :     case INTEGER_TYPE:
    2342      4621281 :     case REAL_TYPE:
    2343      4621281 :     case FIXED_POINT_TYPE:
    2344      4621281 :     case COMPLEX_TYPE:
    2345      4621281 :     case VECTOR_TYPE:
    2346      4621281 :     case ENUMERAL_TYPE:
    2347      4621281 :     case BOOLEAN_TYPE:
    2348      4621281 :     case BITINT_TYPE:
    2349      4621281 :     case OPAQUE_TYPE:
    2350      4621281 :       {
    2351      4621281 :         unsigned int quals = TYPE_QUALS (node);
    2352      4621281 :         enum tree_code_class tclass;
    2353              : 
    2354      4621281 :         if (quals & TYPE_QUAL_ATOMIC)
    2355          534 :           pp_string (pp, "atomic ");
    2356      4621281 :         if (quals & TYPE_QUAL_CONST)
    2357        40816 :           pp_string (pp, "const ");
    2358      4621281 :         if (quals & TYPE_QUAL_VOLATILE)
    2359         3759 :           pp_string (pp, "volatile ");
    2360      4621281 :         if (quals & TYPE_QUAL_RESTRICT)
    2361            0 :           pp_string (pp, "restrict ");
    2362              : 
    2363      4621281 :         if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node)))
    2364              :           {
    2365          157 :             pp_string (pp, "<address-space-");
    2366          157 :             pp_decimal_int (pp, TYPE_ADDR_SPACE (node));
    2367          157 :             pp_string (pp, "> ");
    2368              :           }
    2369              : 
    2370      4621281 :         tclass = TREE_CODE_CLASS (TREE_CODE (node));
    2371              : 
    2372      4621281 :         if (tclass == tcc_declaration)
    2373              :           {
    2374            0 :             if (DECL_NAME (node))
    2375            0 :               dump_decl_name (pp, node, flags);
    2376              :             else
    2377            0 :               pp_string (pp, "<unnamed type decl>");
    2378              :           }
    2379      4621281 :         else if (tclass == tcc_type)
    2380              :           {
    2381      4621281 :             if ((flags & TDF_GIMPLE) && node == sizetype)
    2382            0 :               pp_string (pp, "__SIZETYPE__");
    2383      4621281 :             else if (TYPE_NAME (node))
    2384              :               {
    2385      3057021 :                 if (TREE_CODE (TYPE_NAME (node)) == IDENTIFIER_NODE)
    2386       868327 :                   pp_tree_identifier (pp, TYPE_NAME (node));
    2387      2188694 :                 else if (TREE_CODE (TYPE_NAME (node)) == TYPE_DECL
    2388      2188694 :                          && DECL_NAME (TYPE_NAME (node)))
    2389      2188694 :                   dump_decl_name (pp, TYPE_NAME (node), flags);
    2390              :                 else
    2391            0 :                   pp_string (pp, "<unnamed type>");
    2392              :               }
    2393      1564260 :             else if (TREE_CODE (node) == VECTOR_TYPE)
    2394              :               {
    2395      1041590 :                 if (flags & TDF_GIMPLE)
    2396              :                   {
    2397            0 :                     dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    2398            0 :                     pp_string (pp, " [[gnu::vector_size(");
    2399            0 :                     pp_wide_integer
    2400            0 :                       (pp, tree_to_poly_uint64 (TYPE_SIZE_UNIT (node)));
    2401            0 :                     pp_string (pp, ")]]");
    2402              :                   }
    2403              :                 else
    2404              :                   {
    2405      1041590 :                     pp_string (pp, "vector");
    2406      1041590 :                     pp_left_paren (pp);
    2407      1041590 :                     pp_wide_integer (pp, TYPE_VECTOR_SUBPARTS (node));
    2408      1041590 :                     pp_string (pp, ") ");
    2409      1041590 :                     dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    2410              :                   }
    2411              :               }
    2412              :             else if (TREE_CODE (node) == INTEGER_TYPE)
    2413              :               {
    2414       445622 :                 if (TYPE_PRECISION (node) == CHAR_TYPE_SIZE)
    2415        56026 :                   pp_string (pp, (TYPE_UNSIGNED (node)
    2416              :                                       ? "unsigned char"
    2417              :                                       : "signed char"));
    2418       395739 :                 else if (TYPE_PRECISION (node) == SHORT_TYPE_SIZE)
    2419       184135 :                   pp_string (pp, (TYPE_UNSIGNED (node)
    2420              :                                       ? "unsigned short"
    2421              :                                       : "signed short"));
    2422       245877 :                 else if (TYPE_PRECISION (node) == INT_TYPE_SIZE)
    2423       201452 :                   pp_string (pp, (TYPE_UNSIGNED (node)
    2424              :                                       ? "unsigned int"
    2425              :                                       : "signed int"));
    2426        48147 :                 else if (TYPE_PRECISION (node) == LONG_TYPE_SIZE)
    2427        45904 :                   pp_string (pp, (TYPE_UNSIGNED (node)
    2428              :                                       ? "unsigned long"
    2429              :                                       : "signed long"));
    2430         4163 :                 else if (TYPE_PRECISION (node) == LONG_LONG_TYPE_SIZE)
    2431            0 :                   pp_string (pp, (TYPE_UNSIGNED (node)
    2432              :                                       ? "unsigned long long"
    2433              :                                       : "signed long long"));
    2434         4163 :                 else if (TYPE_PRECISION (node) >= CHAR_TYPE_SIZE
    2435         4163 :                          && pow2p_hwi (TYPE_PRECISION (node)))
    2436              :                   {
    2437         6077 :                     pp_string (pp, (TYPE_UNSIGNED (node) ? "uint" : "int"));
    2438         3618 :                     pp_decimal_int (pp, TYPE_PRECISION (node));
    2439         3618 :                     pp_string (pp, "_t");
    2440              :                   }
    2441              :                 else
    2442              :                   {
    2443          714 :                     pp_string (pp, (TYPE_UNSIGNED (node)
    2444              :                                         ? "<unnamed-unsigned:"
    2445              :                                         : "<unnamed-signed:"));
    2446          545 :                     pp_decimal_int (pp, TYPE_PRECISION (node));
    2447          545 :                     pp_greater (pp);
    2448              :                   }
    2449              :               }
    2450              :             else if (TREE_CODE (node) == COMPLEX_TYPE)
    2451              :               {
    2452         6975 :                 pp_string (pp, "__complex__ ");
    2453         6975 :                 dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    2454              :               }
    2455              :             else if (TREE_CODE (node) == REAL_TYPE)
    2456              :               {
    2457            0 :                 pp_string (pp, "<float:");
    2458            0 :                 pp_decimal_int (pp, TYPE_PRECISION (node));
    2459            0 :                 pp_greater (pp);
    2460              :               }
    2461              :             else if (TREE_CODE (node) == FIXED_POINT_TYPE)
    2462              :               {
    2463            0 :                 pp_string (pp, "<fixed-point-");
    2464            0 :                 pp_string (pp, TYPE_SATURATING (node) ? "sat:" : "nonsat:");
    2465            0 :                 pp_decimal_int (pp, TYPE_PRECISION (node));
    2466            0 :                 pp_greater (pp);
    2467              :               }
    2468              :             else if (TREE_CODE (node) == BOOLEAN_TYPE)
    2469              :               {
    2470       134050 :                 pp_string (pp, (TYPE_UNSIGNED (node)
    2471              :                                 ? "<unsigned-boolean:"
    2472              :                                 : "<signed-boolean:"));
    2473        67025 :                 pp_decimal_int (pp, TYPE_PRECISION (node));
    2474        67025 :                 pp_greater (pp);
    2475              :               }
    2476              :             else if (TREE_CODE (node) == BITINT_TYPE)
    2477              :               {
    2478         2977 :                 if (TYPE_UNSIGNED (node))
    2479         1971 :                   pp_string (pp, "unsigned ");
    2480         2977 :                 pp_string (pp, "_BitInt(");
    2481         2977 :                 pp_decimal_int (pp, TYPE_PRECISION (node));
    2482         2977 :                 pp_right_paren (pp);
    2483              :               }
    2484              :             else if (TREE_CODE (node) == VOID_TYPE)
    2485           13 :               pp_string (pp, "void");
    2486              :             else
    2487           58 :               pp_string (pp, "<unnamed type>");
    2488              :           }
    2489              :         break;
    2490              :       }
    2491              : 
    2492       871173 :     case POINTER_TYPE:
    2493       871173 :     case REFERENCE_TYPE:
    2494       871173 :       str = (TREE_CODE (node) == POINTER_TYPE ? "*" : "&");
    2495              : 
    2496       871173 :       if (TREE_TYPE (node) == NULL)
    2497              :         {
    2498            0 :           pp_string (pp, str);
    2499            0 :           pp_string (pp, "<null type>");
    2500              :         }
    2501       871173 :       else if (TREE_CODE (TREE_TYPE (node)) == FUNCTION_TYPE)
    2502              :         {
    2503         7421 :           tree fnode = TREE_TYPE (node);
    2504              : 
    2505         7421 :           dump_generic_node (pp, TREE_TYPE (fnode), spc, flags, false);
    2506         7421 :           pp_space (pp);
    2507         7421 :           pp_left_paren (pp);
    2508         7421 :           pp_string (pp, str);
    2509         7421 :           if (TYPE_IDENTIFIER (node))
    2510         2448 :             dump_generic_node (pp, TYPE_NAME (node), spc, flags, false);
    2511         4973 :           else if (flags & TDF_NOUID)
    2512          128 :             pp_string (pp, "<Txxxx>");
    2513              :           else
    2514              :             {
    2515         4845 :               pp_string (pp, "<T");
    2516         4845 :               pp_scalar (pp, "%x", TYPE_UID (node));
    2517         4845 :               pp_character (pp, '>');
    2518              :             }
    2519              : 
    2520         7421 :           pp_right_paren (pp);
    2521         7421 :           dump_function_declaration (pp, fnode, spc, flags);
    2522              :         }
    2523              :       else
    2524              :         {
    2525       863752 :           unsigned int quals = TYPE_QUALS (node);
    2526              : 
    2527       863752 :           dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    2528       863752 :           pp_space (pp);
    2529       863752 :           pp_string (pp, str);
    2530              : 
    2531       863752 :           if (quals & TYPE_QUAL_CONST)
    2532         3621 :             pp_string (pp, " const");
    2533       863752 :           if (quals & TYPE_QUAL_VOLATILE)
    2534          209 :             pp_string (pp, " volatile");
    2535       863752 :           if (quals & TYPE_QUAL_RESTRICT)
    2536        46545 :             pp_string (pp, " restrict");
    2537              : 
    2538       863752 :           if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node)))
    2539              :             {
    2540            0 :               pp_string (pp, " <address-space-");
    2541            0 :               pp_decimal_int (pp, TYPE_ADDR_SPACE (node));
    2542            0 :               pp_greater (pp);
    2543              :             }
    2544              : 
    2545       863752 :           if (TYPE_REF_CAN_ALIAS_ALL (node))
    2546         5098 :             pp_string (pp, " {ref-all}");
    2547              :         }
    2548              :       break;
    2549              : 
    2550            0 :     case OFFSET_TYPE:
    2551            0 :       NIY;
    2552            0 :       break;
    2553              : 
    2554      1334292 :     case MEM_REF:
    2555      1334292 :     case TARGET_MEM_REF:
    2556      1334292 :       dump_mem_ref (pp, node, spc, flags);
    2557      1334292 :       break;
    2558              : 
    2559        73614 :     case ARRAY_TYPE:
    2560        73614 :       {
    2561        73614 :         unsigned int quals = TYPE_QUALS (node);
    2562        73614 :         tree tmp;
    2563              : 
    2564        73614 :         if (quals & TYPE_QUAL_ATOMIC)
    2565            0 :           pp_string (pp, "atomic ");
    2566        73614 :         if (quals & TYPE_QUAL_CONST)
    2567            1 :           pp_string (pp, "const ");
    2568        73614 :         if (quals & TYPE_QUAL_VOLATILE)
    2569            0 :           pp_string (pp, "volatile ");
    2570              : 
    2571              :         /* Print the innermost component type.  */
    2572        78522 :         for (tmp = TREE_TYPE (node); TREE_CODE (tmp) == ARRAY_TYPE;
    2573         4908 :              tmp = TREE_TYPE (tmp))
    2574              :           ;
    2575              : 
    2576              :         /* Avoid to print recursively the array.  */
    2577              :         /* FIXME : Not implemented correctly, see print_struct_decl.  */
    2578        73614 :         if (TREE_CODE (tmp) != POINTER_TYPE || TREE_TYPE (tmp) != node)
    2579        73614 :           dump_generic_node (pp, tmp, spc, flags, false);
    2580              : 
    2581              :         /* Print the dimensions.  */
    2582       152136 :         for (tmp = node; TREE_CODE (tmp) == ARRAY_TYPE; tmp = TREE_TYPE (tmp))
    2583        78522 :           dump_array_domain (pp, TYPE_DOMAIN (tmp), spc, flags);
    2584              :         break;
    2585              :       }
    2586              : 
    2587       125964 :     case RECORD_TYPE:
    2588       125964 :     case UNION_TYPE:
    2589       125964 :     case QUAL_UNION_TYPE:
    2590       125964 :       {
    2591       125964 :         unsigned int quals = TYPE_QUALS (node);
    2592              : 
    2593       125964 :         if (quals & TYPE_QUAL_ATOMIC)
    2594            0 :           pp_string (pp, "atomic ");
    2595       125964 :         if (quals & TYPE_QUAL_CONST)
    2596        11750 :           pp_string (pp, "const ");
    2597       125964 :         if (quals & TYPE_QUAL_VOLATILE)
    2598           63 :           pp_string (pp, "volatile ");
    2599              : 
    2600       125964 :         if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node)))
    2601              :           {
    2602            1 :             pp_string (pp, "<address-space-");
    2603            1 :             pp_decimal_int (pp, TYPE_ADDR_SPACE (node));
    2604            1 :             pp_string (pp, "> ");
    2605              :           }
    2606              : 
    2607              :         /* Print the name of the structure.  */
    2608       125964 :         if (TREE_CODE (node) == RECORD_TYPE)
    2609       124120 :           pp_string (pp, "struct ");
    2610         1844 :         else if (TREE_CODE (node) == UNION_TYPE)
    2611         1844 :           pp_string (pp, "union ");
    2612              : 
    2613       125964 :         if (TYPE_NAME (node))
    2614       122838 :           dump_generic_node (pp, TYPE_NAME (node), spc, flags, false);
    2615         3126 :         else if (!(flags & TDF_SLIM))
    2616              :           /* FIXME: If we eliminate the 'else' above and attempt
    2617              :              to show the fields for named types, we may get stuck
    2618              :              following a cycle of pointers to structs.  The alleged
    2619              :              self-reference check in print_struct_decl will not detect
    2620              :              cycles involving more than one pointer or struct type.  */
    2621          580 :           print_struct_decl (pp, node, spc, flags);
    2622              :         break;
    2623              :       }
    2624              : 
    2625            0 :     case LANG_TYPE:
    2626            0 :       NIY;
    2627            0 :       break;
    2628              : 
    2629      5638932 :     case INTEGER_CST:
    2630      5638932 :       if (flags & TDF_GIMPLE
    2631      5638932 :           && (POINTER_TYPE_P (TREE_TYPE (node))
    2632           47 :               || (TYPE_PRECISION (TREE_TYPE (node))
    2633           47 :                   < TYPE_PRECISION (integer_type_node))
    2634           47 :               || exact_log2 (TYPE_PRECISION (TREE_TYPE (node))) == -1
    2635           47 :               || tree_int_cst_sgn (node) < 0))
    2636              :         {
    2637            0 :           pp_string (pp, "_Literal (");
    2638            0 :           dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    2639            0 :           pp_string (pp, ") ");
    2640              :         }
    2641      5638932 :       if (TREE_CODE (TREE_TYPE (node)) == POINTER_TYPE
    2642      5638932 :           && ! (flags & TDF_GIMPLE))
    2643              :         {
    2644              :           /* In the case of a pointer, one may want to divide by the
    2645              :              size of the pointed-to type.  Unfortunately, this not
    2646              :              straightforward.  The C front-end maps expressions
    2647              : 
    2648              :              (int *) 5
    2649              :              int *p; (p + 5)
    2650              : 
    2651              :              in such a way that the two INTEGER_CST nodes for "5" have
    2652              :              different values but identical types.  In the latter
    2653              :              case, the 5 is multiplied by sizeof (int) in c-common.cc
    2654              :              (pointer_int_sum) to convert it to a byte address, and
    2655              :              yet the type of the node is left unchanged.  Argh.  What
    2656              :              is consistent though is that the number value corresponds
    2657              :              to bytes (UNITS) offset.
    2658              : 
    2659              :              NB: Neither of the following divisors can be trivially
    2660              :              used to recover the original literal:
    2661              : 
    2662              :              TREE_INT_CST_LOW (TYPE_SIZE_UNIT (TREE_TYPE (node)))
    2663              :              TYPE_PRECISION (TREE_TYPE (TREE_TYPE (node)))  */
    2664       449986 :           pp_wide_integer (pp, TREE_INT_CST_LOW (node));
    2665       449986 :           pp_string (pp, "B"); /* pseudo-unit */
    2666              :         }
    2667      5188946 :       else if (tree_fits_shwi_p (node))
    2668      5169885 :         pp_wide_integer (pp, tree_to_shwi (node));
    2669        19061 :       else if (tree_fits_uhwi_p (node))
    2670        18504 :         pp_unsigned_wide_integer (pp, tree_to_uhwi (node));
    2671              :       else
    2672              :         {
    2673          557 :           wide_int val = wi::to_wide (node);
    2674              : 
    2675          557 :           if (wi::neg_p (val, TYPE_SIGN (TREE_TYPE (node))))
    2676              :             {
    2677           11 :               pp_minus (pp);
    2678           11 :               val = -val;
    2679              :             }
    2680          557 :           unsigned int len;
    2681          557 :           print_hex_buf_size (val, &len);
    2682          557 :           if (UNLIKELY (len > sizeof (pp_buffer (pp)->m_digit_buffer)))
    2683              :             {
    2684            0 :               char *buf = XALLOCAVEC (char, len);
    2685            0 :               print_hex (val, buf);
    2686            0 :               pp_string (pp, buf);
    2687              :             }
    2688              :           else
    2689              :             {
    2690          557 :               print_hex (val, pp_buffer (pp)->m_digit_buffer);
    2691          557 :               pp_string (pp, pp_buffer (pp)->m_digit_buffer);
    2692              :             }
    2693          557 :         }
    2694      5638932 :       if ((flags & TDF_GIMPLE)
    2695      5638932 :           && ! (POINTER_TYPE_P (TREE_TYPE (node))
    2696           47 :                 || (TYPE_PRECISION (TREE_TYPE (node))
    2697           47 :                     < TYPE_PRECISION (integer_type_node))
    2698           47 :                 || exact_log2 (TYPE_PRECISION (TREE_TYPE (node))) == -1))
    2699              :         {
    2700           47 :           if (TYPE_UNSIGNED (TREE_TYPE (node)))
    2701            0 :             pp_character (pp, 'u');
    2702           47 :           if (TYPE_PRECISION (TREE_TYPE (node))
    2703           47 :               == TYPE_PRECISION (unsigned_type_node))
    2704              :             ;
    2705            0 :           else if (TYPE_PRECISION (TREE_TYPE (node))
    2706            0 :                    == TYPE_PRECISION (long_unsigned_type_node))
    2707            0 :             pp_character (pp, 'l');
    2708            0 :           else if (TYPE_PRECISION (TREE_TYPE (node))
    2709            0 :                    == TYPE_PRECISION (long_long_unsigned_type_node))
    2710            0 :             pp_string (pp, "ll");
    2711              :         }
    2712      5638932 :       if (TREE_OVERFLOW (node))
    2713          251 :         pp_string (pp, "(OVF)");
    2714              :       break;
    2715              : 
    2716            0 :     case POLY_INT_CST:
    2717            0 :       pp_string (pp, "POLY_INT_CST [");
    2718            0 :       dump_generic_node (pp, POLY_INT_CST_COEFF (node, 0), spc, flags, false);
    2719            0 :       for (unsigned int i = 1; i < NUM_POLY_INT_COEFFS; ++i)
    2720              :         {
    2721              :           pp_string (pp, ", ");
    2722              :           dump_generic_node (pp, POLY_INT_CST_COEFF (node, i),
    2723              :                              spc, flags, false);
    2724              :         }
    2725            0 :       pp_string (pp, "]");
    2726            0 :       break;
    2727              : 
    2728       149396 :     case REAL_CST:
    2729              :       /* Code copied from print_node.  */
    2730       149396 :       {
    2731       149396 :         REAL_VALUE_TYPE d;
    2732       149396 :         if (TREE_OVERFLOW (node))
    2733            0 :           pp_string (pp, " overflow");
    2734              : 
    2735       149396 :         d = TREE_REAL_CST (node);
    2736       149396 :         if (REAL_VALUE_ISINF (d))
    2737         6510 :           pp_string (pp, REAL_VALUE_NEGATIVE (d) ? " -Inf" : " Inf");
    2738       143362 :         else if (REAL_VALUE_ISNAN (d))
    2739         2285 :           pp_string (pp, " Nan");
    2740              :         else
    2741              :           {
    2742       141077 :             char string[100];
    2743       141077 :             real_to_decimal (string, &d, sizeof (string), 0, 1);
    2744       141077 :             pp_string (pp, string);
    2745              :           }
    2746       149396 :         break;
    2747              :       }
    2748              : 
    2749            0 :     case FIXED_CST:
    2750            0 :       {
    2751            0 :         char string[100];
    2752            0 :         fixed_to_decimal (string, TREE_FIXED_CST_PTR (node), sizeof (string));
    2753            0 :         pp_string (pp, string);
    2754            0 :         break;
    2755              :       }
    2756              : 
    2757         1594 :     case COMPLEX_CST:
    2758         1594 :       pp_string (pp, "__complex__ (");
    2759         1594 :       dump_generic_node (pp, TREE_REALPART (node), spc, flags, false);
    2760         1594 :       pp_string (pp, ", ");
    2761         1594 :       dump_generic_node (pp, TREE_IMAGPART (node), spc, flags, false);
    2762         1594 :       pp_right_paren (pp);
    2763         1594 :       break;
    2764              : 
    2765        61729 :     case STRING_CST:
    2766        61729 :       {
    2767        61729 :         pp_string (pp, "\"");
    2768        61729 :         if (unsigned nbytes = TREE_STRING_LENGTH (node))
    2769        61490 :           pretty_print_string (pp, TREE_STRING_POINTER (node), nbytes);
    2770        61729 :         pp_string (pp, "\"");
    2771        61729 :         break;
    2772              :       }
    2773              : 
    2774       147949 :     case VECTOR_CST:
    2775       147949 :       {
    2776       147949 :         unsigned i;
    2777       147949 :         if (flags & TDF_GIMPLE)
    2778              :           {
    2779            0 :             pp_string (pp, "_Literal (");
    2780            0 :             dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    2781            0 :             pp_string (pp, ") ");
    2782              :           }
    2783       147949 :         pp_string (pp, "{ ");
    2784       147949 :         unsigned HOST_WIDE_INT nunits;
    2785       147949 :         if (!VECTOR_CST_NELTS (node).is_constant (&nunits))
    2786              :           nunits = vector_cst_encoded_nelts (node);
    2787      1074506 :         for (i = 0; i < nunits; ++i)
    2788              :           {
    2789       926557 :             if (i != 0)
    2790       778608 :               pp_string (pp, ", ");
    2791       926557 :             dump_generic_node (pp, VECTOR_CST_ELT (node, i),
    2792              :                                spc, flags, false);
    2793              :           }
    2794       147949 :         if (!VECTOR_CST_NELTS (node).is_constant ())
    2795              :           pp_string (pp, ", ...");
    2796       147949 :         pp_string (pp, " }");
    2797              :       }
    2798       147949 :       break;
    2799              : 
    2800              :     case RAW_DATA_CST:
    2801            0 :       for (unsigned i = 0; i < (unsigned) RAW_DATA_LENGTH (node); ++i)
    2802              :         {
    2803            0 :           if (TYPE_UNSIGNED (TREE_TYPE (node))
    2804            0 :               || TYPE_PRECISION (TREE_TYPE (node)) > CHAR_BIT)
    2805            0 :             pp_decimal_int (pp, RAW_DATA_UCHAR_ELT (node, i));
    2806              :           else
    2807            0 :             pp_decimal_int (pp, RAW_DATA_SCHAR_ELT (node, i));
    2808            0 :           if (i == RAW_DATA_LENGTH (node) - 1U)
    2809              :             break;
    2810            0 :           else if (i == 9 && RAW_DATA_LENGTH (node) > 20)
    2811              :             {
    2812            0 :               pp_string (pp, ", ..., ");
    2813            0 :               i = RAW_DATA_LENGTH (node) - 11;
    2814              :             }
    2815              :           else
    2816            0 :             pp_string (pp, ", ");
    2817              :         }
    2818              :       break;
    2819              : 
    2820           70 :     case FUNCTION_TYPE:
    2821           70 :     case METHOD_TYPE:
    2822           70 :       dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    2823           70 :       pp_space (pp);
    2824           70 :       if (TREE_CODE (node) == METHOD_TYPE)
    2825              :         {
    2826           70 :           if (TYPE_METHOD_BASETYPE (node))
    2827           70 :             dump_generic_node (pp, TYPE_NAME (TYPE_METHOD_BASETYPE (node)),
    2828              :                                spc, flags, false);
    2829              :           else
    2830            0 :             pp_string (pp, "<null method basetype>");
    2831           70 :           pp_colon_colon (pp);
    2832              :         }
    2833           70 :       if (TYPE_IDENTIFIER (node))
    2834            0 :         dump_generic_node (pp, TYPE_NAME (node), spc, flags, false);
    2835           70 :       else if (TYPE_NAME (node) && DECL_NAME (TYPE_NAME (node)))
    2836            0 :         dump_decl_name (pp, TYPE_NAME (node), flags);
    2837           70 :       else if (flags & TDF_NOUID)
    2838            0 :         pp_string (pp, "<Txxxx>");
    2839              :       else
    2840              :         {
    2841           70 :           pp_string (pp, "<T");
    2842           70 :           pp_scalar (pp, "%x", TYPE_UID (node));
    2843           70 :           pp_character (pp, '>');
    2844              :         }
    2845           70 :       dump_function_declaration (pp, node, spc, flags);
    2846           70 :       break;
    2847              : 
    2848        23358 :     case FUNCTION_DECL:
    2849        23358 :     case CONST_DECL:
    2850        23358 :       dump_decl_name (pp, node, flags);
    2851        23358 :       break;
    2852              : 
    2853       124357 :     case LABEL_DECL:
    2854       124357 :       if (DECL_NAME (node))
    2855        54843 :         dump_decl_name (pp, node, flags);
    2856        69514 :       else if (LABEL_DECL_UID (node) != -1)
    2857              :         {
    2858        24514 :           if (flags & TDF_GIMPLE)
    2859              :             {
    2860           35 :               pp_character (pp, 'L');
    2861           35 :               pp_decimal_int (pp, (int) LABEL_DECL_UID (node));
    2862              :             }
    2863              :           else
    2864              :             {
    2865        24479 :               pp_string (pp, "<L");
    2866        24479 :               pp_decimal_int (pp, (int) LABEL_DECL_UID (node));
    2867        24479 :               pp_character (pp, '>');
    2868              :             }
    2869              :         }
    2870              :       else
    2871              :         {
    2872        45000 :           if (flags & TDF_NOUID)
    2873            6 :             pp_string (pp, "<D.xxxx>");
    2874              :           else
    2875              :             {
    2876        44994 :               if (flags & TDF_GIMPLE)
    2877              :                 {
    2878            6 :                   pp_character (pp, 'D');
    2879            6 :                   pp_scalar (pp, "%u", DECL_UID (node));
    2880              :                 }
    2881              :               else
    2882              :                 {
    2883        44988 :                   pp_string (pp, "<D.");
    2884        44988 :                   pp_scalar (pp, "%u", DECL_UID (node));
    2885        44988 :                   pp_character (pp, '>');
    2886              :                 }
    2887              :             }
    2888              :         }
    2889              :       break;
    2890              : 
    2891        72426 :     case TYPE_DECL:
    2892        72426 :       if (DECL_IS_UNDECLARED_BUILTIN (node))
    2893              :         {
    2894              :           /* Don't print the declaration of built-in types.  */
    2895              :           break;
    2896              :         }
    2897        67243 :       if (DECL_NAME (node))
    2898        67188 :         dump_decl_name (pp, node, flags);
    2899           55 :       else if (TYPE_NAME (TREE_TYPE (node)) != node)
    2900              :         {
    2901           95 :           pp_string (pp, (TREE_CODE (TREE_TYPE (node)) == UNION_TYPE
    2902              :                           ? "union" : "struct "));
    2903           49 :           dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    2904              :         }
    2905              :       else
    2906            6 :         pp_string (pp, "<anon>");
    2907              :       break;
    2908              : 
    2909      3687355 :     case VAR_DECL:
    2910      3687355 :     case PARM_DECL:
    2911      3687355 :     case FIELD_DECL:
    2912      3687355 :     case DEBUG_EXPR_DECL:
    2913      3687355 :     case NAMESPACE_DECL:
    2914      3687355 :     case NAMELIST_DECL:
    2915      3687355 :       dump_decl_name (pp, node, flags);
    2916      3687355 :       break;
    2917              : 
    2918        23134 :     case RESULT_DECL:
    2919        23134 :       pp_string (pp, "<retval>");
    2920        23134 :       break;
    2921              : 
    2922       634888 :     case COMPONENT_REF:
    2923       634888 :       op0 = TREE_OPERAND (node, 0);
    2924       634888 :       str = ".";
    2925       634888 :       if (op0
    2926       634888 :           && (TREE_CODE (op0) == INDIRECT_REF
    2927       594208 :               || (TREE_CODE (op0) == MEM_REF
    2928       196230 :                   && TREE_CODE (TREE_OPERAND (op0, 0)) != ADDR_EXPR
    2929       164049 :                   && integer_zerop (TREE_OPERAND (op0, 1))
    2930              :                   /* Dump the types of INTEGER_CSTs explicitly, for we
    2931              :                      can't infer them and MEM_ATTR caching will share
    2932              :                      MEM_REFs with differently-typed op0s.  */
    2933       158711 :                   && TREE_CODE (TREE_OPERAND (op0, 0)) != INTEGER_CST
    2934              :                   /* Released SSA_NAMES have no TREE_TYPE.  */
    2935       158675 :                   && TREE_TYPE (TREE_OPERAND (op0, 0)) != NULL_TREE
    2936              :                   /* Same pointer types, but ignoring POINTER_TYPE vs.
    2937              :                      REFERENCE_TYPE.  */
    2938       158675 :                   && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0)))
    2939       158675 :                       == TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 1))))
    2940       305994 :                   && (TYPE_MODE (TREE_TYPE (TREE_OPERAND (op0, 0)))
    2941       152997 :                       == TYPE_MODE (TREE_TYPE (TREE_OPERAND (op0, 1))))
    2942       152997 :                   && (TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (TREE_OPERAND (op0, 0)))
    2943       152997 :                       == TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (TREE_OPERAND (op0, 1))))
    2944              :                   /* Same value types ignoring qualifiers.  */
    2945       152997 :                   && (TYPE_MAIN_VARIANT (TREE_TYPE (op0))
    2946       152997 :                       == TYPE_MAIN_VARIANT
    2947              :                           (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 1)))))
    2948       152997 :                   && MR_DEPENDENCE_CLIQUE (op0) == 0)))
    2949              :         {
    2950       180528 :           op0 = TREE_OPERAND (op0, 0);
    2951       180528 :           str = "->";
    2952              :         }
    2953       634888 :       if (op_prio (op0) < op_prio (node))
    2954         7111 :         pp_left_paren (pp);
    2955       634888 :       dump_generic_node (pp, op0, spc, flags, false);
    2956       634888 :       if (op_prio (op0) < op_prio (node))
    2957         7111 :         pp_right_paren (pp);
    2958       634888 :       pp_string (pp, str);
    2959       634888 :       op1 = TREE_OPERAND (node, 1);
    2960       634888 :       dump_generic_node (pp, op1, spc, flags, false);
    2961       634888 :       if (DECL_P (op1)) /* Not always a decl in the C++ FE.  */
    2962       634888 :         if (tree off = component_ref_field_offset (node))
    2963       634814 :           if (TREE_CODE (off) != INTEGER_CST)
    2964              :             {
    2965           20 :               pp_string (pp, "{off: ");
    2966           20 :               dump_generic_node (pp, off, spc, flags, false);
    2967           20 :               pp_right_brace (pp);
    2968              :             }
    2969              :       break;
    2970              : 
    2971        23620 :     case BIT_FIELD_REF:
    2972        23620 :       if (flags & TDF_GIMPLE)
    2973              :         {
    2974            0 :           pp_string (pp, "__BIT_FIELD_REF <");
    2975            0 :           dump_generic_node (pp, TREE_TYPE (node),
    2976              :                              spc, flags | TDF_SLIM, false);
    2977            0 :           if (TYPE_ALIGN (TREE_TYPE (node))
    2978            0 :               != TYPE_ALIGN (TYPE_MAIN_VARIANT (TREE_TYPE (node))))
    2979              :             {
    2980            0 :               pp_string (pp, ", ");
    2981            0 :               pp_decimal_int (pp, TYPE_ALIGN (TREE_TYPE (node)));
    2982              :             }
    2983            0 :           pp_greater (pp);
    2984            0 :           pp_string (pp, " (");
    2985            0 :           dump_generic_node (pp, TREE_OPERAND (node, 0), spc,
    2986              :                              flags | TDF_SLIM, false);
    2987            0 :           pp_string (pp, ", ");
    2988            0 :           dump_generic_node (pp, TREE_OPERAND (node, 1), spc,
    2989              :                              flags | TDF_SLIM, false);
    2990            0 :           pp_string (pp, ", ");
    2991            0 :           dump_generic_node (pp, TREE_OPERAND (node, 2), spc,
    2992              :                              flags | TDF_SLIM, false);
    2993            0 :           pp_right_paren (pp);
    2994              :         }
    2995              :       else
    2996              :         {
    2997        23620 :           pp_string (pp, "BIT_FIELD_REF <");
    2998        23620 :           dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    2999        23620 :           pp_string (pp, ", ");
    3000        23620 :           dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    3001        23620 :           pp_string (pp, ", ");
    3002        23620 :           dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
    3003        23620 :           pp_greater (pp);
    3004              :         }
    3005              :       break;
    3006              : 
    3007            0 :     case BIT_INSERT_EXPR:
    3008            0 :       pp_string (pp, "BIT_INSERT_EXPR <");
    3009            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3010            0 :       pp_string (pp, ", ");
    3011            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    3012            0 :       pp_string (pp, ", ");
    3013            0 :       dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
    3014            0 :       pp_string (pp, " (");
    3015            0 :       if (INTEGRAL_TYPE_P (TREE_TYPE (TREE_OPERAND (node, 1))))
    3016            0 :         pp_decimal_int (pp,
    3017              :                         TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (node, 1))));
    3018              :       else
    3019            0 :         dump_generic_node (pp, TYPE_SIZE (TREE_TYPE (TREE_OPERAND (node, 1))),
    3020              :                            spc, flags, false);
    3021            0 :       pp_string (pp, " bits)>");
    3022            0 :       break;
    3023              : 
    3024      2026050 :     case ARRAY_REF:
    3025      2026050 :     case ARRAY_RANGE_REF:
    3026      2026050 :       op0 = TREE_OPERAND (node, 0);
    3027      2026050 :       if (op_prio (op0) < op_prio (node))
    3028         9624 :         pp_left_paren (pp);
    3029      2026050 :       dump_generic_node (pp, op0, spc, flags, false);
    3030      2026050 :       if (op_prio (op0) < op_prio (node))
    3031         9624 :         pp_right_paren (pp);
    3032      2026050 :       pp_left_bracket (pp);
    3033      2026050 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    3034      2026050 :       if (TREE_CODE (node) == ARRAY_RANGE_REF)
    3035          122 :         pp_string (pp, " ...");
    3036      2026050 :       pp_right_bracket (pp);
    3037              : 
    3038      2026050 :       op0 = array_ref_low_bound (node);
    3039      2026050 :       op1 = array_ref_element_size (node);
    3040              : 
    3041      2026050 :       if (!integer_zerop (op0)
    3042      2004983 :           || TREE_OPERAND (node, 2)
    3043      4031033 :           || TREE_OPERAND (node, 3))
    3044              :         {
    3045        21115 :           pp_string (pp, "{lb: ");
    3046        21115 :           dump_generic_node (pp, op0, spc, flags, false);
    3047        21115 :           pp_string (pp, " sz: ");
    3048        21115 :           dump_generic_node (pp, op1, spc, flags, false);
    3049        21115 :           pp_right_brace (pp);
    3050              :         }
    3051              :       break;
    3052              : 
    3053           13 :     case OMP_ARRAY_SECTION:
    3054           13 :       op0 = TREE_OPERAND (node, 0);
    3055           13 :       if (op_prio (op0) < op_prio (node))
    3056           13 :         pp_left_paren (pp);
    3057           13 :       dump_generic_node (pp, op0, spc, flags, false);
    3058           13 :       if (op_prio (op0) < op_prio (node))
    3059           13 :         pp_right_paren (pp);
    3060           13 :       pp_left_bracket (pp);
    3061           13 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    3062           13 :       pp_colon (pp);
    3063           13 :       dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
    3064           13 :       pp_right_bracket (pp);
    3065           13 :       break;
    3066              : 
    3067        56387 :     case CONSTRUCTOR:
    3068        56387 :       {
    3069        56387 :         unsigned HOST_WIDE_INT ix;
    3070        56387 :         tree field, val;
    3071        56387 :         bool is_struct_init = false;
    3072        56387 :         bool is_array_init = false;
    3073        56387 :         widest_int curidx;
    3074        56387 :         if (flags & TDF_GIMPLE)
    3075              :           {
    3076            0 :             if (TREE_CLOBBER_P (node))
    3077              :               {
    3078            0 :                 pp_string (pp, "__CLOBBER");
    3079            0 :                 switch (CLOBBER_KIND (node))
    3080              :                   {
    3081            0 :                   case CLOBBER_STORAGE_BEGIN:
    3082            0 :                     pp_string (pp, "(bos)");
    3083            0 :                     break;
    3084            0 :                   case CLOBBER_STORAGE_END:
    3085            0 :                     pp_string (pp, "(eos)");
    3086            0 :                     break;
    3087            0 :                   case CLOBBER_OBJECT_BEGIN:
    3088            0 :                     pp_string (pp, "(bob)");
    3089            0 :                     break;
    3090            0 :                   case CLOBBER_OBJECT_END:
    3091            0 :                     pp_string (pp, "(eob)");
    3092            0 :                     break;
    3093              :                   default:
    3094              :                     break;
    3095              :                   }
    3096            0 :                 break;
    3097              :               }
    3098            0 :             pp_string (pp, "_Literal (");
    3099            0 :             dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    3100            0 :             pp_string (pp, ") ");
    3101              :           }
    3102        56387 :         pp_left_brace (pp);
    3103        56387 :         if (TREE_CLOBBER_P (node))
    3104              :           {
    3105        20543 :             pp_string (pp, "CLOBBER");
    3106        20543 :             switch (CLOBBER_KIND (node))
    3107              :               {
    3108            0 :               case CLOBBER_STORAGE_BEGIN:
    3109            0 :                 pp_string (pp, "(bos)");
    3110            0 :                 break;
    3111        13563 :               case CLOBBER_STORAGE_END:
    3112        13563 :                 pp_string (pp, "(eos)");
    3113        13563 :                 break;
    3114          662 :               case CLOBBER_OBJECT_BEGIN:
    3115          662 :                 pp_string (pp, "(bob)");
    3116          662 :                 break;
    3117          766 :               case CLOBBER_OBJECT_END:
    3118          766 :                 pp_string (pp, "(eob)");
    3119          766 :                 break;
    3120              :               default:
    3121              :                 break;
    3122              :               }
    3123              :           }
    3124        35844 :         else if (TREE_CODE (TREE_TYPE (node)) == RECORD_TYPE
    3125        35844 :                  || TREE_CODE (TREE_TYPE (node)) == UNION_TYPE)
    3126              :           is_struct_init = true;
    3127        25448 :         else if (TREE_CODE (TREE_TYPE (node)) == ARRAY_TYPE
    3128         6709 :                  && TYPE_DOMAIN (TREE_TYPE (node))
    3129         6709 :                  && TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (node)))
    3130        32157 :                  && TREE_CODE (TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (node))))
    3131              :                     == INTEGER_CST)
    3132              :           {
    3133         6709 :             tree minv = TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (node)));
    3134         6709 :             is_array_init = true;
    3135         6709 :             curidx = wi::to_widest (minv);
    3136              :           }
    3137       227147 :         FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (node), ix, field, val)
    3138              :           {
    3139       170760 :             if (field)
    3140              :               {
    3141        79507 :                 if (is_struct_init)
    3142              :                   {
    3143        35956 :                     pp_dot (pp);
    3144        35956 :                     dump_generic_node (pp, field, spc, flags, false);
    3145        35956 :                     pp_equal (pp);
    3146              :                   }
    3147        43551 :                 else if (is_array_init
    3148        43551 :                          && (TREE_CODE (field) != INTEGER_CST
    3149        43551 :                              || curidx != wi::to_widest (field)))
    3150              :                   {
    3151           94 :                     pp_left_bracket (pp);
    3152           94 :                     if (TREE_CODE (field) == RANGE_EXPR)
    3153              :                       {
    3154           94 :                         dump_generic_node (pp, TREE_OPERAND (field, 0), spc,
    3155              :                                            flags, false);
    3156           94 :                         pp_string (pp, " ... ");
    3157           94 :                         dump_generic_node (pp, TREE_OPERAND (field, 1), spc,
    3158              :                                            flags, false);
    3159           94 :                         if (TREE_CODE (TREE_OPERAND (field, 1)) == INTEGER_CST)
    3160           94 :                           curidx = wi::to_widest (TREE_OPERAND (field, 1));
    3161              :                       }
    3162              :                     else
    3163            0 :                       dump_generic_node (pp, field, spc, flags, false);
    3164           94 :                     if (TREE_CODE (field) == INTEGER_CST)
    3165            0 :                       curidx = wi::to_widest (field);
    3166           94 :                     pp_string (pp, "]=");
    3167              :                   }
    3168              :               }
    3169       170760 :             if (is_array_init)
    3170        53301 :               curidx += 1;
    3171       170760 :             if (val && TREE_CODE (val) == ADDR_EXPR)
    3172         2628 :               if (TREE_CODE (TREE_OPERAND (val, 0)) == FUNCTION_DECL)
    3173          140 :                 val = TREE_OPERAND (val, 0);
    3174       170760 :             if (val && TREE_CODE (val) == FUNCTION_DECL)
    3175          140 :                 dump_decl_name (pp, val, flags);
    3176              :             else
    3177       170620 :                 dump_generic_node (pp, val, spc, flags, false);
    3178       341520 :             if (ix != CONSTRUCTOR_NELTS (node) - 1)
    3179              :               {
    3180       136883 :                 pp_comma (pp);
    3181       136883 :                 pp_space (pp);
    3182              :               }
    3183              :           }
    3184        56387 :         pp_right_brace (pp);
    3185            0 :       }
    3186        56387 :       break;
    3187              : 
    3188          604 :     case COMPOUND_EXPR:
    3189          604 :       {
    3190          604 :         tree *tp;
    3191          604 :         if (flags & TDF_SLIM)
    3192              :           {
    3193            0 :             pp_string (pp, "<COMPOUND_EXPR>");
    3194            0 :             break;
    3195              :           }
    3196              : 
    3197          604 :         dump_generic_node (pp, TREE_OPERAND (node, 0),
    3198              :                            spc, flags, false);
    3199          604 :         pp_comma (pp);
    3200          604 :         pp_space (pp);
    3201              : 
    3202          604 :         for (tp = &TREE_OPERAND (node, 1);
    3203          627 :              TREE_CODE (*tp) == COMPOUND_EXPR;
    3204           23 :              tp = &TREE_OPERAND (*tp, 1))
    3205              :           {
    3206           23 :             dump_generic_node (pp, TREE_OPERAND (*tp, 0),
    3207              :                                spc, flags, false);
    3208           23 :             pp_comma (pp);
    3209           23 :             pp_space (pp);
    3210              :           }
    3211              : 
    3212          604 :         dump_generic_node (pp, *tp, spc, flags, false);
    3213              :       }
    3214          604 :       break;
    3215              : 
    3216        66029 :     case STATEMENT_LIST:
    3217        66029 :       {
    3218        66029 :         tree_stmt_iterator si;
    3219        66029 :         bool first = true;
    3220              : 
    3221        66029 :         if (flags & TDF_SLIM)
    3222              :           {
    3223            1 :             pp_string (pp, "<STATEMENT_LIST>");
    3224            1 :             break;
    3225              :           }
    3226              : 
    3227       435103 :         for (si = tsi_start (node); !tsi_end_p (si); tsi_next (&si))
    3228              :           {
    3229       369075 :             if (!first)
    3230       303781 :               newline_and_indent (pp, spc);
    3231              :             else
    3232              :               first = false;
    3233       369075 :             dump_generic_node (pp, tsi_stmt (si), spc, flags, true);
    3234              :           }
    3235              :       }
    3236        66028 :       break;
    3237              : 
    3238       211612 :     case MODIFY_EXPR:
    3239       211612 :     case INIT_EXPR:
    3240       211612 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags,
    3241              :                          false);
    3242       211612 :       pp_space (pp);
    3243       211612 :       pp_equal (pp);
    3244       211612 :       pp_space (pp);
    3245       211612 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags,
    3246              :                          false);
    3247       211612 :       break;
    3248              : 
    3249         2156 :     case TARGET_EXPR:
    3250         2156 :       pp_string (pp, "TARGET_EXPR <");
    3251         2156 :       dump_generic_node (pp, TARGET_EXPR_SLOT (node), spc, flags, false);
    3252         2156 :       pp_comma (pp);
    3253         2156 :       pp_space (pp);
    3254         2156 :       dump_generic_node (pp, TARGET_EXPR_INITIAL (node), spc, flags, false);
    3255         2156 :       pp_greater (pp);
    3256         2156 :       break;
    3257              : 
    3258        12249 :     case DECL_EXPR:
    3259        12249 :       print_declaration (pp, DECL_EXPR_DECL (node), spc, flags);
    3260        12249 :       is_stmt = false;
    3261        12249 :       break;
    3262              : 
    3263        48948 :     case COND_EXPR:
    3264        48948 :       if (TREE_TYPE (node) == NULL || TREE_TYPE (node) == void_type_node)
    3265              :         {
    3266        44158 :           pp_string (pp, "if (");
    3267        44158 :           dump_generic_node (pp, COND_EXPR_COND (node), spc, flags, false);
    3268        44158 :           pp_right_paren (pp);
    3269              :           /* The lowered cond_exprs should always be printed in full.  */
    3270        44158 :           if (COND_EXPR_THEN (node)
    3271        44158 :               && (IS_EMPTY_STMT (COND_EXPR_THEN (node))
    3272        43284 :                   || TREE_CODE (COND_EXPR_THEN (node)) == GOTO_EXPR)
    3273        16051 :               && COND_EXPR_ELSE (node)
    3274        60208 :               && (IS_EMPTY_STMT (COND_EXPR_ELSE (node))
    3275         2382 :                   || TREE_CODE (COND_EXPR_ELSE (node)) == GOTO_EXPR))
    3276              :             {
    3277        15162 :               pp_space (pp);
    3278        15162 :               dump_generic_node (pp, COND_EXPR_THEN (node),
    3279              :                                  0, flags, true);
    3280        15162 :               if (!IS_EMPTY_STMT (COND_EXPR_ELSE (node)))
    3281              :                 {
    3282         1494 :                   pp_string (pp, " else ");
    3283         1494 :                   dump_generic_node (pp, COND_EXPR_ELSE (node),
    3284              :                                      0, flags, true);
    3285              :                 }
    3286              :             }
    3287        28996 :           else if (!(flags & TDF_SLIM))
    3288              :             {
    3289              :               /* Output COND_EXPR_THEN.  */
    3290        28996 :               if (COND_EXPR_THEN (node))
    3291              :                 {
    3292        28996 :                   newline_and_indent (pp, spc+2);
    3293        28996 :                   pp_left_brace (pp);
    3294        28996 :                   newline_and_indent (pp, spc+4);
    3295        28996 :                   dump_generic_node (pp, COND_EXPR_THEN (node), spc+4,
    3296              :                                      flags, true);
    3297        28996 :                   newline_and_indent (pp, spc+2);
    3298        28996 :                   pp_right_brace (pp);
    3299              :                 }
    3300              : 
    3301              :               /* Output COND_EXPR_ELSE.  */
    3302        28996 :               if (COND_EXPR_ELSE (node)
    3303        28996 :                   && !IS_EMPTY_STMT (COND_EXPR_ELSE (node)))
    3304              :                 {
    3305         8070 :                   newline_and_indent (pp, spc);
    3306         8070 :                   pp_string (pp, "else");
    3307         8070 :                   newline_and_indent (pp, spc+2);
    3308         8070 :                   pp_left_brace (pp);
    3309         8070 :                   newline_and_indent (pp, spc+4);
    3310         8070 :                   dump_generic_node (pp, COND_EXPR_ELSE (node), spc+4,
    3311              :                                      flags, true);
    3312         8070 :                   newline_and_indent (pp, spc+2);
    3313         8070 :                   pp_right_brace (pp);
    3314              :                 }
    3315              :             }
    3316              :           is_expr = false;
    3317              :         }
    3318              :       else
    3319              :         {
    3320         4790 :           dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3321         4790 :           pp_space (pp);
    3322         4790 :           pp_question (pp);
    3323         4790 :           pp_space (pp);
    3324         4790 :           dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    3325         4790 :           pp_space (pp);
    3326         4790 :           pp_colon (pp);
    3327         4790 :           pp_space (pp);
    3328         4790 :           dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
    3329              :         }
    3330              :       break;
    3331              : 
    3332        43254 :     case BIND_EXPR:
    3333        43254 :       pp_left_brace (pp);
    3334        43254 :       if (!(flags & TDF_SLIM))
    3335              :         {
    3336        43254 :           if (BIND_EXPR_VARS (node))
    3337              :             {
    3338        35490 :               pp_newline (pp);
    3339              : 
    3340       151636 :               for (op0 = BIND_EXPR_VARS (node); op0; op0 = DECL_CHAIN (op0))
    3341              :                 {
    3342       116146 :                   print_declaration (pp, op0, spc+2, flags);
    3343       116146 :                   pp_newline (pp);
    3344              :                 }
    3345              :             }
    3346              : 
    3347        43254 :           newline_and_indent (pp, spc+2);
    3348        43254 :           dump_generic_node (pp, BIND_EXPR_BODY (node), spc+2, flags, true);
    3349        43254 :           newline_and_indent (pp, spc);
    3350        43254 :           pp_right_brace (pp);
    3351              :         }
    3352              :       is_expr = false;
    3353              :       break;
    3354              : 
    3355        66625 :     case CALL_EXPR:
    3356        66625 :       if (CALL_EXPR_FN (node) != NULL_TREE)
    3357        66471 :         print_call_name (pp, CALL_EXPR_FN (node), flags);
    3358              :       else
    3359              :         {
    3360          154 :           pp_dot (pp);
    3361          154 :           pp_string (pp, internal_fn_name (CALL_EXPR_IFN (node)));
    3362              :         }
    3363              : 
    3364              :       /* Print parameters.  */
    3365        66625 :       pp_space (pp);
    3366        66625 :       pp_left_paren (pp);
    3367        66625 :       {
    3368        66625 :         tree arg;
    3369        66625 :         call_expr_arg_iterator iter;
    3370       255900 :         FOR_EACH_CALL_EXPR_ARG (arg, iter, node)
    3371              :           {
    3372       122650 :             dump_generic_node (pp, arg, spc, flags, false);
    3373       122650 :             if (more_call_expr_args_p (&iter))
    3374              :               {
    3375        63349 :                 pp_comma (pp);
    3376        63349 :                 pp_space (pp);
    3377              :               }
    3378              :           }
    3379              :       }
    3380        66625 :       if (CALL_EXPR_VA_ARG_PACK (node))
    3381              :         {
    3382            0 :           if (call_expr_nargs (node) > 0)
    3383              :             {
    3384            0 :               pp_comma (pp);
    3385            0 :               pp_space (pp);
    3386              :             }
    3387            0 :           pp_string (pp, "__builtin_va_arg_pack ()");
    3388              :         }
    3389        66625 :       pp_right_paren (pp);
    3390              : 
    3391        66625 :       op1 = CALL_EXPR_STATIC_CHAIN (node);
    3392        66625 :       if (op1)
    3393              :         {
    3394            0 :           pp_string (pp, " [static-chain: ");
    3395            0 :           dump_generic_node (pp, op1, spc, flags, false);
    3396            0 :           pp_right_bracket (pp);
    3397              :         }
    3398              : 
    3399        66625 :       if (CALL_EXPR_RETURN_SLOT_OPT (node))
    3400            0 :         pp_string (pp, " [return slot optimization]");
    3401        66625 :       if (CALL_EXPR_TAILCALL (node))
    3402            0 :         pp_string (pp, " [tail call]");
    3403        66625 :       if (CALL_EXPR_MUST_TAIL_CALL (node))
    3404            0 :         pp_string (pp, " [must tail call]");
    3405              :       break;
    3406              : 
    3407            0 :     case WITH_CLEANUP_EXPR:
    3408            0 :       NIY;
    3409            0 :       break;
    3410              : 
    3411        16829 :     case CLEANUP_POINT_EXPR:
    3412        16829 :       pp_string (pp, "<<cleanup_point ");
    3413        16829 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3414        16829 :       pp_string (pp, ">>");
    3415        16829 :       break;
    3416              : 
    3417            0 :     case PLACEHOLDER_EXPR:
    3418            0 :       pp_string (pp, "<PLACEHOLDER_EXPR ");
    3419            0 :       dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    3420            0 :       pp_greater (pp);
    3421            0 :       break;
    3422              : 
    3423              :       /* Binary arithmetic and logic expressions.  */
    3424       257647 :     case WIDEN_SUM_EXPR:
    3425       257647 :     case WIDEN_MULT_EXPR:
    3426       257647 :     case MULT_EXPR:
    3427       257647 :     case MULT_HIGHPART_EXPR:
    3428       257647 :     case PLUS_EXPR:
    3429       257647 :     case POINTER_PLUS_EXPR:
    3430       257647 :     case POINTER_DIFF_EXPR:
    3431       257647 :     case MINUS_EXPR:
    3432       257647 :     case TRUNC_DIV_EXPR:
    3433       257647 :     case CEIL_DIV_EXPR:
    3434       257647 :     case FLOOR_DIV_EXPR:
    3435       257647 :     case ROUND_DIV_EXPR:
    3436       257647 :     case TRUNC_MOD_EXPR:
    3437       257647 :     case CEIL_MOD_EXPR:
    3438       257647 :     case FLOOR_MOD_EXPR:
    3439       257647 :     case ROUND_MOD_EXPR:
    3440       257647 :     case RDIV_EXPR:
    3441       257647 :     case EXACT_DIV_EXPR:
    3442       257647 :     case LSHIFT_EXPR:
    3443       257647 :     case RSHIFT_EXPR:
    3444       257647 :     case LROTATE_EXPR:
    3445       257647 :     case RROTATE_EXPR:
    3446       257647 :     case WIDEN_LSHIFT_EXPR:
    3447       257647 :     case BIT_IOR_EXPR:
    3448       257647 :     case BIT_XOR_EXPR:
    3449       257647 :     case BIT_AND_EXPR:
    3450       257647 :     case TRUTH_ANDIF_EXPR:
    3451       257647 :     case TRUTH_ORIF_EXPR:
    3452       257647 :     case TRUTH_AND_EXPR:
    3453       257647 :     case TRUTH_OR_EXPR:
    3454       257647 :     case TRUTH_XOR_EXPR:
    3455       257647 :     case LT_EXPR:
    3456       257647 :     case LE_EXPR:
    3457       257647 :     case GT_EXPR:
    3458       257647 :     case GE_EXPR:
    3459       257647 :     case EQ_EXPR:
    3460       257647 :     case NE_EXPR:
    3461       257647 :     case UNLT_EXPR:
    3462       257647 :     case UNLE_EXPR:
    3463       257647 :     case UNGT_EXPR:
    3464       257647 :     case UNGE_EXPR:
    3465       257647 :     case UNEQ_EXPR:
    3466       257647 :     case LTGT_EXPR:
    3467       257647 :     case ORDERED_EXPR:
    3468       257647 :     case UNORDERED_EXPR:
    3469       257647 :       {
    3470       515294 :         const char *op = op_symbol (node);
    3471       257647 :         op0 = TREE_OPERAND (node, 0);
    3472       257647 :         op1 = TREE_OPERAND (node, 1);
    3473              : 
    3474              :         /* When the operands are expressions with less priority,
    3475              :            keep semantics of the tree representation.  */
    3476       257647 :         if (op_prio (op0) <= op_prio (node))
    3477              :           {
    3478        35291 :             pp_left_paren (pp);
    3479        35291 :             dump_generic_node (pp, op0, spc, flags, false);
    3480        35291 :             pp_right_paren (pp);
    3481              :           }
    3482              :         else
    3483       222356 :           dump_generic_node (pp, op0, spc, flags, false);
    3484              : 
    3485       257647 :         pp_space (pp);
    3486       257647 :         pp_string (pp, op);
    3487       257647 :         pp_space (pp);
    3488              : 
    3489              :         /* When the operands are expressions with less priority,
    3490              :            keep semantics of the tree representation.  */
    3491       257647 :         if (op_prio (op1) <= op_prio (node))
    3492              :           {
    3493         3118 :             pp_left_paren (pp);
    3494         3118 :             dump_generic_node (pp, op1, spc, flags, false);
    3495         3118 :             pp_right_paren (pp);
    3496              :           }
    3497              :         else
    3498       254529 :           dump_generic_node (pp, op1, spc, flags, false);
    3499              :       }
    3500              :       break;
    3501              : 
    3502              :       /* Unary arithmetic and logic expressions.  */
    3503       328889 :     case ADDR_EXPR:
    3504       328889 :       if (flags & TDF_GIMPLE_VAL)
    3505              :         {
    3506            0 :           pp_string (pp, "_Literal (");
    3507            0 :           dump_generic_node (pp, TREE_TYPE (node), spc,
    3508              :                              flags & ~TDF_GIMPLE_VAL, false);
    3509            0 :           pp_character (pp, ')');
    3510              :         }
    3511              :       /* Fallthru.  */
    3512       355253 :     case NEGATE_EXPR:
    3513       355253 :     case BIT_NOT_EXPR:
    3514       355253 :     case TRUTH_NOT_EXPR:
    3515       355253 :     case PREDECREMENT_EXPR:
    3516       355253 :     case PREINCREMENT_EXPR:
    3517       355253 :     case INDIRECT_REF:
    3518       355253 :       if (!(flags & TDF_GIMPLE)
    3519       355253 :           && TREE_CODE (node) == ADDR_EXPR
    3520       684142 :           && (TREE_CODE (TREE_OPERAND (node, 0)) == STRING_CST
    3521       322089 :               || TREE_CODE (TREE_OPERAND (node, 0)) == FUNCTION_DECL))
    3522              :         /* Do not output '&' for strings and function pointers when not
    3523              :            dumping GIMPLE FE syntax.  */
    3524              :         ;
    3525              :       else
    3526       338727 :         pp_string (pp, op_symbol (node));
    3527              : 
    3528       355253 :       if (op_prio (TREE_OPERAND (node, 0)) < op_prio (node))
    3529              :         {
    3530         3998 :           pp_left_paren (pp);
    3531         3998 :           dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3532         3998 :           pp_right_paren (pp);
    3533              :         }
    3534              :       else
    3535       351255 :         dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3536              :       break;
    3537              : 
    3538         1535 :     case POSTDECREMENT_EXPR:
    3539         1535 :     case POSTINCREMENT_EXPR:
    3540         1535 :       if (op_prio (TREE_OPERAND (node, 0)) < op_prio (node))
    3541              :         {
    3542            0 :           pp_left_paren (pp);
    3543            0 :           dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3544            0 :           pp_right_paren (pp);
    3545              :         }
    3546              :       else
    3547         1535 :         dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3548         3070 :       pp_string (pp, op_symbol (node));
    3549         1535 :       break;
    3550              : 
    3551          366 :     case MIN_EXPR:
    3552          366 :       pp_string (pp, "MIN_EXPR <");
    3553          366 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3554          366 :       pp_string (pp, ", ");
    3555          366 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    3556          366 :       pp_greater (pp);
    3557          366 :       break;
    3558              : 
    3559         6071 :     case MAX_EXPR:
    3560         6071 :       pp_string (pp, "MAX_EXPR <");
    3561         6071 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3562         6071 :       pp_string (pp, ", ");
    3563         6071 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    3564         6071 :       pp_greater (pp);
    3565         6071 :       break;
    3566              : 
    3567          529 :     case ABS_EXPR:
    3568          529 :       pp_string (pp, "ABS_EXPR <");
    3569          529 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3570          529 :       pp_greater (pp);
    3571          529 :       break;
    3572              : 
    3573           24 :     case ABSU_EXPR:
    3574           24 :       pp_string (pp, "ABSU_EXPR <");
    3575           24 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3576           24 :       pp_greater (pp);
    3577           24 :       break;
    3578              : 
    3579            0 :     case RANGE_EXPR:
    3580            0 :       NIY;
    3581            0 :       break;
    3582              : 
    3583       179760 :     case ADDR_SPACE_CONVERT_EXPR:
    3584       179760 :     case FIXED_CONVERT_EXPR:
    3585       179760 :     case FIX_TRUNC_EXPR:
    3586       179760 :     case FLOAT_EXPR:
    3587       179760 :     CASE_CONVERT:
    3588       179760 :       type = TREE_TYPE (node);
    3589       179760 :       op0 = TREE_OPERAND (node, 0);
    3590       179760 :       if (type != TREE_TYPE (op0))
    3591              :         {
    3592       179738 :           pp_left_paren (pp);
    3593       179738 :           dump_generic_node (pp, type, spc, flags, false);
    3594       179738 :           pp_string (pp, ") ");
    3595              :         }
    3596       179760 :       if (op_prio (op0) < op_prio (node))
    3597        38942 :         pp_left_paren (pp);
    3598       179760 :       dump_generic_node (pp, op0, spc, flags, false);
    3599       179760 :       if (op_prio (op0) < op_prio (node))
    3600        38942 :         pp_right_paren (pp);
    3601              :       break;
    3602              : 
    3603        38982 :     case VIEW_CONVERT_EXPR:
    3604        38982 :       if (flags & TDF_GIMPLE)
    3605            0 :         pp_string (pp, "__VIEW_CONVERT <");
    3606              :       else
    3607        38982 :         pp_string (pp, "VIEW_CONVERT_EXPR<");
    3608        38982 :       dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    3609        38982 :       pp_string (pp, ">(");
    3610        38982 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3611        38982 :       pp_right_paren (pp);
    3612        38982 :       break;
    3613              : 
    3614           14 :     case PAREN_EXPR:
    3615           14 :       pp_string (pp, "((");
    3616           14 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3617           14 :       pp_string (pp, "))");
    3618           14 :       break;
    3619              : 
    3620        17361 :     case NON_LVALUE_EXPR:
    3621        17361 :       pp_string (pp, "NON_LVALUE_EXPR <");
    3622        17361 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3623        17361 :       pp_greater (pp);
    3624        17361 :       break;
    3625              : 
    3626         1582 :     case SAVE_EXPR:
    3627         1582 :       pp_string (pp, "SAVE_EXPR <");
    3628         1582 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3629         1582 :       pp_greater (pp);
    3630         1582 :       break;
    3631              : 
    3632           26 :     case COMPLEX_EXPR:
    3633           26 :       pp_string (pp, "COMPLEX_EXPR <");
    3634           26 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3635           26 :       pp_string (pp, ", ");
    3636           26 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    3637           26 :       pp_greater (pp);
    3638           26 :       break;
    3639              : 
    3640            0 :     case CONJ_EXPR:
    3641            0 :       pp_string (pp, "CONJ_EXPR <");
    3642            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3643            0 :       pp_greater (pp);
    3644            0 :       break;
    3645              : 
    3646        51182 :     case REALPART_EXPR:
    3647        51182 :       if (flags & TDF_GIMPLE)
    3648              :         {
    3649            1 :           pp_string (pp, "__real ");
    3650            1 :           dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3651              :         }
    3652              :       else
    3653              :         {
    3654        51181 :           pp_string (pp, "REALPART_EXPR <");
    3655        51181 :           dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3656        51181 :           pp_greater (pp);
    3657              :         }
    3658              :       break;
    3659              : 
    3660        41368 :     case IMAGPART_EXPR:
    3661        41368 :       if (flags & TDF_GIMPLE)
    3662              :         {
    3663            1 :           pp_string (pp, "__imag ");
    3664            1 :           dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3665              :         }
    3666              :       else
    3667              :         {
    3668        41367 :           pp_string (pp, "IMAGPART_EXPR <");
    3669        41367 :           dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3670        41367 :           pp_greater (pp);
    3671              :         }
    3672              :       break;
    3673              : 
    3674            0 :     case VA_ARG_EXPR:
    3675            0 :       pp_string (pp, "VA_ARG_EXPR <");
    3676            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3677            0 :       pp_greater (pp);
    3678            0 :       break;
    3679              : 
    3680         1615 :     case TRY_FINALLY_EXPR:
    3681         1615 :     case TRY_CATCH_EXPR:
    3682         1615 :       pp_string (pp, "try");
    3683         1615 :       newline_and_indent (pp, spc+2);
    3684         1615 :       pp_left_brace (pp);
    3685         1615 :       newline_and_indent (pp, spc+4);
    3686         1615 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc+4, flags, true);
    3687         1615 :       newline_and_indent (pp, spc+2);
    3688         1615 :       pp_right_brace (pp);
    3689         1615 :       newline_and_indent (pp, spc);
    3690         1615 :       if (TREE_CODE (node) == TRY_CATCH_EXPR)
    3691              :         {
    3692           79 :           node = TREE_OPERAND (node, 1);
    3693           79 :           pp_string (pp, "catch");
    3694              :         }
    3695              :       else
    3696              :         {
    3697         1536 :           gcc_assert (TREE_CODE (node) == TRY_FINALLY_EXPR);
    3698         1536 :           node = TREE_OPERAND (node, 1);
    3699         1536 :           pp_string (pp, "finally");
    3700         1536 :           if (TREE_CODE (node) == EH_ELSE_EXPR)
    3701              :             {
    3702            0 :               newline_and_indent (pp, spc+2);
    3703            0 :               pp_left_brace (pp);
    3704            0 :               newline_and_indent (pp, spc+4);
    3705            0 :               dump_generic_node (pp, TREE_OPERAND (node, 0), spc+4,
    3706              :                                  flags, true);
    3707            0 :               newline_and_indent (pp, spc+2);
    3708            0 :               pp_right_brace (pp);
    3709            0 :               newline_and_indent (pp, spc);
    3710            0 :               node = TREE_OPERAND (node, 1);
    3711            0 :               pp_string (pp, "else");
    3712              :             }
    3713              :         }
    3714         1615 :       newline_and_indent (pp, spc+2);
    3715         1615 :       pp_left_brace (pp);
    3716         1615 :       newline_and_indent (pp, spc+4);
    3717         1615 :       dump_generic_node (pp, node, spc+4, flags, true);
    3718         1615 :       newline_and_indent (pp, spc+2);
    3719         1615 :       pp_right_brace (pp);
    3720         1615 :       is_expr = false;
    3721         1615 :       break;
    3722              : 
    3723            0 :     case CATCH_EXPR:
    3724            0 :       pp_string (pp, "catch (");
    3725            0 :       dump_generic_node (pp, CATCH_TYPES (node), spc+2, flags, false);
    3726            0 :       pp_right_paren (pp);
    3727            0 :       newline_and_indent (pp, spc+2);
    3728            0 :       pp_left_brace (pp);
    3729            0 :       newline_and_indent (pp, spc+4);
    3730            0 :       dump_generic_node (pp, CATCH_BODY (node), spc+4, flags, true);
    3731            0 :       newline_and_indent (pp, spc+2);
    3732            0 :       pp_right_brace (pp);
    3733            0 :       is_expr = false;
    3734            0 :       break;
    3735              : 
    3736            0 :     case EH_FILTER_EXPR:
    3737            0 :       pp_string (pp, "<<<eh_filter (");
    3738            0 :       dump_generic_node (pp, EH_FILTER_TYPES (node), spc+2, flags, false);
    3739            0 :       pp_string (pp, ")>>>");
    3740            0 :       newline_and_indent (pp, spc+2);
    3741            0 :       pp_left_brace (pp);
    3742            0 :       newline_and_indent (pp, spc+4);
    3743            0 :       dump_generic_node (pp, EH_FILTER_FAILURE (node), spc+4, flags, true);
    3744            0 :       newline_and_indent (pp, spc+2);
    3745            0 :       pp_right_brace (pp);
    3746            0 :       is_expr = false;
    3747            0 :       break;
    3748              : 
    3749        33115 :     case LABEL_EXPR:
    3750        33115 :       op0 = TREE_OPERAND (node, 0);
    3751              :       /* If this is for break or continue, don't bother printing it.  */
    3752        33115 :       if (DECL_NAME (op0))
    3753              :         {
    3754        28602 :           const char *name = IDENTIFIER_POINTER (DECL_NAME (op0));
    3755        28602 :           if (strcmp (name, "break") == 0
    3756        28602 :               || strcmp (name, "continue") == 0)
    3757              :             break;
    3758              :         }
    3759        33115 :       dump_generic_node (pp, op0, spc, flags, false);
    3760        33115 :       pp_colon (pp);
    3761        33115 :       if (DECL_NONLOCAL (op0))
    3762            0 :         pp_string (pp, " [non-local]");
    3763              :       break;
    3764              : 
    3765        10640 :     case LOOP_EXPR:
    3766        10640 :       pp_string (pp, "while (1)");
    3767        10640 :       if (!(flags & TDF_SLIM))
    3768              :         {
    3769        10640 :           newline_and_indent (pp, spc+2);
    3770        10640 :           pp_left_brace (pp);
    3771        10640 :           newline_and_indent (pp, spc+4);
    3772        10640 :           dump_generic_node (pp, LOOP_EXPR_BODY (node), spc+4, flags, true);
    3773        10640 :           newline_and_indent (pp, spc+2);
    3774        10640 :           pp_right_brace (pp);
    3775              :         }
    3776              :       is_expr = false;
    3777              :       break;
    3778              : 
    3779           26 :     case PREDICT_EXPR:
    3780           26 :       pp_string (pp, "// predicted ");
    3781           26 :       if (PREDICT_EXPR_OUTCOME (node))
    3782            7 :         pp_string (pp, "likely by ");
    3783              :       else
    3784           19 :         pp_string (pp, "unlikely by ");
    3785           26 :       pp_string (pp, predictor_name (PREDICT_EXPR_PREDICTOR (node)));
    3786           26 :       pp_string (pp, " predictor.");
    3787           26 :       break;
    3788              : 
    3789           52 :     case ANNOTATE_EXPR:
    3790           52 :       pp_string (pp, "ANNOTATE_EXPR <");
    3791           52 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3792           52 :       switch ((enum annot_expr_kind) TREE_INT_CST_LOW (TREE_OPERAND (node, 1)))
    3793              :         {
    3794           44 :         case annot_expr_ivdep_kind:
    3795           44 :           pp_string (pp, ", ivdep");
    3796           44 :           break;
    3797            2 :         case annot_expr_unroll_kind:
    3798            2 :           {
    3799            2 :             pp_string (pp, ", unroll ");
    3800            2 :             pp_decimal_int (pp,
    3801              :                             (int) TREE_INT_CST_LOW (TREE_OPERAND (node, 2)));
    3802            2 :             break;
    3803              :           }
    3804            3 :         case annot_expr_no_vector_kind:
    3805            3 :           pp_string (pp, ", no-vector");
    3806            3 :           break;
    3807            3 :         case annot_expr_vector_kind:
    3808            3 :           pp_string (pp, ", vector");
    3809            3 :           break;
    3810            0 :         case annot_expr_parallel_kind:
    3811            0 :           pp_string (pp, ", parallel");
    3812            0 :           break;
    3813            0 :         case annot_expr_maybe_infinite_kind:
    3814            0 :           pp_string (pp, ", maybe-infinite");
    3815            0 :           break;
    3816            0 :         default:
    3817            0 :           gcc_unreachable ();
    3818              :         }
    3819           52 :       pp_greater (pp);
    3820           52 :       break;
    3821              : 
    3822         9757 :     case RETURN_EXPR:
    3823         9757 :       pp_string (pp, "return");
    3824         9757 :       op0 = TREE_OPERAND (node, 0);
    3825         9757 :       if (op0)
    3826              :         {
    3827         9570 :           pp_space (pp);
    3828         9570 :           if (TREE_CODE (op0) == MODIFY_EXPR)
    3829         2830 :             dump_generic_node (pp, TREE_OPERAND (op0, 1),
    3830              :                                spc, flags, false);
    3831              :           else
    3832         6740 :             dump_generic_node (pp, op0, spc, flags, false);
    3833              :         }
    3834              :       break;
    3835              : 
    3836            0 :     case EXIT_EXPR:
    3837            0 :       pp_string (pp, "if (");
    3838            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3839            0 :       pp_string (pp, ") break");
    3840            0 :       break;
    3841              : 
    3842           66 :     case SWITCH_EXPR:
    3843           66 :       pp_string (pp, "switch (");
    3844           66 :       dump_generic_node (pp, SWITCH_COND (node), spc, flags, false);
    3845           66 :       pp_right_paren (pp);
    3846           66 :       if (!(flags & TDF_SLIM))
    3847              :         {
    3848           66 :           newline_and_indent (pp, spc+2);
    3849           66 :           pp_left_brace (pp);
    3850           66 :           if (SWITCH_BODY (node))
    3851              :             {
    3852           66 :               newline_and_indent (pp, spc+4);
    3853           66 :               dump_generic_node (pp, SWITCH_BODY (node), spc+4, flags,
    3854              :                                  true);
    3855              :             }
    3856           66 :           newline_and_indent (pp, spc+2);
    3857           66 :           pp_right_brace (pp);
    3858              :         }
    3859              :       is_expr = false;
    3860              :       break;
    3861              : 
    3862        22790 :     case GOTO_EXPR:
    3863        22790 :       op0 = GOTO_DESTINATION (node);
    3864        22790 :       if (TREE_CODE (op0) != SSA_NAME && DECL_P (op0) && DECL_NAME (op0))
    3865              :         {
    3866        18005 :           const char *name = IDENTIFIER_POINTER (DECL_NAME (op0));
    3867        18005 :           if (strcmp (name, "break") == 0
    3868        18005 :               || strcmp (name, "continue") == 0)
    3869              :             {
    3870            0 :               pp_string (pp, name);
    3871            0 :               break;
    3872              :             }
    3873              :         }
    3874        22790 :       pp_string (pp, "goto ");
    3875        22790 :       dump_generic_node (pp, op0, spc, flags, false);
    3876        22790 :       break;
    3877              : 
    3878          292 :     case ASM_EXPR:
    3879          292 :       pp_string (pp, "__asm__");
    3880          292 :       if (ASM_VOLATILE_P (node))
    3881          292 :         pp_string (pp, " __volatile__");
    3882          292 :       pp_left_paren (pp);
    3883          292 :       dump_generic_node (pp, ASM_STRING (node), spc, flags, false);
    3884          292 :       pp_colon (pp);
    3885          292 :       dump_generic_node (pp, ASM_OUTPUTS (node), spc, flags, false);
    3886          292 :       pp_colon (pp);
    3887          292 :       dump_generic_node (pp, ASM_INPUTS (node), spc, flags, false);
    3888          292 :       if (ASM_CLOBBERS (node))
    3889              :         {
    3890          292 :           pp_colon (pp);
    3891          292 :           dump_generic_node (pp, ASM_CLOBBERS (node), spc, flags, false);
    3892              :         }
    3893          292 :       pp_right_paren (pp);
    3894          292 :       break;
    3895              : 
    3896         8957 :     case CASE_LABEL_EXPR:
    3897         8957 :       if (CASE_LOW (node) && CASE_HIGH (node))
    3898              :         {
    3899          121 :           pp_string (pp, "case ");
    3900          121 :           dump_generic_node (pp, CASE_LOW (node), spc, flags, false);
    3901          121 :           pp_string (pp, " ... ");
    3902          121 :           dump_generic_node (pp, CASE_HIGH (node), spc, flags, false);
    3903              :         }
    3904         8836 :       else if (CASE_LOW (node))
    3905              :         {
    3906         7297 :           pp_string (pp, "case ");
    3907         7297 :           dump_generic_node (pp, CASE_LOW (node), spc, flags, false);
    3908              :         }
    3909              :       else
    3910         1539 :         pp_string (pp, "default");
    3911         8957 :       pp_colon (pp);
    3912         8957 :       break;
    3913              : 
    3914         1782 :     case OBJ_TYPE_REF:
    3915         1782 :       pp_string (pp, "OBJ_TYPE_REF(");
    3916         1782 :       dump_generic_node (pp, OBJ_TYPE_REF_EXPR (node), spc, flags, false);
    3917         1782 :       pp_semicolon (pp);
    3918              :       /* We omit the class type for -fcompare-debug because we may
    3919              :          drop TYPE_BINFO early depending on debug info, and then
    3920              :          virtual_method_call_p would return false, whereas when
    3921              :          TYPE_BINFO is preserved it may still return true and then
    3922              :          we'd print the class type.  Compare tree and rtl dumps for
    3923              :          libstdc++-prettyprinters/shared_ptr.cc with and without -g,
    3924              :          for example, at occurrences of OBJ_TYPE_REF.  */
    3925         1782 :       if (!(flags & (TDF_SLIM | TDF_COMPARE_DEBUG))
    3926         1782 :           && virtual_method_call_p (node, true))
    3927              :         {
    3928         1479 :           pp_string (pp, "(");
    3929         1479 :           dump_generic_node (pp, obj_type_ref_class (node, true),
    3930              :                              spc, flags, false);
    3931         1479 :           pp_string (pp, ")");
    3932              :         }
    3933         1782 :       dump_generic_node (pp, OBJ_TYPE_REF_OBJECT (node), spc, flags, false);
    3934         1782 :       pp_arrow (pp);
    3935         1782 :       dump_generic_node (pp, OBJ_TYPE_REF_TOKEN (node), spc, flags, false);
    3936         1782 :       pp_right_paren (pp);
    3937         1782 :       break;
    3938              : 
    3939     16552516 :     case SSA_NAME:
    3940     16552516 :       if (SSA_NAME_IDENTIFIER (node))
    3941              :         {
    3942      9129020 :           if ((flags & TDF_NOUID)
    3943         7601 :               && SSA_NAME_VAR (node)
    3944      9133746 :               && DECL_NAMELESS (SSA_NAME_VAR (node)))
    3945         1202 :             dump_fancy_name (pp, SSA_NAME_IDENTIFIER (node));
    3946      9127818 :           else if (! (flags & TDF_GIMPLE)
    3947      9127818 :                    || SSA_NAME_VAR (node))
    3948      9127818 :             dump_generic_node (pp, SSA_NAME_IDENTIFIER (node),
    3949              :                                spc, flags, false);
    3950              :         }
    3951     16552516 :       pp_underscore (pp);
    3952     16552516 :       pp_decimal_int (pp, SSA_NAME_VERSION (node));
    3953     16552516 :       if (SSA_NAME_IS_DEFAULT_DEF (node))
    3954       714739 :         pp_string (pp, "(D)");
    3955     16552516 :       if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (node))
    3956          399 :         pp_string (pp, "(ab)");
    3957              :       break;
    3958              : 
    3959            0 :     case WITH_SIZE_EXPR:
    3960            0 :       pp_string (pp, "WITH_SIZE_EXPR <");
    3961            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3962            0 :       pp_string (pp, ", ");
    3963            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    3964            0 :       pp_greater (pp);
    3965            0 :       break;
    3966              : 
    3967            0 :     case SCEV_KNOWN:
    3968            0 :       pp_string (pp, "scev_known");
    3969            0 :       break;
    3970              : 
    3971         4797 :     case SCEV_NOT_KNOWN:
    3972         4797 :       pp_string (pp, "scev_not_known");
    3973         4797 :       break;
    3974              : 
    3975       149964 :     case POLYNOMIAL_CHREC:
    3976       149964 :       pp_left_brace (pp);
    3977       149964 :       dump_generic_node (pp, CHREC_LEFT (node), spc, flags, false);
    3978       149964 :       pp_string (pp, ", +, ");
    3979       149964 :       dump_generic_node (pp, CHREC_RIGHT (node), spc, flags, false);
    3980       193665 :       pp_string (pp, !CHREC_NOWRAP (node) ? "}_" : "}<nw>_");
    3981       149964 :       pp_scalar (pp, "%u", CHREC_VARIABLE (node));
    3982       149964 :       is_stmt = false;
    3983       149964 :       break;
    3984              : 
    3985            0 :     case REALIGN_LOAD_EXPR:
    3986            0 :       pp_string (pp, "REALIGN_LOAD <");
    3987            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3988            0 :       pp_string (pp, ", ");
    3989            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    3990            0 :       pp_string (pp, ", ");
    3991            0 :       dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
    3992            0 :       pp_greater (pp);
    3993            0 :       break;
    3994              : 
    3995            0 :     case VEC_COND_EXPR:
    3996            0 :       pp_string (pp, " VEC_COND_EXPR < ");
    3997            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    3998            0 :       pp_string (pp, " , ");
    3999            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4000            0 :       pp_string (pp, " , ");
    4001            0 :       dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
    4002            0 :       pp_string (pp, " > ");
    4003            0 :       break;
    4004              : 
    4005            0 :     case VEC_PERM_EXPR:
    4006            0 :       pp_string (pp, " VEC_PERM_EXPR < ");
    4007            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4008            0 :       pp_string (pp, " , ");
    4009            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4010            0 :       pp_string (pp, " , ");
    4011            0 :       dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
    4012            0 :       pp_string (pp, " > ");
    4013            0 :       break;
    4014              : 
    4015            0 :     case DOT_PROD_EXPR:
    4016            0 :       pp_string (pp, " DOT_PROD_EXPR < ");
    4017            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4018            0 :       pp_string (pp, ", ");
    4019            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4020            0 :       pp_string (pp, ", ");
    4021            0 :       dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
    4022            0 :       pp_string (pp, " > ");
    4023            0 :       break;
    4024              : 
    4025            0 :     case WIDEN_MULT_PLUS_EXPR:
    4026            0 :       pp_string (pp, " WIDEN_MULT_PLUS_EXPR < ");
    4027            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4028            0 :       pp_string (pp, ", ");
    4029            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4030            0 :       pp_string (pp, ", ");
    4031            0 :       dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
    4032            0 :       pp_string (pp, " > ");
    4033            0 :       break;
    4034              : 
    4035            0 :     case WIDEN_MULT_MINUS_EXPR:
    4036            0 :       pp_string (pp, " WIDEN_MULT_MINUS_EXPR < ");
    4037            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4038            0 :       pp_string (pp, ", ");
    4039            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4040            0 :       pp_string (pp, ", ");
    4041            0 :       dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
    4042            0 :       pp_string (pp, " > ");
    4043            0 :       break;
    4044              : 
    4045          117 :     case OACC_PARALLEL:
    4046          117 :       pp_string (pp, "#pragma acc parallel");
    4047          117 :       goto dump_omp_clauses_body;
    4048              : 
    4049           57 :     case OACC_KERNELS:
    4050           57 :       pp_string (pp, "#pragma acc kernels");
    4051           57 :       goto dump_omp_clauses_body;
    4052              : 
    4053           58 :     case OACC_SERIAL:
    4054           58 :       pp_string (pp, "#pragma acc serial");
    4055           58 :       goto dump_omp_clauses_body;
    4056              : 
    4057           21 :     case OACC_DATA:
    4058           21 :       pp_string (pp, "#pragma acc data");
    4059           21 :       dump_omp_clauses (pp, OACC_DATA_CLAUSES (node), spc, flags);
    4060           21 :       goto dump_omp_body;
    4061              : 
    4062           35 :     case OACC_HOST_DATA:
    4063           35 :       pp_string (pp, "#pragma acc host_data");
    4064           35 :       dump_omp_clauses (pp, OACC_HOST_DATA_CLAUSES (node), spc, flags);
    4065           35 :       goto dump_omp_body;
    4066              : 
    4067            4 :     case OACC_DECLARE:
    4068            4 :       pp_string (pp, "#pragma acc declare");
    4069            4 :       dump_omp_clauses (pp, OACC_DECLARE_CLAUSES (node), spc, flags);
    4070            4 :       break;
    4071              : 
    4072            0 :     case OACC_UPDATE:
    4073            0 :       pp_string (pp, "#pragma acc update");
    4074            0 :       dump_omp_clauses (pp, OACC_UPDATE_CLAUSES (node), spc, flags);
    4075            0 :       break;
    4076              : 
    4077           13 :     case OACC_ENTER_DATA:
    4078           13 :       pp_string (pp, "#pragma acc enter data");
    4079           13 :       dump_omp_clauses (pp, OACC_ENTER_DATA_CLAUSES (node), spc, flags);
    4080           13 :       break;
    4081              : 
    4082           38 :     case OACC_EXIT_DATA:
    4083           38 :       pp_string (pp, "#pragma acc exit data");
    4084           38 :       dump_omp_clauses (pp, OACC_EXIT_DATA_CLAUSES (node), spc, flags);
    4085           38 :       break;
    4086              : 
    4087           48 :     case OACC_CACHE:
    4088           48 :       pp_string (pp, "#pragma acc cache");
    4089           48 :       dump_omp_clauses (pp, OACC_CACHE_CLAUSES (node), spc, flags);
    4090           48 :       break;
    4091              : 
    4092          218 :     case OMP_PARALLEL:
    4093          218 :       pp_string (pp, "#pragma omp parallel");
    4094          218 :       dump_omp_clauses (pp, OMP_PARALLEL_CLAUSES (node), spc, flags);
    4095          218 :       goto dump_omp_body;
    4096              : 
    4097          232 :     dump_omp_clauses_body:
    4098          232 :       dump_omp_clauses (pp, OMP_CLAUSES (node), spc, flags);
    4099          232 :       goto dump_omp_body;
    4100              : 
    4101         1469 :     dump_omp_body:
    4102         1469 :       if (!(flags & TDF_SLIM) && OMP_BODY (node))
    4103              :         {
    4104         1468 :           newline_and_indent (pp, spc + 2);
    4105         1468 :           pp_left_brace (pp);
    4106         1468 :           newline_and_indent (pp, spc + 4);
    4107         1468 :           dump_generic_node (pp, OMP_BODY (node), spc + 4, flags, false);
    4108         1468 :           newline_and_indent (pp, spc + 2);
    4109         1468 :           pp_right_brace (pp);
    4110              :         }
    4111              :       is_expr = false;
    4112              :       break;
    4113              : 
    4114          161 :     case OMP_TASK:
    4115          162 :       pp_string (pp, OMP_TASK_BODY (node) ? "#pragma omp task"
    4116              :                                           : "#pragma omp taskwait");
    4117          161 :       dump_omp_clauses (pp, OMP_TASK_CLAUSES (node), spc, flags);
    4118          161 :       goto dump_omp_body;
    4119              : 
    4120          242 :     case OMP_FOR:
    4121          242 :       pp_string (pp, "#pragma omp for");
    4122          242 :       goto dump_omp_loop;
    4123              : 
    4124          225 :     case OMP_SIMD:
    4125          225 :       pp_string (pp, "#pragma omp simd");
    4126          225 :       goto dump_omp_loop;
    4127              : 
    4128           50 :     case OMP_DISTRIBUTE:
    4129           50 :       pp_string (pp, "#pragma omp distribute");
    4130           50 :       goto dump_omp_loop;
    4131              : 
    4132            5 :     case OMP_TASKLOOP:
    4133            5 :       pp_string (pp, "#pragma omp taskloop");
    4134            5 :       goto dump_omp_loop;
    4135              : 
    4136           21 :     case OMP_LOOP:
    4137           21 :       pp_string (pp, "#pragma omp loop");
    4138           21 :       goto dump_omp_loop;
    4139              : 
    4140          188 :     case OMP_TILE:
    4141          188 :       pp_string (pp, "#pragma omp tile");
    4142          188 :       goto dump_omp_loop;
    4143              : 
    4144          196 :     case OMP_UNROLL:
    4145          196 :       pp_string (pp, "#pragma omp unroll");
    4146          196 :       goto dump_omp_loop;
    4147              : 
    4148          307 :     case OACC_LOOP:
    4149          307 :       pp_string (pp, "#pragma acc loop");
    4150          307 :       goto dump_omp_loop;
    4151              : 
    4152           75 :     case OMP_TEAMS:
    4153           75 :       pp_string (pp, "#pragma omp teams");
    4154           75 :       dump_omp_clauses (pp, OMP_TEAMS_CLAUSES (node), spc, flags);
    4155           75 :       goto dump_omp_body;
    4156              : 
    4157           70 :     case OMP_TARGET_DATA:
    4158           70 :       pp_string (pp, "#pragma omp target data");
    4159           70 :       dump_omp_clauses (pp, OMP_TARGET_DATA_CLAUSES (node), spc, flags);
    4160           70 :       goto dump_omp_body;
    4161              : 
    4162           71 :     case OMP_TARGET_ENTER_DATA:
    4163           71 :       pp_string (pp, "#pragma omp target enter data");
    4164           71 :       dump_omp_clauses (pp, OMP_TARGET_ENTER_DATA_CLAUSES (node), spc, flags);
    4165           71 :       is_expr = false;
    4166           71 :       break;
    4167              : 
    4168           57 :     case OMP_TARGET_EXIT_DATA:
    4169           57 :       pp_string (pp, "#pragma omp target exit data");
    4170           57 :       dump_omp_clauses (pp, OMP_TARGET_EXIT_DATA_CLAUSES (node), spc, flags);
    4171           57 :       is_expr = false;
    4172           57 :       break;
    4173              : 
    4174          482 :     case OMP_TARGET:
    4175          482 :       pp_string (pp, "#pragma omp target");
    4176          482 :       dump_omp_clauses (pp, OMP_TARGET_CLAUSES (node), spc, flags);
    4177          482 :       goto dump_omp_body;
    4178              : 
    4179           42 :     case OMP_TARGET_UPDATE:
    4180           42 :       pp_string (pp, "#pragma omp target update");
    4181           42 :       dump_omp_clauses (pp, OMP_TARGET_UPDATE_CLAUSES (node), spc, flags);
    4182           42 :       is_expr = false;
    4183           42 :       break;
    4184              : 
    4185         1234 :     dump_omp_loop:
    4186         1234 :       dump_omp_clauses (pp, OMP_FOR_CLAUSES (node), spc, flags);
    4187         1234 :       if (!(flags & TDF_SLIM))
    4188              :         {
    4189         1234 :           int i;
    4190              : 
    4191         1234 :           if (OMP_FOR_PRE_BODY (node))
    4192              :             {
    4193          378 :               newline_and_indent (pp, spc + 2);
    4194          378 :               pp_left_brace (pp);
    4195          378 :               spc += 4;
    4196          378 :               newline_and_indent (pp, spc);
    4197          378 :               dump_generic_node (pp, OMP_FOR_PRE_BODY (node),
    4198              :                                  spc, flags, false);
    4199              :             }
    4200         1234 :           if (OMP_FOR_INIT (node))
    4201              :             {
    4202         1138 :               spc -= 2;
    4203         2534 :               for (i = 0; i < TREE_VEC_LENGTH (OMP_FOR_INIT (node)); i++)
    4204              :                 {
    4205         1396 :                   if (TREE_VEC_ELT (OMP_FOR_INIT (node), i) == NULL_TREE)
    4206          297 :                     continue;
    4207         1099 :                   spc += 2;
    4208         1099 :                   newline_and_indent (pp, spc);
    4209         1099 :                   pp_string (pp, "for (");
    4210         1099 :                   tree init = TREE_VEC_ELT (OMP_FOR_INIT (node), i);
    4211         1099 :                   if (TREE_CODE (init) != MODIFY_EXPR
    4212         1099 :                       || TREE_CODE (TREE_OPERAND (init, 1)) != TREE_VEC)
    4213         1052 :                     dump_generic_node (pp, init, spc, flags, false);
    4214              :                   else
    4215              :                     {
    4216           47 :                       dump_generic_node (pp, TREE_OPERAND (init, 0),
    4217              :                                          spc, flags, false);
    4218           47 :                       pp_string (pp, " = ");
    4219           47 :                       dump_omp_loop_non_rect_expr (pp, TREE_OPERAND (init, 1),
    4220              :                                                    spc, flags);
    4221              :                     }
    4222         1099 :                   pp_string (pp, "; ");
    4223         1099 :                   tree cond = TREE_VEC_ELT (OMP_FOR_COND (node), i);
    4224         1099 :                   if (!COMPARISON_CLASS_P (cond)
    4225         1099 :                       || TREE_CODE (TREE_OPERAND (cond, 1)) != TREE_VEC)
    4226         1058 :                     dump_generic_node (pp, cond, spc, flags, false);
    4227              :                   else
    4228              :                     {
    4229           41 :                       dump_generic_node (pp, TREE_OPERAND (cond, 0),
    4230              :                                          spc, flags, false);
    4231           82 :                       const char *op = op_symbol (cond);
    4232           41 :                       pp_space (pp);
    4233           41 :                       pp_string (pp, op);
    4234           41 :                       pp_space (pp);
    4235           41 :                       dump_omp_loop_non_rect_expr (pp, TREE_OPERAND (cond, 1),
    4236              :                                                    spc, flags);
    4237              :                     }
    4238         1099 :                   pp_string (pp, "; ");
    4239         1099 :                   dump_generic_node (pp,
    4240         1099 :                                      TREE_VEC_ELT (OMP_FOR_INCR (node), i),
    4241              :                                      spc, flags, false);
    4242         1099 :                   pp_right_paren (pp);
    4243              :                 }
    4244              :             }
    4245         1234 :           if (OMP_FOR_BODY (node))
    4246              :             {
    4247         1234 :               newline_and_indent (pp, spc + 2);
    4248         1234 :               pp_left_brace (pp);
    4249         1234 :               newline_and_indent (pp, spc + 4);
    4250         1234 :               dump_generic_node (pp, OMP_FOR_BODY (node), spc + 4, flags,
    4251              :                   false);
    4252         1234 :               newline_and_indent (pp, spc + 2);
    4253         1234 :               pp_right_brace (pp);
    4254              :             }
    4255         1234 :           if (OMP_FOR_INIT (node))
    4256         1138 :             spc -= 2 * TREE_VEC_LENGTH (OMP_FOR_INIT (node)) - 2;
    4257         1234 :           if (OMP_FOR_PRE_BODY (node))
    4258              :             {
    4259          378 :               spc -= 4;
    4260          378 :               newline_and_indent (pp, spc + 2);
    4261          378 :               pp_right_brace (pp);
    4262              :             }
    4263              :         }
    4264              :       is_expr = false;
    4265              :       break;
    4266              : 
    4267           10 :     case OMP_SECTIONS:
    4268           10 :       pp_string (pp, "#pragma omp sections");
    4269           10 :       dump_omp_clauses (pp, OMP_SECTIONS_CLAUSES (node), spc, flags);
    4270           10 :       goto dump_omp_body;
    4271              : 
    4272           57 :     case OMP_DISPATCH:
    4273           57 :       pp_string (pp, "#pragma omp dispatch");
    4274           57 :       dump_omp_clauses (pp, OMP_DISPATCH_CLAUSES (node), spc, flags);
    4275           57 :       goto dump_omp_body;
    4276              : 
    4277           65 :     case OMP_INTEROP:
    4278           65 :       pp_string (pp, "#pragma omp interop");
    4279           65 :       dump_omp_clauses (pp, OMP_INTEROP_CLAUSES (node), spc, flags);
    4280           65 :       is_expr = false;
    4281           65 :       break;
    4282              : 
    4283           14 :     case OMP_SECTION:
    4284           14 :       pp_string (pp, "#pragma omp section");
    4285           14 :       goto dump_omp_body;
    4286              : 
    4287           10 :     case OMP_STRUCTURED_BLOCK:
    4288           10 :       pp_string (pp, "#pragma omp __structured_block");
    4289           10 :       goto dump_omp_body;
    4290              : 
    4291           10 :     case OMP_SCAN:
    4292           10 :       if (OMP_SCAN_CLAUSES (node))
    4293              :         {
    4294            5 :           pp_string (pp, "#pragma omp scan");
    4295            5 :           dump_omp_clauses (pp, OMP_SCAN_CLAUSES (node), spc, flags);
    4296              :         }
    4297           10 :       goto dump_omp_body;
    4298              : 
    4299            4 :     case OMP_MASTER:
    4300            4 :       pp_string (pp, "#pragma omp master");
    4301            4 :       goto dump_omp_body;
    4302              : 
    4303            1 :     case OMP_MASKED:
    4304            1 :       pp_string (pp, "#pragma omp masked");
    4305            1 :       dump_omp_clauses (pp, OMP_MASKED_CLAUSES (node), spc, flags);
    4306            1 :       goto dump_omp_body;
    4307              : 
    4308            5 :     case OMP_TASKGROUP:
    4309            5 :       pp_string (pp, "#pragma omp taskgroup");
    4310            5 :       dump_omp_clauses (pp, OMP_TASKGROUP_CLAUSES (node), spc, flags);
    4311            5 :       goto dump_omp_body;
    4312              : 
    4313           18 :     case OMP_ORDERED:
    4314           18 :       pp_string (pp, "#pragma omp ordered");
    4315           18 :       dump_omp_clauses (pp, OMP_ORDERED_CLAUSES (node), spc, flags);
    4316           18 :       goto dump_omp_body;
    4317              : 
    4318           27 :     case OMP_CRITICAL:
    4319           27 :       pp_string (pp, "#pragma omp critical");
    4320           27 :       if (OMP_CRITICAL_NAME (node))
    4321              :         {
    4322           24 :           pp_space (pp);
    4323           24 :           pp_left_paren (pp);
    4324           24 :           dump_generic_node (pp, OMP_CRITICAL_NAME (node), spc,
    4325              :                              flags, false);
    4326           24 :           pp_right_paren (pp);
    4327              :         }
    4328           27 :       dump_omp_clauses (pp, OMP_CRITICAL_CLAUSES (node), spc, flags);
    4329           27 :       goto dump_omp_body;
    4330              : 
    4331          191 :     case OMP_ATOMIC:
    4332          191 :       pp_string (pp, "#pragma omp atomic");
    4333          191 :       if (OMP_ATOMIC_WEAK (node))
    4334            0 :         pp_string (pp, " weak");
    4335          191 :       dump_omp_atomic_memory_order (pp, OMP_ATOMIC_MEMORY_ORDER (node));
    4336          191 :       newline_and_indent (pp, spc + 2);
    4337          191 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4338          191 :       pp_space (pp);
    4339          191 :       pp_equal (pp);
    4340          191 :       pp_space (pp);
    4341          191 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4342          191 :       break;
    4343              : 
    4344           42 :     case OMP_ATOMIC_READ:
    4345           42 :       pp_string (pp, "#pragma omp atomic read");
    4346           42 :       dump_omp_atomic_memory_order (pp, OMP_ATOMIC_MEMORY_ORDER (node));
    4347           42 :       newline_and_indent (pp, spc + 2);
    4348           42 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4349           42 :       pp_space (pp);
    4350           42 :       break;
    4351              : 
    4352           56 :     case OMP_ATOMIC_CAPTURE_OLD:
    4353           56 :     case OMP_ATOMIC_CAPTURE_NEW:
    4354           56 :       pp_string (pp, "#pragma omp atomic capture");
    4355           56 :       if (OMP_ATOMIC_WEAK (node))
    4356            0 :         pp_string (pp, " weak");
    4357           56 :       dump_omp_atomic_memory_order (pp, OMP_ATOMIC_MEMORY_ORDER (node));
    4358           56 :       newline_and_indent (pp, spc + 2);
    4359           56 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4360           56 :       pp_space (pp);
    4361           56 :       pp_equal (pp);
    4362           56 :       pp_space (pp);
    4363           56 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4364           56 :       break;
    4365              : 
    4366           17 :     case OMP_SINGLE:
    4367           17 :       pp_string (pp, "#pragma omp single");
    4368           17 :       dump_omp_clauses (pp, OMP_SINGLE_CLAUSES (node), spc, flags);
    4369           17 :       goto dump_omp_body;
    4370              : 
    4371            2 :     case OMP_SCOPE:
    4372            2 :       pp_string (pp, "#pragma omp scope");
    4373            2 :       dump_omp_clauses (pp, OMP_SCOPE_CLAUSES (node), spc, flags);
    4374            2 :       goto dump_omp_body;
    4375              : 
    4376         1590 :     case OMP_CLAUSE:
    4377              :       /* If we come here, we're dumping something that's not an OMP construct,
    4378              :          for example, OMP clauses attached to a function's '__attribute__'.
    4379              :          Dump the whole OMP clause chain.  */
    4380         1590 :       dump_omp_clauses (pp, node, spc, flags, false);
    4381         1590 :       is_expr = false;
    4382         1590 :       break;
    4383              : 
    4384           34 :     case OMP_METADIRECTIVE:
    4385           34 :       {
    4386           34 :         pp_string (pp, "#pragma omp metadirective");
    4387           34 :         newline_and_indent (pp, spc + 2);
    4388           34 :         pp_left_brace (pp);
    4389              : 
    4390           34 :         tree variant = OMP_METADIRECTIVE_VARIANTS (node);
    4391          120 :         while (variant != NULL_TREE)
    4392              :           {
    4393           86 :             tree selector = OMP_METADIRECTIVE_VARIANT_SELECTOR (variant);
    4394           86 :             tree directive = OMP_METADIRECTIVE_VARIANT_DIRECTIVE (variant);
    4395           86 :             tree body = OMP_METADIRECTIVE_VARIANT_BODY (variant);
    4396              : 
    4397           86 :             newline_and_indent (pp, spc + 4);
    4398           86 :             if (selector == NULL_TREE)
    4399           34 :               pp_string (pp, "otherwise:");
    4400              :             else
    4401              :               {
    4402           52 :                 pp_string (pp, "when (");
    4403           52 :                 dump_omp_context_selector (pp, selector, spc + 4, flags);
    4404           52 :                 pp_string (pp, "):");
    4405              :               }
    4406           86 :             newline_and_indent (pp, spc + 6);
    4407              : 
    4408           86 :             dump_generic_node (pp, directive, spc + 6, flags, false);
    4409           86 :             newline_and_indent (pp, spc + 6);
    4410           86 :             dump_generic_node (pp, body, spc + 6, flags, false);
    4411           86 :             variant = TREE_CHAIN (variant);
    4412              :           }
    4413           34 :         newline_and_indent (pp, spc + 2);
    4414           34 :         pp_right_brace (pp);
    4415              :       }
    4416           34 :       break;
    4417              : 
    4418           12 :     case OMP_NEXT_VARIANT:
    4419           12 :       {
    4420           12 :         pp_string (pp, "OMP_NEXT_VARIANT <");
    4421           12 :         dump_generic_node (pp, OMP_NEXT_VARIANT_INDEX (node), spc,
    4422              :                            flags, false);
    4423           12 :         pp_string (pp, ", ");
    4424           12 :         tree state = OMP_NEXT_VARIANT_STATE (node);
    4425           12 :         gcc_assert (state && TREE_CODE (state) == TREE_LIST);
    4426           12 :         if (TREE_PURPOSE (state))
    4427              :           {
    4428            0 :             newline_and_indent (pp, spc + 2);
    4429            0 :             pp_string (pp, "resolution map = ");
    4430            0 :             dump_generic_node (pp, TREE_PURPOSE (state), spc, flags, false);
    4431              :           }
    4432           12 :         newline_and_indent (pp, spc + 2);
    4433           12 :         pp_string (pp, "construct context = ");
    4434           12 :         if (TREE_VALUE (state))
    4435            0 :           dump_generic_node (pp, TREE_VALUE (state), spc, flags, false);
    4436              :         else
    4437           12 :           pp_string (pp, "NULL");
    4438              : 
    4439           12 :         tree selectors = TREE_CHAIN (state);
    4440           60 :         for (int i = 0; i < TREE_VEC_LENGTH (selectors); i++)
    4441              :           {
    4442           48 :             newline_and_indent (pp, spc + 2);
    4443           48 :             pp_decimal_int (pp, i + 1);
    4444           48 :             pp_string (pp, ": ");
    4445           48 :             dump_omp_context_selector (pp, TREE_VEC_ELT (selectors, i),
    4446              :                                        spc + 4, flags);
    4447              :           }
    4448           12 :         pp_string (pp, ">");
    4449              :       }
    4450           12 :       break;
    4451              : 
    4452            0 :     case OMP_TARGET_DEVICE_MATCHES:
    4453            0 :       pp_string (pp, "OMP_TARGET_DEVICE_MATCHES <");
    4454            0 :       dump_generic_node (pp, OMP_TARGET_DEVICE_MATCHES_SELECTOR (node), spc,
    4455              :                          flags, false);
    4456            0 :       for (tree p = OMP_TARGET_DEVICE_MATCHES_PROPERTIES (node);
    4457            0 :            p; p = TREE_CHAIN (p))
    4458              :         {
    4459            0 :           pp_string (pp, ", ");
    4460            0 :           dump_generic_node (pp, OMP_TP_VALUE (p), spc, flags, false);
    4461              :         }
    4462            0 :       pp_string (pp, ")>");
    4463            0 :       break;
    4464              : 
    4465           52 :     case OMP_DECLARE_MAPPER:
    4466           52 :       pp_string (pp, "#pragma omp declare mapper (");
    4467           52 :       if (OMP_DECLARE_MAPPER_ID (node))
    4468              :         {
    4469            8 :           dump_generic_node (pp, OMP_DECLARE_MAPPER_ID (node), spc, flags,
    4470              :                              false);
    4471            8 :           pp_colon (pp);
    4472              :         }
    4473           52 :       dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
    4474           52 :       pp_space (pp);
    4475           52 :       dump_generic_node (pp, OMP_DECLARE_MAPPER_DECL (node), spc, flags, false);
    4476           52 :       pp_right_paren (pp);
    4477           52 :       dump_omp_clauses (pp, OMP_DECLARE_MAPPER_CLAUSES (node), spc, flags);
    4478           52 :       break;
    4479              : 
    4480            0 :     case TRANSACTION_EXPR:
    4481            0 :       if (TRANSACTION_EXPR_OUTER (node))
    4482            0 :         pp_string (pp, "__transaction_atomic [[outer]]");
    4483            0 :       else if (TRANSACTION_EXPR_RELAXED (node))
    4484            0 :         pp_string (pp, "__transaction_relaxed");
    4485              :       else
    4486            0 :         pp_string (pp, "__transaction_atomic");
    4487            0 :       if (!(flags & TDF_SLIM) && TRANSACTION_EXPR_BODY (node))
    4488              :         {
    4489            0 :           newline_and_indent (pp, spc);
    4490            0 :           pp_left_brace (pp);
    4491            0 :           newline_and_indent (pp, spc + 2);
    4492            0 :           dump_generic_node (pp, TRANSACTION_EXPR_BODY (node),
    4493              :                              spc + 2, flags, false);
    4494            0 :           newline_and_indent (pp, spc);
    4495            0 :           pp_right_brace (pp);
    4496              :         }
    4497              :       is_expr = false;
    4498              :       break;
    4499              : 
    4500            0 :     case VEC_SERIES_EXPR:
    4501            0 :     case VEC_WIDEN_MULT_HI_EXPR:
    4502            0 :     case VEC_WIDEN_MULT_LO_EXPR:
    4503            0 :     case VEC_WIDEN_MULT_EVEN_EXPR:
    4504            0 :     case VEC_WIDEN_MULT_ODD_EXPR:
    4505            0 :     case VEC_WIDEN_LSHIFT_HI_EXPR:
    4506            0 :     case VEC_WIDEN_LSHIFT_LO_EXPR:
    4507            0 :       pp_space (pp);
    4508            0 :       for (str = get_tree_code_name (code); *str; str++)
    4509            0 :         pp_character (pp, TOUPPER (*str));
    4510            0 :       pp_string (pp, " < ");
    4511            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4512            0 :       pp_string (pp, ", ");
    4513            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4514            0 :       pp_string (pp, " > ");
    4515            0 :       break;
    4516              : 
    4517            0 :     case VEC_DUPLICATE_EXPR:
    4518            0 :       pp_space (pp);
    4519            0 :       for (str = get_tree_code_name (code); *str; str++)
    4520            0 :         pp_character (pp, TOUPPER (*str));
    4521            0 :       pp_string (pp, " < ");
    4522            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4523            0 :       pp_string (pp, " > ");
    4524            0 :       break;
    4525              : 
    4526            0 :     case VEC_UNPACK_HI_EXPR:
    4527            0 :       pp_string (pp, " VEC_UNPACK_HI_EXPR < ");
    4528            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4529            0 :       pp_string (pp, " > ");
    4530            0 :       break;
    4531              : 
    4532            0 :     case VEC_UNPACK_LO_EXPR:
    4533            0 :       pp_string (pp, " VEC_UNPACK_LO_EXPR < ");
    4534            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4535            0 :       pp_string (pp, " > ");
    4536            0 :       break;
    4537              : 
    4538            0 :     case VEC_UNPACK_FLOAT_HI_EXPR:
    4539            0 :       pp_string (pp, " VEC_UNPACK_FLOAT_HI_EXPR < ");
    4540            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4541            0 :       pp_string (pp, " > ");
    4542            0 :       break;
    4543              : 
    4544            0 :     case VEC_UNPACK_FLOAT_LO_EXPR:
    4545            0 :       pp_string (pp, " VEC_UNPACK_FLOAT_LO_EXPR < ");
    4546            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4547            0 :       pp_string (pp, " > ");
    4548            0 :       break;
    4549              : 
    4550            0 :     case VEC_UNPACK_FIX_TRUNC_HI_EXPR:
    4551            0 :       pp_string (pp, " VEC_UNPACK_FIX_TRUNC_HI_EXPR < ");
    4552            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4553            0 :       pp_string (pp, " > ");
    4554            0 :       break;
    4555              : 
    4556            0 :     case VEC_UNPACK_FIX_TRUNC_LO_EXPR:
    4557            0 :       pp_string (pp, " VEC_UNPACK_FIX_TRUNC_LO_EXPR < ");
    4558            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4559            0 :       pp_string (pp, " > ");
    4560            0 :       break;
    4561              : 
    4562            0 :     case VEC_PACK_TRUNC_EXPR:
    4563            0 :       pp_string (pp, " VEC_PACK_TRUNC_EXPR < ");
    4564            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4565            0 :       pp_string (pp, ", ");
    4566            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4567            0 :       pp_string (pp, " > ");
    4568            0 :       break;
    4569              : 
    4570            0 :     case VEC_PACK_SAT_EXPR:
    4571            0 :       pp_string (pp, " VEC_PACK_SAT_EXPR < ");
    4572            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4573            0 :       pp_string (pp, ", ");
    4574            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4575            0 :       pp_string (pp, " > ");
    4576            0 :       break;
    4577              : 
    4578            0 :     case VEC_PACK_FIX_TRUNC_EXPR:
    4579            0 :       pp_string (pp, " VEC_PACK_FIX_TRUNC_EXPR < ");
    4580            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4581            0 :       pp_string (pp, ", ");
    4582            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4583            0 :       pp_string (pp, " > ");
    4584            0 :       break;
    4585              : 
    4586            0 :     case VEC_PACK_FLOAT_EXPR:
    4587            0 :       pp_string (pp, " VEC_PACK_FLOAT_EXPR < ");
    4588            0 :       dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
    4589            0 :       pp_string (pp, ", ");
    4590            0 :       dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
    4591            0 :       pp_string (pp, " > ");
    4592            0 :       break;
    4593              : 
    4594            6 :     case BLOCK:
    4595            6 :       dump_block_node (pp, node, spc, flags);
    4596            6 :       break;
    4597              : 
    4598          888 :     case DEBUG_BEGIN_STMT:
    4599          888 :       pp_string (pp, "# DEBUG BEGIN STMT");
    4600          888 :       break;
    4601              : 
    4602        13286 :     default:
    4603        13286 :       NIY;
    4604              :     }
    4605              : 
    4606     47217017 :   if (is_stmt && is_expr)
    4607       329865 :     pp_semicolon (pp);
    4608              : 
    4609              :   return spc;
    4610              : }
    4611              : 
    4612              : /* Print the declaration of a variable.  */
    4613              : 
    4614              : void
    4615       453277 : print_declaration (pretty_printer *pp, tree t, int spc, dump_flags_t flags)
    4616              : {
    4617      2293319 :   INDENT (spc);
    4618              : 
    4619       453277 :   if (TREE_CODE(t) == NAMELIST_DECL)
    4620              :     {
    4621            1 :       pp_string(pp, "namelist ");
    4622            1 :       dump_decl_name (pp, t, flags);
    4623            1 :       pp_semicolon (pp);
    4624            1 :       return;
    4625              :     }
    4626              : 
    4627       453276 :   if (TREE_CODE (t) == TYPE_DECL)
    4628         1810 :     pp_string (pp, "typedef ");
    4629              : 
    4630       453276 :   if (HAS_RTL_P (t) && DECL_REGISTER (t))
    4631           39 :     pp_string (pp, "register ");
    4632              : 
    4633       453276 :   if (TREE_PUBLIC (t) && DECL_EXTERNAL (t))
    4634         5180 :     pp_string (pp, "extern ");
    4635       448096 :   else if (TREE_STATIC (t))
    4636        16845 :     pp_string (pp, "static ");
    4637              : 
    4638              :   /* Print the type and name.  */
    4639       453276 :   if (TREE_TYPE (t) && TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
    4640              :     {
    4641        26571 :       tree tmp;
    4642              : 
    4643              :       /* Print array's type.  */
    4644        26571 :       tmp = TREE_TYPE (t);
    4645        27417 :       while (TREE_CODE (TREE_TYPE (tmp)) == ARRAY_TYPE)
    4646          846 :         tmp = TREE_TYPE (tmp);
    4647        26571 :       dump_generic_node (pp, TREE_TYPE (tmp), spc, flags, false);
    4648              : 
    4649              :       /* Print variable's name.  */
    4650        26571 :       pp_space (pp);
    4651        26571 :       dump_generic_node (pp, t, spc, flags, false);
    4652              : 
    4653              :       /* Print the dimensions.  */
    4654        26571 :       tmp = TREE_TYPE (t);
    4655        53988 :       while (TREE_CODE (tmp) == ARRAY_TYPE)
    4656              :         {
    4657        27417 :           dump_array_domain (pp, TYPE_DOMAIN (tmp), spc, flags);
    4658        27417 :           tmp = TREE_TYPE (tmp);
    4659              :         }
    4660              :     }
    4661       426705 :   else if (TREE_CODE (t) == FUNCTION_DECL)
    4662              :     {
    4663         8893 :       dump_generic_node (pp, TREE_TYPE (TREE_TYPE (t)), spc, flags, false);
    4664         8893 :       pp_space (pp);
    4665         8893 :       dump_decl_name (pp, t, flags);
    4666         8893 :       dump_function_declaration (pp, TREE_TYPE (t), spc, flags);
    4667              :     }
    4668              :   else
    4669              :     {
    4670              :       /* Print type declaration.  */
    4671       417812 :       dump_generic_node (pp, TREE_TYPE (t), spc, flags, false);
    4672              : 
    4673              :       /* Print variable's name.  */
    4674       417812 :       pp_space (pp);
    4675       417812 :       dump_generic_node (pp, t, spc, flags, false);
    4676              :     }
    4677              : 
    4678       453276 :   if (VAR_P (t) && DECL_HARD_REGISTER (t))
    4679              :     {
    4680            5 :       pp_string (pp, " __asm__ ");
    4681            5 :       pp_left_paren (pp);
    4682            5 :       dump_generic_node (pp, DECL_ASSEMBLER_NAME (t), spc, flags, false);
    4683            5 :       pp_right_paren (pp);
    4684              :     }
    4685              : 
    4686              :   /* The initial value of a function serves to determine whether the function
    4687              :      is declared or defined.  So the following does not apply to function
    4688              :      nodes.  */
    4689       453276 :   if (TREE_CODE (t) != FUNCTION_DECL)
    4690              :     {
    4691              :       /* Print the initial value.  */
    4692       444383 :       if (DECL_INITIAL (t))
    4693              :         {
    4694        22051 :           pp_space (pp);
    4695        22051 :           pp_equal (pp);
    4696        22051 :           pp_space (pp);
    4697        22051 :           if (!(flags & TDF_SLIM))
    4698        21261 :             dump_generic_node (pp, DECL_INITIAL (t), spc, flags, false);
    4699              :           else
    4700          790 :             pp_string (pp, "<<< omitted >>>");
    4701              :         }
    4702              :     }
    4703              : 
    4704       453276 :   if (VAR_P (t) && DECL_HAS_VALUE_EXPR_P (t))
    4705              :     {
    4706          729 :       pp_string (pp, " [value-expr: ");
    4707          729 :       dump_generic_node (pp, DECL_VALUE_EXPR (t), spc, flags, false);
    4708          729 :       pp_right_bracket (pp);
    4709              :     }
    4710              : 
    4711       453276 :   pp_semicolon (pp);
    4712              : }
    4713              : 
    4714              : 
    4715              : /* Prints a structure: name, fields, and methods.
    4716              :    FIXME: Still incomplete.  */
    4717              : 
    4718              : static void
    4719          580 : print_struct_decl (pretty_printer *pp, const_tree node, int spc,
    4720              :                    dump_flags_t flags)
    4721              : {
    4722              :   /* Print the name of the structure.  */
    4723          580 :   if (TYPE_NAME (node))
    4724              :     {
    4725            0 :       INDENT (spc);
    4726            0 :       if (TREE_CODE (node) == RECORD_TYPE)
    4727            0 :         pp_string (pp, "struct ");
    4728            0 :       else if ((TREE_CODE (node) == UNION_TYPE
    4729            0 :                 || TREE_CODE (node) == QUAL_UNION_TYPE))
    4730            0 :         pp_string (pp, "union ");
    4731              : 
    4732            0 :       dump_generic_node (pp, TYPE_NAME (node), spc, TDF_NONE, false);
    4733              :     }
    4734              : 
    4735              :   /* Print the contents of the structure.  */
    4736          580 :   pp_newline (pp);
    4737         1908 :   INDENT (spc);
    4738          580 :   pp_left_brace (pp);
    4739          580 :   pp_newline (pp);
    4740              : 
    4741              :   /* Print the fields of the structure.  */
    4742          580 :   {
    4743          580 :     tree tmp;
    4744          580 :     tmp = TYPE_FIELDS (node);
    4745         3177 :     while (tmp)
    4746              :       {
    4747              :         /* Avoid to print recursively the structure.  */
    4748              :         /* FIXME : Not implemented correctly...,
    4749              :            what about the case when we have a cycle in the contain graph? ...
    4750              :            Maybe this could be solved by looking at the scope in which the
    4751              :            structure was declared.  */
    4752         2597 :         if (TREE_TYPE (tmp) != node
    4753         2597 :             && (TREE_CODE (TREE_TYPE (tmp)) != POINTER_TYPE
    4754           52 :                 || TREE_TYPE (TREE_TYPE (tmp)) != node))
    4755              :           {
    4756         2597 :             print_declaration (pp, tmp, spc+2, flags);
    4757         2597 :             pp_newline (pp);
    4758              :           }
    4759         2597 :         tmp = DECL_CHAIN (tmp);
    4760              :       }
    4761              :   }
    4762         1328 :   INDENT (spc);
    4763          580 :   pp_right_brace (pp);
    4764          580 : }
    4765              : 
    4766              : /* Return the priority of the operator CODE.
    4767              : 
    4768              :    From lowest to highest precedence with either left-to-right (L-R)
    4769              :    or right-to-left (R-L) associativity]:
    4770              : 
    4771              :      1  [L-R] ,
    4772              :      2  [R-L] = += -= *= /= %= &= ^= |= <<= >>=
    4773              :      3  [R-L] ?:
    4774              :      4  [L-R] ||
    4775              :      5  [L-R] &&
    4776              :      6  [L-R] |
    4777              :      7  [L-R] ^
    4778              :      8  [L-R] &
    4779              :      9  [L-R] == !=
    4780              :     10  [L-R] < <= > >=
    4781              :     11  [L-R] << >>
    4782              :     12  [L-R] + -
    4783              :     13  [L-R] * / %
    4784              :     14  [R-L] ! ~ ++ -- + - * & (type) sizeof
    4785              :     15  [L-R] fn() [] -> .
    4786              : 
    4787              :    unary +, - and * have higher precedence than the corresponding binary
    4788              :    operators.  */
    4789              : 
    4790              : int
    4791     22184008 : op_code_prio (enum tree_code code)
    4792              : {
    4793     22184008 :   switch (code)
    4794              :     {
    4795              :     case TREE_LIST:
    4796              :     case COMPOUND_EXPR:
    4797              :     case BIND_EXPR:
    4798              :       return 1;
    4799              : 
    4800              :     case MODIFY_EXPR:
    4801              :     case INIT_EXPR:
    4802              :       return 2;
    4803              : 
    4804              :     case COND_EXPR:
    4805              :       return 3;
    4806              : 
    4807              :     case TRUTH_OR_EXPR:
    4808              :     case TRUTH_ORIF_EXPR:
    4809              :       return 4;
    4810              : 
    4811              :     case TRUTH_AND_EXPR:
    4812              :     case TRUTH_ANDIF_EXPR:
    4813              :       return 5;
    4814              : 
    4815              :     case BIT_IOR_EXPR:
    4816              :       return 6;
    4817              : 
    4818              :     case BIT_XOR_EXPR:
    4819              :     case TRUTH_XOR_EXPR:
    4820              :       return 7;
    4821              : 
    4822              :     case BIT_AND_EXPR:
    4823              :       return 8;
    4824              : 
    4825              :     case EQ_EXPR:
    4826              :     case NE_EXPR:
    4827              :       return 9;
    4828              : 
    4829              :     case UNLT_EXPR:
    4830              :     case UNLE_EXPR:
    4831              :     case UNGT_EXPR:
    4832              :     case UNGE_EXPR:
    4833              :     case UNEQ_EXPR:
    4834              :     case LTGT_EXPR:
    4835              :     case ORDERED_EXPR:
    4836              :     case UNORDERED_EXPR:
    4837              :     case LT_EXPR:
    4838              :     case LE_EXPR:
    4839              :     case GT_EXPR:
    4840              :     case GE_EXPR:
    4841              :       return 10;
    4842              : 
    4843              :     case LSHIFT_EXPR:
    4844              :     case RSHIFT_EXPR:
    4845              :     case LROTATE_EXPR:
    4846              :     case RROTATE_EXPR:
    4847              :     case VEC_WIDEN_LSHIFT_HI_EXPR:
    4848              :     case VEC_WIDEN_LSHIFT_LO_EXPR:
    4849              :     case WIDEN_LSHIFT_EXPR:
    4850              :       return 11;
    4851              : 
    4852              :     case WIDEN_SUM_EXPR:
    4853              :     case PLUS_EXPR:
    4854              :     case POINTER_PLUS_EXPR:
    4855              :     case POINTER_DIFF_EXPR:
    4856              :     case MINUS_EXPR:
    4857              :       return 12;
    4858              : 
    4859              :     case VEC_WIDEN_MULT_HI_EXPR:
    4860              :     case VEC_WIDEN_MULT_LO_EXPR:
    4861              :     case WIDEN_MULT_EXPR:
    4862              :     case DOT_PROD_EXPR:
    4863              :     case WIDEN_MULT_PLUS_EXPR:
    4864              :     case WIDEN_MULT_MINUS_EXPR:
    4865              :     case MULT_EXPR:
    4866              :     case MULT_HIGHPART_EXPR:
    4867              :     case TRUNC_DIV_EXPR:
    4868              :     case CEIL_DIV_EXPR:
    4869              :     case FLOOR_DIV_EXPR:
    4870              :     case ROUND_DIV_EXPR:
    4871              :     case RDIV_EXPR:
    4872              :     case EXACT_DIV_EXPR:
    4873              :     case TRUNC_MOD_EXPR:
    4874              :     case CEIL_MOD_EXPR:
    4875              :     case FLOOR_MOD_EXPR:
    4876              :     case ROUND_MOD_EXPR:
    4877              :       return 13;
    4878              : 
    4879              :     case TRUTH_NOT_EXPR:
    4880              :     case BIT_NOT_EXPR:
    4881              :     case POSTINCREMENT_EXPR:
    4882              :     case POSTDECREMENT_EXPR:
    4883              :     case PREINCREMENT_EXPR:
    4884              :     case PREDECREMENT_EXPR:
    4885              :     case NEGATE_EXPR:
    4886              :     case INDIRECT_REF:
    4887              :     case ADDR_EXPR:
    4888              :     case FLOAT_EXPR:
    4889              :     CASE_CONVERT:
    4890              :     case FIX_TRUNC_EXPR:
    4891              :     case TARGET_EXPR:
    4892              :       return 14;
    4893              : 
    4894              :     case CALL_EXPR:
    4895              :     case ARRAY_REF:
    4896              :     case ARRAY_RANGE_REF:
    4897              :     case COMPONENT_REF:
    4898              :       return 15;
    4899              : 
    4900              :       /* Special expressions.  */
    4901              :     case MIN_EXPR:
    4902              :     case MAX_EXPR:
    4903              :     case ABS_EXPR:
    4904              :     case REALPART_EXPR:
    4905              :     case IMAGPART_EXPR:
    4906              :     case VEC_UNPACK_HI_EXPR:
    4907              :     case VEC_UNPACK_LO_EXPR:
    4908              :     case VEC_UNPACK_FLOAT_HI_EXPR:
    4909              :     case VEC_UNPACK_FLOAT_LO_EXPR:
    4910              :     case VEC_UNPACK_FIX_TRUNC_HI_EXPR:
    4911              :     case VEC_UNPACK_FIX_TRUNC_LO_EXPR:
    4912              :     case VEC_PACK_TRUNC_EXPR:
    4913              :     case VEC_PACK_SAT_EXPR:
    4914              :       return 16;
    4915              : 
    4916              :     default:
    4917              :       /* Return an arbitrarily high precedence to avoid surrounding single
    4918              :          VAR_DECLs in ()s.  */
    4919              :       return 9999;
    4920              :     }
    4921              : }
    4922              : 
    4923              : /* Return the priority of the operator OP.  */
    4924              : 
    4925              : int
    4926     17645619 : op_prio (const_tree op)
    4927              : {
    4928     17662567 :   enum tree_code code;
    4929              : 
    4930     17662567 :   if (op == NULL)
    4931              :     return 9999;
    4932              : 
    4933     17662345 :   code = TREE_CODE (op);
    4934     17662345 :   if (code == SAVE_EXPR || code == NON_LVALUE_EXPR)
    4935        16948 :     return op_prio (TREE_OPERAND (op, 0));
    4936              : 
    4937     17645397 :   return op_code_prio (code);
    4938              : }
    4939              : 
    4940              : /* Return the symbol associated with operator CODE.  */
    4941              : 
    4942              : const char *
    4943      2782392 : op_symbol_code (enum tree_code code, dump_flags_t flags)
    4944              : {
    4945      2782392 :   switch (code)
    4946              :     {
    4947              :     case MODIFY_EXPR:
    4948              :       return "=";
    4949              : 
    4950         2519 :     case TRUTH_OR_EXPR:
    4951         2519 :     case TRUTH_ORIF_EXPR:
    4952         2519 :       return "||";
    4953              : 
    4954         2808 :     case TRUTH_AND_EXPR:
    4955         2808 :     case TRUTH_ANDIF_EXPR:
    4956         2808 :       return "&&";
    4957              : 
    4958        36112 :     case BIT_IOR_EXPR:
    4959        36112 :       return "|";
    4960              : 
    4961        23884 :     case TRUTH_XOR_EXPR:
    4962        23884 :     case BIT_XOR_EXPR:
    4963        23884 :       return "^";
    4964              : 
    4965       385497 :     case ADDR_EXPR:
    4966       385497 :     case BIT_AND_EXPR:
    4967       385497 :       return "&";
    4968              : 
    4969           42 :     case ORDERED_EXPR:
    4970           42 :       return (flags & TDF_GIMPLE) ? "__ORDERED" : "ord";
    4971           63 :     case UNORDERED_EXPR:
    4972           63 :       return (flags & TDF_GIMPLE) ? "__UNORDERED" : "unord";
    4973              : 
    4974        65272 :     case EQ_EXPR:
    4975        65272 :       return "==";
    4976          151 :     case UNEQ_EXPR:
    4977          151 :       return (flags & TDF_GIMPLE) ? "__UNEQ" : "u==";
    4978              : 
    4979       204144 :     case NE_EXPR:
    4980       204144 :       return "!=";
    4981              : 
    4982        72412 :     case LT_EXPR:
    4983        72412 :       return "<";
    4984          190 :     case UNLT_EXPR:
    4985          190 :       return (flags & TDF_GIMPLE) ? "__UNLT" : "u<";
    4986              : 
    4987        31659 :     case LE_EXPR:
    4988        31659 :       return "<=";
    4989          224 :     case UNLE_EXPR:
    4990          224 :       return (flags & TDF_GIMPLE) ? "__UNLE" : "u<=";
    4991              : 
    4992        57782 :     case GT_EXPR:
    4993        57782 :       return ">";
    4994          235 :     case UNGT_EXPR:
    4995          235 :       return (flags & TDF_GIMPLE) ? "__UNGT" : "u>";
    4996              : 
    4997        10126 :     case GE_EXPR:
    4998        10126 :       return ">=";
    4999          179 :     case UNGE_EXPR:
    5000          179 :       return (flags & TDF_GIMPLE) ? "__UNGE" : "u>=";
    5001              : 
    5002           33 :     case LTGT_EXPR:
    5003           33 :       return (flags & TDF_GIMPLE) ? "__LTGT" : "<>";
    5004              : 
    5005        44698 :     case LSHIFT_EXPR:
    5006        44698 :       return "<<";
    5007              : 
    5008       100960 :     case RSHIFT_EXPR:
    5009       100960 :       return ">>";
    5010              : 
    5011          785 :     case LROTATE_EXPR:
    5012          785 :       return (flags & TDF_GIMPLE) ? "__ROTATE_LEFT" : "r<<";
    5013              : 
    5014         1381 :     case RROTATE_EXPR:
    5015         1381 :       return (flags & TDF_GIMPLE) ? "__ROTATE_RIGHT" : "r>>";
    5016              : 
    5017            0 :     case WIDEN_LSHIFT_EXPR:
    5018            0 :       return "w<<";
    5019              : 
    5020              :     case POINTER_PLUS_EXPR:
    5021              :       return "+";
    5022              : 
    5023              :     case PLUS_EXPR:
    5024              :       return "+";
    5025              : 
    5026            0 :     case WIDEN_SUM_EXPR:
    5027            0 :       return "w+";
    5028              : 
    5029        11121 :     case WIDEN_MULT_EXPR:
    5030        11121 :       return "w*";
    5031              : 
    5032         7633 :     case MULT_HIGHPART_EXPR:
    5033         7633 :       return (flags & TDF_GIMPLE) ? "__MULT_HIGHPART" : "h*";
    5034              : 
    5035       196988 :     case NEGATE_EXPR:
    5036       196988 :     case MINUS_EXPR:
    5037       196988 :     case POINTER_DIFF_EXPR:
    5038       196988 :       return "-";
    5039              : 
    5040          726 :     case BIT_NOT_EXPR:
    5041          726 :       return "~";
    5042              : 
    5043          521 :     case TRUTH_NOT_EXPR:
    5044          521 :       return "!";
    5045              : 
    5046       371979 :     case MULT_EXPR:
    5047       371979 :     case INDIRECT_REF:
    5048       371979 :       return "*";
    5049              : 
    5050        14145 :     case TRUNC_DIV_EXPR:
    5051        14145 :     case RDIV_EXPR:
    5052        14145 :       return "/";
    5053              : 
    5054          135 :     case CEIL_DIV_EXPR:
    5055          135 :       return "/[cl]";
    5056              : 
    5057          217 :     case FLOOR_DIV_EXPR:
    5058          217 :       return "/[fl]";
    5059              : 
    5060          126 :     case ROUND_DIV_EXPR:
    5061          126 :       return "/[rd]";
    5062              : 
    5063          448 :     case EXACT_DIV_EXPR:
    5064          448 :       return "/[ex]";
    5065              : 
    5066         6940 :     case TRUNC_MOD_EXPR:
    5067         6940 :       return "%";
    5068              : 
    5069          126 :     case CEIL_MOD_EXPR:
    5070          126 :       return "%[cl]";
    5071              : 
    5072           63 :     case FLOOR_MOD_EXPR:
    5073           63 :       return "%[fl]";
    5074              : 
    5075          126 :     case ROUND_MOD_EXPR:
    5076          126 :       return "%[rd]";
    5077              : 
    5078           53 :     case PREDECREMENT_EXPR:
    5079           53 :       return " --";
    5080              : 
    5081          538 :     case PREINCREMENT_EXPR:
    5082          538 :       return " ++";
    5083              : 
    5084           10 :     case POSTDECREMENT_EXPR:
    5085           10 :       return "-- ";
    5086              : 
    5087         1525 :     case POSTINCREMENT_EXPR:
    5088         1525 :       return "++ ";
    5089              : 
    5090           24 :     case MAX_EXPR:
    5091           24 :       return "max";
    5092              : 
    5093           22 :     case MIN_EXPR:
    5094           22 :       return "min";
    5095              : 
    5096         1422 :     default:
    5097         1422 :       return "<<< ??? >>>";
    5098              :     }
    5099              : }
    5100              : 
    5101              : /* Return the symbol associated with operator OP.  */
    5102              : 
    5103              : static const char *
    5104       597950 : op_symbol (const_tree op, dump_flags_t flags)
    5105              : {
    5106       597950 :   return op_symbol_code (TREE_CODE (op), flags);
    5107              : }
    5108              : 
    5109              : /* Prints the name of a call.  NODE is the CALL_EXPR_FN of a CALL_EXPR or
    5110              :    the gimple_call_fn of a GIMPLE_CALL.  */
    5111              : 
    5112              : void
    5113       186366 : print_call_name (pretty_printer *pp, tree node, dump_flags_t flags)
    5114              : {
    5115       186366 :   tree op0 = node;
    5116       186366 :   int spc = 0;
    5117              : 
    5118       186366 :   if (TREE_CODE (op0) == NON_LVALUE_EXPR)
    5119            4 :     op0 = TREE_OPERAND (op0, 0);
    5120              : 
    5121       186366 :  again:
    5122       368364 :   switch (TREE_CODE (op0))
    5123              :     {
    5124       180910 :     case VAR_DECL:
    5125       180910 :     case PARM_DECL:
    5126       180910 :     case FUNCTION_DECL:
    5127       180910 :       dump_function_name (pp, op0, flags);
    5128       180910 :       break;
    5129              : 
    5130       181998 :     case ADDR_EXPR:
    5131       181998 :     case INDIRECT_REF:
    5132       181998 :     CASE_CONVERT:
    5133       181998 :       op0 = TREE_OPERAND (op0, 0);
    5134       181998 :       goto again;
    5135              : 
    5136            0 :     case COND_EXPR:
    5137            0 :       pp_left_paren (pp);
    5138            0 :       dump_generic_node (pp, TREE_OPERAND (op0, 0), 0, flags, false);
    5139            0 :       pp_string (pp, ") ? ");
    5140            0 :       dump_generic_node (pp, TREE_OPERAND (op0, 1), 0, flags, false);
    5141            0 :       pp_string (pp, " : ");
    5142            0 :       dump_generic_node (pp, TREE_OPERAND (op0, 2), 0, flags, false);
    5143            0 :       break;
    5144              : 
    5145            0 :     case ARRAY_REF:
    5146            0 :       if (VAR_P (TREE_OPERAND (op0, 0)))
    5147            0 :         dump_function_name (pp, TREE_OPERAND (op0, 0), flags);
    5148              :       else
    5149            0 :         dump_generic_node (pp, op0, 0, flags, false);
    5150              :       break;
    5151              : 
    5152            0 :     case MEM_REF:
    5153            0 :       if (integer_zerop (TREE_OPERAND (op0, 1)))
    5154              :         {
    5155            0 :           op0 = TREE_OPERAND (op0, 0);
    5156            0 :           goto again;
    5157              :         }
    5158              :       /* Fallthru.  */
    5159         5454 :     case COMPONENT_REF:
    5160         5454 :     case SSA_NAME:
    5161         5454 :     case OBJ_TYPE_REF:
    5162         5454 :       dump_generic_node (pp, op0, 0, flags, false);
    5163         5454 :       break;
    5164              : 
    5165            2 :     default:
    5166            2 :       NIY;
    5167              :     }
    5168       186366 : }
    5169              : 
    5170              : /* Print the first N characters in the array STR, replacing non-printable
    5171              :    characters (including embedded nuls) with unambiguous escape sequences.  */
    5172              : 
    5173              : void
    5174        61659 : pretty_print_string (pretty_printer *pp, const char *str, size_t n)
    5175              : {
    5176        61659 :   if (str == NULL)
    5177              :     return;
    5178              : 
    5179      1475352 :   for ( ; n; --n, ++str)
    5180              :     {
    5181      1413693 :       switch (str[0])
    5182              :         {
    5183           26 :         case '\b':
    5184           26 :           pp_string (pp, "\\b");
    5185           26 :           break;
    5186              : 
    5187           30 :         case '\f':
    5188           30 :           pp_string (pp, "\\f");
    5189           30 :           break;
    5190              : 
    5191         2942 :         case '\n':
    5192         2942 :           pp_string (pp, "\\n");
    5193         2942 :           break;
    5194              : 
    5195           18 :         case '\r':
    5196           18 :           pp_string (pp, "\\r");
    5197           18 :           break;
    5198              : 
    5199           44 :         case '\t':
    5200           44 :           pp_string (pp, "\\t");
    5201           44 :           break;
    5202              : 
    5203           20 :         case '\v':
    5204           20 :           pp_string (pp, "\\v");
    5205           20 :           break;
    5206              : 
    5207           51 :         case '\\':
    5208           51 :           pp_string (pp, "\\\\");
    5209           51 :           break;
    5210              : 
    5211          146 :         case '\"':
    5212          146 :           pp_string (pp, "\\\"");
    5213          146 :           break;
    5214              : 
    5215        14899 :         case '\'':
    5216        14899 :           pp_string (pp, "\\'");
    5217        14899 :           break;
    5218              : 
    5219      1395517 :         default:
    5220      1395517 :           if (str[0] || n > 1)
    5221              :             {
    5222      1355119 :               if (!ISPRINT (str[0]))
    5223              :                 {
    5224         6914 :                   char buf[5];
    5225         6914 :                   sprintf (buf, "\\x%02x", (unsigned char)str[0]);
    5226         6914 :                   pp_string (pp, buf);
    5227              :                 }
    5228              :               else
    5229      1348205 :                 pp_character (pp, str[0]);
    5230              :               break;
    5231              :             }
    5232              :         }
    5233              :     }
    5234              : }
    5235              : 
    5236              : static void
    5237      6213858 : maybe_init_pretty_print (FILE *file)
    5238              : {
    5239      6213858 :   if (!tree_pp)
    5240              :     {
    5241        18950 :       tree_pp = new pretty_printer ();
    5242        18950 :       pp_needs_newline (tree_pp) = true;
    5243        18950 :       pp_translate_identifiers (tree_pp) = false;
    5244              :     }
    5245              : 
    5246      6213858 :   tree_pp->set_output_stream (file);
    5247      6213858 : }
    5248              : 
    5249              : static void
    5250       581171 : newline_and_indent (pretty_printer *pp, int spc)
    5251              : {
    5252       581171 :   pp_newline (pp);
    5253      7137438 :   INDENT (spc);
    5254       581171 : }
    5255              : 
    5256              : /* Print the identifier ID to PRETTY-PRINTER.  */
    5257              : 
    5258              : void
    5259     15614277 : pp_tree_identifier (pretty_printer *pp, tree id)
    5260              : {
    5261     15614277 :   if (pp_translate_identifiers (pp))
    5262              :     {
    5263      8939589 :       const char *text = identifier_to_locale (IDENTIFIER_POINTER (id));
    5264      8939589 :       pp_append_text (pp, text, text + strlen (text));
    5265              :     }
    5266              :   else
    5267      6674688 :     pp_append_text (pp, IDENTIFIER_POINTER (id),
    5268      6674688 :                     IDENTIFIER_POINTER (id) + IDENTIFIER_LENGTH (id));
    5269     15614277 : }
    5270              : 
    5271              : /* A helper function that is used to dump function information before the
    5272              :    function dump.  */
    5273              : 
    5274              : void
    5275        61232 : dump_function_header (FILE *dump_file, tree fdecl, dump_flags_t flags)
    5276              : {
    5277        61232 :   const char *dname, *aname;
    5278        61232 :   struct cgraph_node *node = cgraph_node::get (fdecl);
    5279        61232 :   struct function *fun = DECL_STRUCT_FUNCTION (fdecl);
    5280              : 
    5281        61232 :   dname = lang_hooks.decl_printable_name (fdecl, 1);
    5282              : 
    5283        61232 :   if (DECL_ASSEMBLER_NAME_SET_P (fdecl))
    5284        61228 :     aname = (IDENTIFIER_POINTER
    5285              :              (DECL_ASSEMBLER_NAME (fdecl)));
    5286              :   else
    5287              :     aname = "<unset-asm-name>";
    5288              : 
    5289        61232 :   fprintf (dump_file, "\n;; Function %s (%s, funcdef_no=%d",
    5290              :            dname, aname, fun->funcdef_no);
    5291        61232 :   if (!(flags & TDF_NOUID))
    5292        57253 :     fprintf (dump_file, ", decl_uid=%d", DECL_UID (fdecl));
    5293        61232 :   if (node)
    5294              :     {
    5295        61232 :       fprintf (dump_file, ", cgraph_uid=%d", node->get_uid ());
    5296        61232 :       fprintf (dump_file, ", symbol_order=%d)%s\n\n", node->order,
    5297        61232 :                node->frequency == NODE_FREQUENCY_HOT
    5298              :                ? " (hot)"
    5299              :                : node->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED
    5300        61142 :                ? " (unlikely executed)"
    5301              :                : node->frequency == NODE_FREQUENCY_EXECUTED_ONCE
    5302        60841 :                ? " (executed once)"
    5303              :                : "");
    5304              :     }
    5305              :   else
    5306            0 :     fprintf (dump_file, ")\n\n");
    5307        61232 : }
    5308              : 
    5309              : #if __GNUC__ >= 10
    5310              : #  pragma GCC diagnostic pop
    5311              : #endif
        

Generated by: LCOV version 2.5.0-beta

LCOV profile is generated on x86_64 machine using following configure options: configure --disable-bootstrap --enable-coverage=opt --enable-languages=c,c++,fortran,go,jit,lto,rust,m2 --enable-host-shared. GCC test suite is run with the built compiler.