OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [print-rtl.c] - Diff between revs 154 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 154 Rev 816
/* Print RTL for GCC.
/* Print RTL for GCC.
   Copyright (C) 1987, 1988, 1992, 1997, 1998, 1999, 2000, 2002, 2003,
   Copyright (C) 1987, 1988, 1992, 1997, 1998, 1999, 2000, 2002, 2003,
   2004, 2005, 2007
   2004, 2005, 2007
   Free Software Foundation, Inc.
   Free Software Foundation, Inc.
 
 
This file is part of GCC.
This file is part of GCC.
 
 
GCC is free software; you can redistribute it and/or modify it under
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
Software Foundation; either version 3, or (at your option) any later
version.
version.
 
 
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.
for more details.
 
 
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */
<http://www.gnu.org/licenses/>.  */
 
 
/* This file is compiled twice: once for the generator programs,
/* This file is compiled twice: once for the generator programs,
   once for the compiler.  */
   once for the compiler.  */
#ifdef GENERATOR_FILE
#ifdef GENERATOR_FILE
#include "bconfig.h"
#include "bconfig.h"
#else
#else
#include "config.h"
#include "config.h"
#endif
#endif
 
 
#include "system.h"
#include "system.h"
#include "coretypes.h"
#include "coretypes.h"
#include "tm.h"
#include "tm.h"
#include "rtl.h"
#include "rtl.h"
 
 
/* These headers all define things which are not available in
/* These headers all define things which are not available in
   generator programs.  */
   generator programs.  */
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
#include "tree.h"
#include "tree.h"
#include "real.h"
#include "real.h"
#include "flags.h"
#include "flags.h"
#include "hard-reg-set.h"
#include "hard-reg-set.h"
#include "basic-block.h"
#include "basic-block.h"
#endif
#endif
 
 
static FILE *outfile;
static FILE *outfile;
 
 
static int sawclose = 0;
static int sawclose = 0;
 
 
static int indent;
static int indent;
 
 
static void print_rtx (rtx);
static void print_rtx (rtx);
 
 
/* String printed at beginning of each RTL when it is dumped.
/* String printed at beginning of each RTL when it is dumped.
   This string is set to ASM_COMMENT_START when the RTL is dumped in
   This string is set to ASM_COMMENT_START when the RTL is dumped in
   the assembly output file.  */
   the assembly output file.  */
const char *print_rtx_head = "";
const char *print_rtx_head = "";
 
 
/* Nonzero means suppress output of instruction numbers and line number
/* Nonzero means suppress output of instruction numbers and line number
   notes in debugging dumps.
   notes in debugging dumps.
   This must be defined here so that programs like gencodes can be linked.  */
   This must be defined here so that programs like gencodes can be linked.  */
int flag_dump_unnumbered = 0;
int flag_dump_unnumbered = 0;
 
 
/* Nonzero means use simplified format without flags, modes, etc.  */
/* Nonzero means use simplified format without flags, modes, etc.  */
int flag_simple = 0;
int flag_simple = 0;
 
 
/* Nonzero if we are dumping graphical description.  */
/* Nonzero if we are dumping graphical description.  */
int dump_for_graph;
int dump_for_graph;
 
 
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
static void
static void
print_decl_name (FILE *outfile, tree node)
print_decl_name (FILE *outfile, tree node)
{
{
  if (DECL_NAME (node))
  if (DECL_NAME (node))
    fputs (IDENTIFIER_POINTER (DECL_NAME (node)), outfile);
    fputs (IDENTIFIER_POINTER (DECL_NAME (node)), outfile);
  else
  else
    {
    {
      if (TREE_CODE (node) == LABEL_DECL && LABEL_DECL_UID (node) != -1)
      if (TREE_CODE (node) == LABEL_DECL && LABEL_DECL_UID (node) != -1)
        fprintf (outfile, "L." HOST_WIDE_INT_PRINT_DEC, LABEL_DECL_UID (node));
        fprintf (outfile, "L." HOST_WIDE_INT_PRINT_DEC, LABEL_DECL_UID (node));
      else
      else
        {
        {
          char c = TREE_CODE (node) == CONST_DECL ? 'C' : 'D';
          char c = TREE_CODE (node) == CONST_DECL ? 'C' : 'D';
          fprintf (outfile, "%c.%u", c, DECL_UID (node));
          fprintf (outfile, "%c.%u", c, DECL_UID (node));
        }
        }
    }
    }
}
}
 
 
void
void
print_mem_expr (FILE *outfile, tree expr)
print_mem_expr (FILE *outfile, tree expr)
{
{
  if (TREE_CODE (expr) == COMPONENT_REF)
  if (TREE_CODE (expr) == COMPONENT_REF)
    {
    {
      if (TREE_OPERAND (expr, 0))
      if (TREE_OPERAND (expr, 0))
        print_mem_expr (outfile, TREE_OPERAND (expr, 0));
        print_mem_expr (outfile, TREE_OPERAND (expr, 0));
      else
      else
        fputs (" <variable>", outfile);
        fputs (" <variable>", outfile);
      fputc ('.', outfile);
      fputc ('.', outfile);
      print_decl_name (outfile, TREE_OPERAND (expr, 1));
      print_decl_name (outfile, TREE_OPERAND (expr, 1));
    }
    }
  else if (TREE_CODE (expr) == INDIRECT_REF)
  else if (TREE_CODE (expr) == INDIRECT_REF)
    {
    {
      fputs (" (*", outfile);
      fputs (" (*", outfile);
      print_mem_expr (outfile, TREE_OPERAND (expr, 0));
      print_mem_expr (outfile, TREE_OPERAND (expr, 0));
      fputs (")", outfile);
      fputs (")", outfile);
    }
    }
  else if (TREE_CODE (expr) == ALIGN_INDIRECT_REF)
  else if (TREE_CODE (expr) == ALIGN_INDIRECT_REF)
    {
    {
      fputs (" (A*", outfile);
      fputs (" (A*", outfile);
      print_mem_expr (outfile, TREE_OPERAND (expr, 0));
      print_mem_expr (outfile, TREE_OPERAND (expr, 0));
      fputs (")", outfile);
      fputs (")", outfile);
    }
    }
  else if (TREE_CODE (expr) == MISALIGNED_INDIRECT_REF)
  else if (TREE_CODE (expr) == MISALIGNED_INDIRECT_REF)
    {
    {
      fputs (" (M*", outfile);
      fputs (" (M*", outfile);
      print_mem_expr (outfile, TREE_OPERAND (expr, 0));
      print_mem_expr (outfile, TREE_OPERAND (expr, 0));
      fputs (")", outfile);
      fputs (")", outfile);
    }
    }
  else if (TREE_CODE (expr) == RESULT_DECL)
  else if (TREE_CODE (expr) == RESULT_DECL)
    fputs (" <result>", outfile);
    fputs (" <result>", outfile);
  else
  else
    {
    {
      fputc (' ', outfile);
      fputc (' ', outfile);
      print_decl_name (outfile, expr);
      print_decl_name (outfile, expr);
    }
    }
}
}
#endif
#endif
 
 
/* Print IN_RTX onto OUTFILE.  This is the recursive part of printing.  */
/* Print IN_RTX onto OUTFILE.  This is the recursive part of printing.  */
 
 
static void
static void
print_rtx (rtx in_rtx)
print_rtx (rtx in_rtx)
{
{
  int i = 0;
  int i = 0;
  int j;
  int j;
  const char *format_ptr;
  const char *format_ptr;
  int is_insn;
  int is_insn;
 
 
  if (sawclose)
  if (sawclose)
    {
    {
      if (flag_simple)
      if (flag_simple)
        fputc (' ', outfile);
        fputc (' ', outfile);
      else
      else
        fprintf (outfile, "\n%s%*s", print_rtx_head, indent * 2, "");
        fprintf (outfile, "\n%s%*s", print_rtx_head, indent * 2, "");
      sawclose = 0;
      sawclose = 0;
    }
    }
 
 
  if (in_rtx == 0)
  if (in_rtx == 0)
    {
    {
      fputs ("(nil)", outfile);
      fputs ("(nil)", outfile);
      sawclose = 1;
      sawclose = 1;
      return;
      return;
    }
    }
  else if (GET_CODE (in_rtx) > NUM_RTX_CODE)
  else if (GET_CODE (in_rtx) > NUM_RTX_CODE)
    {
    {
       fprintf (outfile, "(??? bad code %d\n)", GET_CODE (in_rtx));
       fprintf (outfile, "(??? bad code %d\n)", GET_CODE (in_rtx));
       sawclose = 1;
       sawclose = 1;
       return;
       return;
    }
    }
 
 
  is_insn = INSN_P (in_rtx);
  is_insn = INSN_P (in_rtx);
 
 
  /* When printing in VCG format we write INSNs, NOTE, LABEL, and BARRIER
  /* When printing in VCG format we write INSNs, NOTE, LABEL, and BARRIER
     in separate nodes and therefore have to handle them special here.  */
     in separate nodes and therefore have to handle them special here.  */
  if (dump_for_graph
  if (dump_for_graph
      && (is_insn || NOTE_P (in_rtx)
      && (is_insn || NOTE_P (in_rtx)
          || LABEL_P (in_rtx) || BARRIER_P (in_rtx)))
          || LABEL_P (in_rtx) || BARRIER_P (in_rtx)))
    {
    {
      i = 3;
      i = 3;
      indent = 0;
      indent = 0;
    }
    }
  else
  else
    {
    {
      /* Print name of expression code.  */
      /* Print name of expression code.  */
      if (flag_simple && GET_CODE (in_rtx) == CONST_INT)
      if (flag_simple && GET_CODE (in_rtx) == CONST_INT)
        fputc ('(', outfile);
        fputc ('(', outfile);
      else
      else
        fprintf (outfile, "(%s", GET_RTX_NAME (GET_CODE (in_rtx)));
        fprintf (outfile, "(%s", GET_RTX_NAME (GET_CODE (in_rtx)));
 
 
      if (! flag_simple)
      if (! flag_simple)
        {
        {
          if (RTX_FLAG (in_rtx, in_struct))
          if (RTX_FLAG (in_rtx, in_struct))
            fputs ("/s", outfile);
            fputs ("/s", outfile);
 
 
          if (RTX_FLAG (in_rtx, volatil))
          if (RTX_FLAG (in_rtx, volatil))
            fputs ("/v", outfile);
            fputs ("/v", outfile);
 
 
          if (RTX_FLAG (in_rtx, unchanging))
          if (RTX_FLAG (in_rtx, unchanging))
            fputs ("/u", outfile);
            fputs ("/u", outfile);
 
 
          if (RTX_FLAG (in_rtx, frame_related))
          if (RTX_FLAG (in_rtx, frame_related))
            fputs ("/f", outfile);
            fputs ("/f", outfile);
 
 
          if (RTX_FLAG (in_rtx, jump))
          if (RTX_FLAG (in_rtx, jump))
            fputs ("/j", outfile);
            fputs ("/j", outfile);
 
 
          if (RTX_FLAG (in_rtx, call))
          if (RTX_FLAG (in_rtx, call))
            fputs ("/c", outfile);
            fputs ("/c", outfile);
 
 
          if (RTX_FLAG (in_rtx, return_val))
          if (RTX_FLAG (in_rtx, return_val))
            fputs ("/i", outfile);
            fputs ("/i", outfile);
 
 
          /* Print REG_NOTE names for EXPR_LIST and INSN_LIST.  */
          /* Print REG_NOTE names for EXPR_LIST and INSN_LIST.  */
          if (GET_CODE (in_rtx) == EXPR_LIST
          if (GET_CODE (in_rtx) == EXPR_LIST
              || GET_CODE (in_rtx) == INSN_LIST)
              || GET_CODE (in_rtx) == INSN_LIST)
            fprintf (outfile, ":%s",
            fprintf (outfile, ":%s",
                     GET_REG_NOTE_NAME (GET_MODE (in_rtx)));
                     GET_REG_NOTE_NAME (GET_MODE (in_rtx)));
 
 
          /* For other rtl, print the mode if it's not VOID.  */
          /* For other rtl, print the mode if it's not VOID.  */
          else if (GET_MODE (in_rtx) != VOIDmode)
          else if (GET_MODE (in_rtx) != VOIDmode)
            fprintf (outfile, ":%s", GET_MODE_NAME (GET_MODE (in_rtx)));
            fprintf (outfile, ":%s", GET_MODE_NAME (GET_MODE (in_rtx)));
        }
        }
    }
    }
 
 
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
  if (GET_CODE (in_rtx) == CONST_DOUBLE && FLOAT_MODE_P (GET_MODE (in_rtx)))
  if (GET_CODE (in_rtx) == CONST_DOUBLE && FLOAT_MODE_P (GET_MODE (in_rtx)))
    i = 5;
    i = 5;
#endif
#endif
 
 
  /* Get the format string and skip the first elements if we have handled
  /* Get the format string and skip the first elements if we have handled
     them already.  */
     them already.  */
  format_ptr = GET_RTX_FORMAT (GET_CODE (in_rtx)) + i;
  format_ptr = GET_RTX_FORMAT (GET_CODE (in_rtx)) + i;
  for (; i < GET_RTX_LENGTH (GET_CODE (in_rtx)); i++)
  for (; i < GET_RTX_LENGTH (GET_CODE (in_rtx)); i++)
    switch (*format_ptr++)
    switch (*format_ptr++)
      {
      {
        const char *str;
        const char *str;
 
 
      case 'T':
      case 'T':
        str = XTMPL (in_rtx, i);
        str = XTMPL (in_rtx, i);
        goto string;
        goto string;
 
 
      case 'S':
      case 'S':
      case 's':
      case 's':
        str = XSTR (in_rtx, i);
        str = XSTR (in_rtx, i);
      string:
      string:
 
 
        if (str == 0)
        if (str == 0)
          fputs (dump_for_graph ? " \\\"\\\"" : " \"\"", outfile);
          fputs (dump_for_graph ? " \\\"\\\"" : " \"\"", outfile);
        else
        else
          {
          {
            if (dump_for_graph)
            if (dump_for_graph)
              fprintf (outfile, " (\\\"%s\\\")", str);
              fprintf (outfile, " (\\\"%s\\\")", str);
            else
            else
              fprintf (outfile, " (\"%s\")", str);
              fprintf (outfile, " (\"%s\")", str);
          }
          }
        sawclose = 1;
        sawclose = 1;
        break;
        break;
 
 
        /* 0 indicates a field for internal use that should not be printed.
        /* 0 indicates a field for internal use that should not be printed.
           An exception is the third field of a NOTE, where it indicates
           An exception is the third field of a NOTE, where it indicates
           that the field has several different valid contents.  */
           that the field has several different valid contents.  */
      case '0':
      case '0':
        if (i == 1 && REG_P (in_rtx))
        if (i == 1 && REG_P (in_rtx))
          {
          {
            if (REGNO (in_rtx) != ORIGINAL_REGNO (in_rtx))
            if (REGNO (in_rtx) != ORIGINAL_REGNO (in_rtx))
              fprintf (outfile, " [%d]", ORIGINAL_REGNO (in_rtx));
              fprintf (outfile, " [%d]", ORIGINAL_REGNO (in_rtx));
          }
          }
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
        else if (i == 1 && GET_CODE (in_rtx) == SYMBOL_REF)
        else if (i == 1 && GET_CODE (in_rtx) == SYMBOL_REF)
          {
          {
            int flags = SYMBOL_REF_FLAGS (in_rtx);
            int flags = SYMBOL_REF_FLAGS (in_rtx);
            if (flags)
            if (flags)
              fprintf (outfile, " [flags 0x%x]", flags);
              fprintf (outfile, " [flags 0x%x]", flags);
          }
          }
        else if (i == 2 && GET_CODE (in_rtx) == SYMBOL_REF)
        else if (i == 2 && GET_CODE (in_rtx) == SYMBOL_REF)
          {
          {
            tree decl = SYMBOL_REF_DECL (in_rtx);
            tree decl = SYMBOL_REF_DECL (in_rtx);
            if (decl)
            if (decl)
              print_node_brief (outfile, "", decl, 0);
              print_node_brief (outfile, "", decl, 0);
          }
          }
#endif
#endif
        else if (i == 4 && NOTE_P (in_rtx))
        else if (i == 4 && NOTE_P (in_rtx))
          {
          {
            switch (NOTE_LINE_NUMBER (in_rtx))
            switch (NOTE_LINE_NUMBER (in_rtx))
              {
              {
              case NOTE_INSN_EH_REGION_BEG:
              case NOTE_INSN_EH_REGION_BEG:
              case NOTE_INSN_EH_REGION_END:
              case NOTE_INSN_EH_REGION_END:
                if (flag_dump_unnumbered)
                if (flag_dump_unnumbered)
                  fprintf (outfile, " #");
                  fprintf (outfile, " #");
                else
                else
                  fprintf (outfile, " %d", NOTE_EH_HANDLER (in_rtx));
                  fprintf (outfile, " %d", NOTE_EH_HANDLER (in_rtx));
                sawclose = 1;
                sawclose = 1;
                break;
                break;
 
 
              case NOTE_INSN_BLOCK_BEG:
              case NOTE_INSN_BLOCK_BEG:
              case NOTE_INSN_BLOCK_END:
              case NOTE_INSN_BLOCK_END:
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
                dump_addr (outfile, " ", NOTE_BLOCK (in_rtx));
                dump_addr (outfile, " ", NOTE_BLOCK (in_rtx));
#endif
#endif
                sawclose = 1;
                sawclose = 1;
                break;
                break;
 
 
              case NOTE_INSN_BASIC_BLOCK:
              case NOTE_INSN_BASIC_BLOCK:
                {
                {
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
                  basic_block bb = NOTE_BASIC_BLOCK (in_rtx);
                  basic_block bb = NOTE_BASIC_BLOCK (in_rtx);
                  if (bb != 0)
                  if (bb != 0)
                    fprintf (outfile, " [bb %d]", bb->index);
                    fprintf (outfile, " [bb %d]", bb->index);
#endif
#endif
                  break;
                  break;
                }
                }
 
 
              case NOTE_INSN_EXPECTED_VALUE:
              case NOTE_INSN_EXPECTED_VALUE:
                indent += 2;
                indent += 2;
                if (!sawclose)
                if (!sawclose)
                  fprintf (outfile, " ");
                  fprintf (outfile, " ");
                print_rtx (NOTE_EXPECTED_VALUE (in_rtx));
                print_rtx (NOTE_EXPECTED_VALUE (in_rtx));
                indent -= 2;
                indent -= 2;
                break;
                break;
 
 
              case NOTE_INSN_DELETED_LABEL:
              case NOTE_INSN_DELETED_LABEL:
                {
                {
                  const char *label = NOTE_DELETED_LABEL_NAME (in_rtx);
                  const char *label = NOTE_DELETED_LABEL_NAME (in_rtx);
                  if (label)
                  if (label)
                    fprintf (outfile, " (\"%s\")", label);
                    fprintf (outfile, " (\"%s\")", label);
                  else
                  else
                    fprintf (outfile, " \"\"");
                    fprintf (outfile, " \"\"");
                }
                }
                break;
                break;
 
 
              case NOTE_INSN_SWITCH_TEXT_SECTIONS:
              case NOTE_INSN_SWITCH_TEXT_SECTIONS:
                {
                {
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
                  basic_block bb = NOTE_BASIC_BLOCK (in_rtx);
                  basic_block bb = NOTE_BASIC_BLOCK (in_rtx);
                  if (bb != 0)
                  if (bb != 0)
                    fprintf (outfile, " [bb %d]", bb->index);
                    fprintf (outfile, " [bb %d]", bb->index);
#endif
#endif
                  break;
                  break;
                }
                }
 
 
              case NOTE_INSN_VAR_LOCATION:
              case NOTE_INSN_VAR_LOCATION:
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
                fprintf (outfile, " (");
                fprintf (outfile, " (");
                print_mem_expr (outfile, NOTE_VAR_LOCATION_DECL (in_rtx));
                print_mem_expr (outfile, NOTE_VAR_LOCATION_DECL (in_rtx));
                fprintf (outfile, " ");
                fprintf (outfile, " ");
                print_rtx (NOTE_VAR_LOCATION_LOC (in_rtx));
                print_rtx (NOTE_VAR_LOCATION_LOC (in_rtx));
                fprintf (outfile, ")");
                fprintf (outfile, ")");
#endif
#endif
                break;
                break;
 
 
              default:
              default:
                {
                {
                  const char * const str = X0STR (in_rtx, i);
                  const char * const str = X0STR (in_rtx, i);
 
 
                  if (NOTE_LINE_NUMBER (in_rtx) < 0)
                  if (NOTE_LINE_NUMBER (in_rtx) < 0)
                    ;
                    ;
                  else if (str == 0)
                  else if (str == 0)
                    fputs (dump_for_graph ? " \\\"\\\"" : " \"\"", outfile);
                    fputs (dump_for_graph ? " \\\"\\\"" : " \"\"", outfile);
                  else
                  else
                    {
                    {
                      if (dump_for_graph)
                      if (dump_for_graph)
                        fprintf (outfile, " (\\\"%s\\\")", str);
                        fprintf (outfile, " (\\\"%s\\\")", str);
                      else
                      else
                        fprintf (outfile, " (\"%s\")", str);
                        fprintf (outfile, " (\"%s\")", str);
                    }
                    }
                  break;
                  break;
                }
                }
              }
              }
          }
          }
        break;
        break;
 
 
      case 'e':
      case 'e':
      do_e:
      do_e:
        indent += 2;
        indent += 2;
        if (!sawclose)
        if (!sawclose)
          fprintf (outfile, " ");
          fprintf (outfile, " ");
        print_rtx (XEXP (in_rtx, i));
        print_rtx (XEXP (in_rtx, i));
        indent -= 2;
        indent -= 2;
        break;
        break;
 
 
      case 'E':
      case 'E':
      case 'V':
      case 'V':
        indent += 2;
        indent += 2;
        if (sawclose)
        if (sawclose)
          {
          {
            fprintf (outfile, "\n%s%*s",
            fprintf (outfile, "\n%s%*s",
                     print_rtx_head, indent * 2, "");
                     print_rtx_head, indent * 2, "");
            sawclose = 0;
            sawclose = 0;
          }
          }
        fputs (" [", outfile);
        fputs (" [", outfile);
        if (NULL != XVEC (in_rtx, i))
        if (NULL != XVEC (in_rtx, i))
          {
          {
            indent += 2;
            indent += 2;
            if (XVECLEN (in_rtx, i))
            if (XVECLEN (in_rtx, i))
              sawclose = 1;
              sawclose = 1;
 
 
            for (j = 0; j < XVECLEN (in_rtx, i); j++)
            for (j = 0; j < XVECLEN (in_rtx, i); j++)
              print_rtx (XVECEXP (in_rtx, i, j));
              print_rtx (XVECEXP (in_rtx, i, j));
 
 
            indent -= 2;
            indent -= 2;
          }
          }
        if (sawclose)
        if (sawclose)
          fprintf (outfile, "\n%s%*s", print_rtx_head, indent * 2, "");
          fprintf (outfile, "\n%s%*s", print_rtx_head, indent * 2, "");
 
 
        fputs ("]", outfile);
        fputs ("]", outfile);
        sawclose = 1;
        sawclose = 1;
        indent -= 2;
        indent -= 2;
        break;
        break;
 
 
      case 'w':
      case 'w':
        if (! flag_simple)
        if (! flag_simple)
          fprintf (outfile, " ");
          fprintf (outfile, " ");
        fprintf (outfile, HOST_WIDE_INT_PRINT_DEC, XWINT (in_rtx, i));
        fprintf (outfile, HOST_WIDE_INT_PRINT_DEC, XWINT (in_rtx, i));
        if (! flag_simple)
        if (! flag_simple)
          fprintf (outfile, " [" HOST_WIDE_INT_PRINT_HEX "]",
          fprintf (outfile, " [" HOST_WIDE_INT_PRINT_HEX "]",
                   XWINT (in_rtx, i));
                   XWINT (in_rtx, i));
        break;
        break;
 
 
      case 'i':
      case 'i':
        if (i == 4 && INSN_P (in_rtx))
        if (i == 4 && INSN_P (in_rtx))
          {
          {
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
            /*  Pretty-print insn locators.  Ignore scoping as it is mostly
            /*  Pretty-print insn locators.  Ignore scoping as it is mostly
                redundant with line number information and do not print anything
                redundant with line number information and do not print anything
                when there is no location information available.  */
                when there is no location information available.  */
            if (INSN_LOCATOR (in_rtx) && insn_file (in_rtx))
            if (INSN_LOCATOR (in_rtx) && insn_file (in_rtx))
              fprintf(outfile, " %s:%i", insn_file (in_rtx), insn_line (in_rtx));
              fprintf(outfile, " %s:%i", insn_file (in_rtx), insn_line (in_rtx));
#endif
#endif
          }
          }
        else if (i == 6 && NOTE_P (in_rtx))
        else if (i == 6 && NOTE_P (in_rtx))
          {
          {
            /* This field is only used for NOTE_INSN_DELETED_LABEL, and
            /* This field is only used for NOTE_INSN_DELETED_LABEL, and
               other times often contains garbage from INSN->NOTE death.  */
               other times often contains garbage from INSN->NOTE death.  */
            if (NOTE_LINE_NUMBER (in_rtx) == NOTE_INSN_DELETED_LABEL)
            if (NOTE_LINE_NUMBER (in_rtx) == NOTE_INSN_DELETED_LABEL)
              fprintf (outfile, " %d",  XINT (in_rtx, i));
              fprintf (outfile, " %d",  XINT (in_rtx, i));
          }
          }
        else
        else
          {
          {
            int value = XINT (in_rtx, i);
            int value = XINT (in_rtx, i);
            const char *name;
            const char *name;
 
 
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
            if (REG_P (in_rtx) && value < FIRST_PSEUDO_REGISTER)
            if (REG_P (in_rtx) && value < FIRST_PSEUDO_REGISTER)
              fprintf (outfile, " %d %s", REGNO (in_rtx),
              fprintf (outfile, " %d %s", REGNO (in_rtx),
                       reg_names[REGNO (in_rtx)]);
                       reg_names[REGNO (in_rtx)]);
            else if (REG_P (in_rtx)
            else if (REG_P (in_rtx)
                     && value <= LAST_VIRTUAL_REGISTER)
                     && value <= LAST_VIRTUAL_REGISTER)
              {
              {
                if (value == VIRTUAL_INCOMING_ARGS_REGNUM)
                if (value == VIRTUAL_INCOMING_ARGS_REGNUM)
                  fprintf (outfile, " %d virtual-incoming-args", value);
                  fprintf (outfile, " %d virtual-incoming-args", value);
                else if (value == VIRTUAL_STACK_VARS_REGNUM)
                else if (value == VIRTUAL_STACK_VARS_REGNUM)
                  fprintf (outfile, " %d virtual-stack-vars", value);
                  fprintf (outfile, " %d virtual-stack-vars", value);
                else if (value == VIRTUAL_STACK_DYNAMIC_REGNUM)
                else if (value == VIRTUAL_STACK_DYNAMIC_REGNUM)
                  fprintf (outfile, " %d virtual-stack-dynamic", value);
                  fprintf (outfile, " %d virtual-stack-dynamic", value);
                else if (value == VIRTUAL_OUTGOING_ARGS_REGNUM)
                else if (value == VIRTUAL_OUTGOING_ARGS_REGNUM)
                  fprintf (outfile, " %d virtual-outgoing-args", value);
                  fprintf (outfile, " %d virtual-outgoing-args", value);
                else if (value == VIRTUAL_CFA_REGNUM)
                else if (value == VIRTUAL_CFA_REGNUM)
                  fprintf (outfile, " %d virtual-cfa", value);
                  fprintf (outfile, " %d virtual-cfa", value);
                else
                else
                  fprintf (outfile, " %d virtual-reg-%d", value,
                  fprintf (outfile, " %d virtual-reg-%d", value,
                           value-FIRST_VIRTUAL_REGISTER);
                           value-FIRST_VIRTUAL_REGISTER);
              }
              }
            else
            else
#endif
#endif
              if (flag_dump_unnumbered
              if (flag_dump_unnumbered
                     && (is_insn || NOTE_P (in_rtx)))
                     && (is_insn || NOTE_P (in_rtx)))
              fputc ('#', outfile);
              fputc ('#', outfile);
            else
            else
              fprintf (outfile, " %d", value);
              fprintf (outfile, " %d", value);
 
 
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
            if (REG_P (in_rtx) && REG_ATTRS (in_rtx))
            if (REG_P (in_rtx) && REG_ATTRS (in_rtx))
              {
              {
                fputs (" [", outfile);
                fputs (" [", outfile);
                if (ORIGINAL_REGNO (in_rtx) != REGNO (in_rtx))
                if (ORIGINAL_REGNO (in_rtx) != REGNO (in_rtx))
                  fprintf (outfile, "orig:%i", ORIGINAL_REGNO (in_rtx));
                  fprintf (outfile, "orig:%i", ORIGINAL_REGNO (in_rtx));
                if (REG_EXPR (in_rtx))
                if (REG_EXPR (in_rtx))
                  print_mem_expr (outfile, REG_EXPR (in_rtx));
                  print_mem_expr (outfile, REG_EXPR (in_rtx));
 
 
                if (REG_OFFSET (in_rtx))
                if (REG_OFFSET (in_rtx))
                  fprintf (outfile, "+" HOST_WIDE_INT_PRINT_DEC,
                  fprintf (outfile, "+" HOST_WIDE_INT_PRINT_DEC,
                           REG_OFFSET (in_rtx));
                           REG_OFFSET (in_rtx));
                fputs (" ]", outfile);
                fputs (" ]", outfile);
              }
              }
#endif
#endif
 
 
            if (is_insn && &INSN_CODE (in_rtx) == &XINT (in_rtx, i)
            if (is_insn && &INSN_CODE (in_rtx) == &XINT (in_rtx, i)
                && XINT (in_rtx, i) >= 0
                && XINT (in_rtx, i) >= 0
                && (name = get_insn_name (XINT (in_rtx, i))) != NULL)
                && (name = get_insn_name (XINT (in_rtx, i))) != NULL)
              fprintf (outfile, " {%s}", name);
              fprintf (outfile, " {%s}", name);
            sawclose = 0;
            sawclose = 0;
          }
          }
        break;
        break;
 
 
      /* Print NOTE_INSN names rather than integer codes.  */
      /* Print NOTE_INSN names rather than integer codes.  */
 
 
      case 'n':
      case 'n':
        if (XINT (in_rtx, i) >= (int) NOTE_INSN_BIAS
        if (XINT (in_rtx, i) >= (int) NOTE_INSN_BIAS
            && XINT (in_rtx, i) < (int) NOTE_INSN_MAX)
            && XINT (in_rtx, i) < (int) NOTE_INSN_MAX)
          fprintf (outfile, " %s", GET_NOTE_INSN_NAME (XINT (in_rtx, i)));
          fprintf (outfile, " %s", GET_NOTE_INSN_NAME (XINT (in_rtx, i)));
        else
        else
          fprintf (outfile, " %d", XINT (in_rtx, i));
          fprintf (outfile, " %d", XINT (in_rtx, i));
        sawclose = 0;
        sawclose = 0;
        break;
        break;
 
 
      case 'u':
      case 'u':
        if (XEXP (in_rtx, i) != NULL)
        if (XEXP (in_rtx, i) != NULL)
          {
          {
            rtx sub = XEXP (in_rtx, i);
            rtx sub = XEXP (in_rtx, i);
            enum rtx_code subc = GET_CODE (sub);
            enum rtx_code subc = GET_CODE (sub);
 
 
            if (GET_CODE (in_rtx) == LABEL_REF)
            if (GET_CODE (in_rtx) == LABEL_REF)
              {
              {
                if (subc == NOTE
                if (subc == NOTE
                    && NOTE_LINE_NUMBER (sub) == NOTE_INSN_DELETED_LABEL)
                    && NOTE_LINE_NUMBER (sub) == NOTE_INSN_DELETED_LABEL)
                  {
                  {
                    if (flag_dump_unnumbered)
                    if (flag_dump_unnumbered)
                      fprintf (outfile, " [# deleted]");
                      fprintf (outfile, " [# deleted]");
                    else
                    else
                      fprintf (outfile, " [%d deleted]", INSN_UID (sub));
                      fprintf (outfile, " [%d deleted]", INSN_UID (sub));
                    sawclose = 0;
                    sawclose = 0;
                    break;
                    break;
                  }
                  }
 
 
                if (subc != CODE_LABEL)
                if (subc != CODE_LABEL)
                  goto do_e;
                  goto do_e;
              }
              }
 
 
            if (flag_dump_unnumbered)
            if (flag_dump_unnumbered)
              fputs (" #", outfile);
              fputs (" #", outfile);
            else
            else
              fprintf (outfile, " %d", INSN_UID (sub));
              fprintf (outfile, " %d", INSN_UID (sub));
          }
          }
        else
        else
          fputs (" 0", outfile);
          fputs (" 0", outfile);
        sawclose = 0;
        sawclose = 0;
        break;
        break;
 
 
      case 'b':
      case 'b':
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
        if (XBITMAP (in_rtx, i) == NULL)
        if (XBITMAP (in_rtx, i) == NULL)
          fputs (" {null}", outfile);
          fputs (" {null}", outfile);
        else
        else
          bitmap_print (outfile, XBITMAP (in_rtx, i), " {", "}");
          bitmap_print (outfile, XBITMAP (in_rtx, i), " {", "}");
#endif
#endif
        sawclose = 0;
        sawclose = 0;
        break;
        break;
 
 
      case 't':
      case 't':
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
        dump_addr (outfile, " ", XTREE (in_rtx, i));
        dump_addr (outfile, " ", XTREE (in_rtx, i));
#endif
#endif
        break;
        break;
 
 
      case '*':
      case '*':
        fputs (" Unknown", outfile);
        fputs (" Unknown", outfile);
        sawclose = 0;
        sawclose = 0;
        break;
        break;
 
 
      case 'B':
      case 'B':
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
        if (XBBDEF (in_rtx, i))
        if (XBBDEF (in_rtx, i))
          fprintf (outfile, " %i", XBBDEF (in_rtx, i)->index);
          fprintf (outfile, " %i", XBBDEF (in_rtx, i)->index);
#endif
#endif
        break;
        break;
 
 
      default:
      default:
        gcc_unreachable ();
        gcc_unreachable ();
      }
      }
 
 
  switch (GET_CODE (in_rtx))
  switch (GET_CODE (in_rtx))
    {
    {
#ifndef GENERATOR_FILE
#ifndef GENERATOR_FILE
    case MEM:
    case MEM:
      fprintf (outfile, " [" HOST_WIDE_INT_PRINT_DEC, MEM_ALIAS_SET (in_rtx));
      fprintf (outfile, " [" HOST_WIDE_INT_PRINT_DEC, MEM_ALIAS_SET (in_rtx));
 
 
      if (MEM_EXPR (in_rtx))
      if (MEM_EXPR (in_rtx))
        print_mem_expr (outfile, MEM_EXPR (in_rtx));
        print_mem_expr (outfile, MEM_EXPR (in_rtx));
 
 
      if (MEM_OFFSET (in_rtx))
      if (MEM_OFFSET (in_rtx))
        fprintf (outfile, "+" HOST_WIDE_INT_PRINT_DEC,
        fprintf (outfile, "+" HOST_WIDE_INT_PRINT_DEC,
                 INTVAL (MEM_OFFSET (in_rtx)));
                 INTVAL (MEM_OFFSET (in_rtx)));
 
 
      if (MEM_SIZE (in_rtx))
      if (MEM_SIZE (in_rtx))
        fprintf (outfile, " S" HOST_WIDE_INT_PRINT_DEC,
        fprintf (outfile, " S" HOST_WIDE_INT_PRINT_DEC,
                 INTVAL (MEM_SIZE (in_rtx)));
                 INTVAL (MEM_SIZE (in_rtx)));
 
 
      if (MEM_ALIGN (in_rtx) != 1)
      if (MEM_ALIGN (in_rtx) != 1)
        fprintf (outfile, " A%u", MEM_ALIGN (in_rtx));
        fprintf (outfile, " A%u", MEM_ALIGN (in_rtx));
 
 
      fputc (']', outfile);
      fputc (']', outfile);
      break;
      break;
 
 
    case CONST_DOUBLE:
    case CONST_DOUBLE:
      if (FLOAT_MODE_P (GET_MODE (in_rtx)))
      if (FLOAT_MODE_P (GET_MODE (in_rtx)))
        {
        {
          char s[60];
          char s[60];
 
 
          real_to_decimal (s, CONST_DOUBLE_REAL_VALUE (in_rtx),
          real_to_decimal (s, CONST_DOUBLE_REAL_VALUE (in_rtx),
                           sizeof (s), 0, 1);
                           sizeof (s), 0, 1);
          fprintf (outfile, " %s", s);
          fprintf (outfile, " %s", s);
 
 
          real_to_hexadecimal (s, CONST_DOUBLE_REAL_VALUE (in_rtx),
          real_to_hexadecimal (s, CONST_DOUBLE_REAL_VALUE (in_rtx),
                               sizeof (s), 0, 1);
                               sizeof (s), 0, 1);
          fprintf (outfile, " [%s]", s);
          fprintf (outfile, " [%s]", s);
        }
        }
      break;
      break;
#endif
#endif
 
 
    case CODE_LABEL:
    case CODE_LABEL:
      fprintf (outfile, " [%d uses]", LABEL_NUSES (in_rtx));
      fprintf (outfile, " [%d uses]", LABEL_NUSES (in_rtx));
      switch (LABEL_KIND (in_rtx))
      switch (LABEL_KIND (in_rtx))
        {
        {
          case LABEL_NORMAL: break;
          case LABEL_NORMAL: break;
          case LABEL_STATIC_ENTRY: fputs (" [entry]", outfile); break;
          case LABEL_STATIC_ENTRY: fputs (" [entry]", outfile); break;
          case LABEL_GLOBAL_ENTRY: fputs (" [global entry]", outfile); break;
          case LABEL_GLOBAL_ENTRY: fputs (" [global entry]", outfile); break;
          case LABEL_WEAK_ENTRY: fputs (" [weak entry]", outfile); break;
          case LABEL_WEAK_ENTRY: fputs (" [weak entry]", outfile); break;
          default: gcc_unreachable ();
          default: gcc_unreachable ();
        }
        }
      break;
      break;
 
 
    default:
    default:
      break;
      break;
    }
    }
 
 
  if (dump_for_graph
  if (dump_for_graph
      && (is_insn || NOTE_P (in_rtx)
      && (is_insn || NOTE_P (in_rtx)
          || LABEL_P (in_rtx) || BARRIER_P (in_rtx)))
          || LABEL_P (in_rtx) || BARRIER_P (in_rtx)))
    sawclose = 0;
    sawclose = 0;
  else
  else
    {
    {
      fputc (')', outfile);
      fputc (')', outfile);
      sawclose = 1;
      sawclose = 1;
    }
    }
}
}
 
 
/* Print an rtx on the current line of FILE.  Initially indent IND
/* Print an rtx on the current line of FILE.  Initially indent IND
   characters.  */
   characters.  */
 
 
void
void
print_inline_rtx (FILE *outf, rtx x, int ind)
print_inline_rtx (FILE *outf, rtx x, int ind)
{
{
  int oldsaw = sawclose;
  int oldsaw = sawclose;
  int oldindent = indent;
  int oldindent = indent;
 
 
  sawclose = 0;
  sawclose = 0;
  indent = ind;
  indent = ind;
  outfile = outf;
  outfile = outf;
  print_rtx (x);
  print_rtx (x);
  sawclose = oldsaw;
  sawclose = oldsaw;
  indent = oldindent;
  indent = oldindent;
}
}
 
 
/* Call this function from the debugger to see what X looks like.  */
/* Call this function from the debugger to see what X looks like.  */
 
 
void
void
debug_rtx (rtx x)
debug_rtx (rtx x)
{
{
  outfile = stderr;
  outfile = stderr;
  sawclose = 0;
  sawclose = 0;
  print_rtx (x);
  print_rtx (x);
  fprintf (stderr, "\n");
  fprintf (stderr, "\n");
}
}
 
 
/* Count of rtx's to print with debug_rtx_list.
/* Count of rtx's to print with debug_rtx_list.
   This global exists because gdb user defined commands have no arguments.  */
   This global exists because gdb user defined commands have no arguments.  */
 
 
int debug_rtx_count = 0; /* 0 is treated as equivalent to 1 */
int debug_rtx_count = 0; /* 0 is treated as equivalent to 1 */
 
 
/* Call this function to print list from X on.
/* Call this function to print list from X on.
 
 
   N is a count of the rtx's to print. Positive values print from the specified
   N is a count of the rtx's to print. Positive values print from the specified
   rtx on.  Negative values print a window around the rtx.
   rtx on.  Negative values print a window around the rtx.
   EG: -5 prints 2 rtx's on either side (in addition to the specified rtx).  */
   EG: -5 prints 2 rtx's on either side (in addition to the specified rtx).  */
 
 
void
void
debug_rtx_list (rtx x, int n)
debug_rtx_list (rtx x, int n)
{
{
  int i,count;
  int i,count;
  rtx insn;
  rtx insn;
 
 
  count = n == 0 ? 1 : n < 0 ? -n : n;
  count = n == 0 ? 1 : n < 0 ? -n : n;
 
 
  /* If we are printing a window, back up to the start.  */
  /* If we are printing a window, back up to the start.  */
 
 
  if (n < 0)
  if (n < 0)
    for (i = count / 2; i > 0; i--)
    for (i = count / 2; i > 0; i--)
      {
      {
        if (PREV_INSN (x) == 0)
        if (PREV_INSN (x) == 0)
          break;
          break;
        x = PREV_INSN (x);
        x = PREV_INSN (x);
      }
      }
 
 
  for (i = count, insn = x; i > 0 && insn != 0; i--, insn = NEXT_INSN (insn))
  for (i = count, insn = x; i > 0 && insn != 0; i--, insn = NEXT_INSN (insn))
    {
    {
      debug_rtx (insn);
      debug_rtx (insn);
      fprintf (stderr, "\n");
      fprintf (stderr, "\n");
    }
    }
}
}
 
 
/* Call this function to print an rtx list from START to END inclusive.  */
/* Call this function to print an rtx list from START to END inclusive.  */
 
 
void
void
debug_rtx_range (rtx start, rtx end)
debug_rtx_range (rtx start, rtx end)
{
{
  while (1)
  while (1)
    {
    {
      debug_rtx (start);
      debug_rtx (start);
      fprintf (stderr, "\n");
      fprintf (stderr, "\n");
      if (!start || start == end)
      if (!start || start == end)
        break;
        break;
      start = NEXT_INSN (start);
      start = NEXT_INSN (start);
    }
    }
}
}
 
 
/* Call this function to search an rtx list to find one with insn uid UID,
/* Call this function to search an rtx list to find one with insn uid UID,
   and then call debug_rtx_list to print it, using DEBUG_RTX_COUNT.
   and then call debug_rtx_list to print it, using DEBUG_RTX_COUNT.
   The found insn is returned to enable further debugging analysis.  */
   The found insn is returned to enable further debugging analysis.  */
 
 
rtx
rtx
debug_rtx_find (rtx x, int uid)
debug_rtx_find (rtx x, int uid)
{
{
  while (x != 0 && INSN_UID (x) != uid)
  while (x != 0 && INSN_UID (x) != uid)
    x = NEXT_INSN (x);
    x = NEXT_INSN (x);
  if (x != 0)
  if (x != 0)
    {
    {
      debug_rtx_list (x, debug_rtx_count);
      debug_rtx_list (x, debug_rtx_count);
      return x;
      return x;
    }
    }
  else
  else
    {
    {
      fprintf (stderr, "insn uid %d not found\n", uid);
      fprintf (stderr, "insn uid %d not found\n", uid);
      return 0;
      return 0;
    }
    }
}
}
 
 
/* External entry point for printing a chain of insns
/* External entry point for printing a chain of insns
   starting with RTX_FIRST onto file OUTF.
   starting with RTX_FIRST onto file OUTF.
   A blank line separates insns.
   A blank line separates insns.
 
 
   If RTX_FIRST is not an insn, then it alone is printed, with no newline.  */
   If RTX_FIRST is not an insn, then it alone is printed, with no newline.  */
 
 
void
void
print_rtl (FILE *outf, rtx rtx_first)
print_rtl (FILE *outf, rtx rtx_first)
{
{
  rtx tmp_rtx;
  rtx tmp_rtx;
 
 
  outfile = outf;
  outfile = outf;
  sawclose = 0;
  sawclose = 0;
 
 
  if (rtx_first == 0)
  if (rtx_first == 0)
    {
    {
      fputs (print_rtx_head, outf);
      fputs (print_rtx_head, outf);
      fputs ("(nil)\n", outf);
      fputs ("(nil)\n", outf);
    }
    }
  else
  else
    switch (GET_CODE (rtx_first))
    switch (GET_CODE (rtx_first))
      {
      {
      case INSN:
      case INSN:
      case JUMP_INSN:
      case JUMP_INSN:
      case CALL_INSN:
      case CALL_INSN:
      case NOTE:
      case NOTE:
      case CODE_LABEL:
      case CODE_LABEL:
      case BARRIER:
      case BARRIER:
        for (tmp_rtx = rtx_first; tmp_rtx != 0; tmp_rtx = NEXT_INSN (tmp_rtx))
        for (tmp_rtx = rtx_first; tmp_rtx != 0; tmp_rtx = NEXT_INSN (tmp_rtx))
          if (! flag_dump_unnumbered
          if (! flag_dump_unnumbered
              || !NOTE_P (tmp_rtx) || NOTE_LINE_NUMBER (tmp_rtx) < 0)
              || !NOTE_P (tmp_rtx) || NOTE_LINE_NUMBER (tmp_rtx) < 0)
            {
            {
              fputs (print_rtx_head, outfile);
              fputs (print_rtx_head, outfile);
              print_rtx (tmp_rtx);
              print_rtx (tmp_rtx);
              fprintf (outfile, "\n");
              fprintf (outfile, "\n");
            }
            }
        break;
        break;
 
 
      default:
      default:
        fputs (print_rtx_head, outfile);
        fputs (print_rtx_head, outfile);
        print_rtx (rtx_first);
        print_rtx (rtx_first);
      }
      }
}
}
 
 
/* Like print_rtx, except specify a file.  */
/* Like print_rtx, except specify a file.  */
/* Return nonzero if we actually printed anything.  */
/* Return nonzero if we actually printed anything.  */
 
 
int
int
print_rtl_single (FILE *outf, rtx x)
print_rtl_single (FILE *outf, rtx x)
{
{
  outfile = outf;
  outfile = outf;
  sawclose = 0;
  sawclose = 0;
  if (! flag_dump_unnumbered
  if (! flag_dump_unnumbered
      || !NOTE_P (x) || NOTE_LINE_NUMBER (x) < 0)
      || !NOTE_P (x) || NOTE_LINE_NUMBER (x) < 0)
    {
    {
      fputs (print_rtx_head, outfile);
      fputs (print_rtx_head, outfile);
      print_rtx (x);
      print_rtx (x);
      putc ('\n', outf);
      putc ('\n', outf);
      return 1;
      return 1;
    }
    }
  return 0;
  return 0;
}
}
 
 
 
 
/* Like print_rtl except without all the detail; for example,
/* Like print_rtl except without all the detail; for example,
   if RTX is a CONST_INT then print in decimal format.  */
   if RTX is a CONST_INT then print in decimal format.  */
 
 
void
void
print_simple_rtl (FILE *outf, rtx x)
print_simple_rtl (FILE *outf, rtx x)
{
{
  flag_simple = 1;
  flag_simple = 1;
  print_rtl (outf, x);
  print_rtl (outf, x);
  flag_simple = 0;
  flag_simple = 0;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.