OSDN Git Service

PR c++/15815
[pf3gnuchains/gcc-fork.git] / gcc / sched-vis.c
index e44c28a..8568306 100644 (file)
@@ -1,6 +1,6 @@
 /* Instruction scheduling pass.
    Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2002 Free Software Foundation, Inc.
+   1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
    Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by,
    and currently maintained by, Jim Wilson (wilson@cygnus.com)
 
@@ -23,6 +23,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 \f
 #include "config.h"
 #include "system.h"
+#include "coretypes.h"
+#include "tm.h"
 #include "toplev.h"
 #include "rtl.h"
 #include "tm_p.h"
@@ -45,17 +47,16 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
 static int target_units = 0;
 
-static char *safe_concat PARAMS ((char *, char *, const char *));
-static int get_visual_tbl_length PARAMS ((void));
-static void print_exp PARAMS ((char *, rtx, int));
-static void print_value PARAMS ((char *, rtx, int));
-static void print_pattern PARAMS ((char *, rtx, int));
+static char *safe_concat (char *, char *, const char *);
+static int get_visual_tbl_length (void);
+static void print_exp (char *, rtx, int);
+static void print_value (char *, rtx, int);
+static void print_pattern (char *, rtx, int);
 
 /* Print names of units on which insn can/should execute, for debugging.  */
 
 void
-insn_print_units (insn)
-     rtx insn;
+insn_print_units (rtx insn)
 {
   int i;
   int unit = insn_unit (insn);
@@ -79,7 +80,7 @@ insn_print_units (insn)
 }
 
 /* MAX_VISUAL_LINES is the maximum number of lines in visualization table
-   of a basic block.  If more lines are needed, table is splitted to two.
+   of a basic block.  If more lines are needed, table is split to two.
    n_visual_lines is the number of lines printed so far for a block.
    visual_tbl contains the block visualization info.
    vis_no_unit holds insns in a cycle that are not mapped to any unit.  */
@@ -96,7 +97,7 @@ rtx vis_no_unit[MAX_VISUAL_NO_UNIT];
    for visualization.  */
 
 void
-init_target_units ()
+init_target_units (void)
 {
   rtx insn;
   int unit;
@@ -118,14 +119,14 @@ init_target_units ()
 /* Return the length of the visualization table.  */
 
 static int
-get_visual_tbl_length ()
+get_visual_tbl_length (void)
 {
   int unit, i;
   int n, n1;
   char *s;
 
   if (targetm.sched.use_dfa_pipeline_interface
-      && (*targetm.sched.use_dfa_pipeline_interface) ())
+      && targetm.sched.use_dfa_pipeline_interface ())
     {
       visual_tbl_line_length = 1;
       return 1; /* Can't return 0 because that will cause problems
@@ -133,7 +134,7 @@ get_visual_tbl_length ()
     }
 
   /* Compute length of one field in line.  */
-  s = (char *) alloca (INSN_LEN + 6);
+  s = alloca (INSN_LEN + 6);
   sprintf (s, "  %33s", "uname");
   n1 = strlen (s);
 
@@ -156,7 +157,7 @@ get_visual_tbl_length ()
 /* Init block visualization debugging info.  */
 
 void
-init_block_visualization ()
+init_block_visualization (void)
 {
   strcpy (visual_tbl, "");
   n_visual_lines = 0;
@@ -166,10 +167,7 @@ init_block_visualization ()
 #define BUF_LEN 2048
 
 static char *
-safe_concat (buf, cur, str)
-     char *buf;
-     char *cur;
-     const char *str;
+safe_concat (char *buf, char *cur, const char *str)
 {
   char *end = buf + BUF_LEN - 2;       /* Leave room for null.  */
   int c;
@@ -192,10 +190,7 @@ safe_concat (buf, cur, str)
    may be stored in objects representing values.  */
 
 static void
-print_exp (buf, x, verbose)
-     char *buf;
-     rtx x;
-     int verbose;
+print_exp (char *buf, rtx x, int verbose)
 {
   char tmp[BUF_LEN];
   const char *st[4];
@@ -542,14 +537,11 @@ print_exp (buf, x, verbose)
     cur = safe_concat (buf, cur, ")");
 }              /* print_exp */
 
-/* Prints rtxes, I customly classified as values.  They're constants,
+/* Prints rtxes, I customarily classified as values.  They're constants,
    registers, labels, symbols and memory accesses.  */
 
 static void
-print_value (buf, x, verbose)
-     char *buf;
-     rtx x;
-     int verbose;
+print_value (char *buf, rtx x, int verbose)
 {
   char t[BUF_LEN];
   char *cur = buf;
@@ -562,12 +554,7 @@ print_value (buf, x, verbose)
       break;
     case CONST_DOUBLE:
       if (FLOAT_MODE_P (GET_MODE (x)))
-       {
-         REAL_VALUE_TYPE r;
-
-         REAL_VALUE_FROM_CONST_DOUBLE (r, x);
-         REAL_VALUE_TO_DECIMAL(r, "%.6e", t);
-       }
+       real_to_decimal (t, CONST_DOUBLE_REAL_VALUE (x), sizeof (t), 0, 1);
       else
        sprintf (t, "<0x%lx,0x%lx>", (long) XWINT (x, 2), (long) XWINT (x, 3));
       cur = safe_concat (buf, cur, t);
@@ -644,10 +631,7 @@ print_value (buf, x, verbose)
 /* The next step in insn detalization, its pattern recognition.  */
 
 static void
-print_pattern (buf, x, verbose)
-     char *buf;
-     rtx x;
-     int verbose;
+print_pattern (char *buf, rtx x, int verbose)
 {
   char t1[BUF_LEN], t2[BUF_LEN], t3[BUF_LEN];
 
@@ -758,10 +742,7 @@ print_pattern (buf, x, verbose)
    depends now on sched.c inner variables ...)  */
 
 void
-print_insn (buf, x, verbose)
-     char *buf;
-     rtx x;
-     int verbose;
+print_insn (char *buf, rtx x, int verbose)
 {
   char t[BUF_LEN];
   rtx insn = x;
@@ -806,8 +787,12 @@ print_insn (buf, x, verbose)
       break;
     case NOTE:
       if (NOTE_LINE_NUMBER (x) > 0)
-       sprintf (buf, "%4d note \"%s\" %d", INSN_UID (x),
-                NOTE_SOURCE_FILE (x), NOTE_LINE_NUMBER (x));
+       {
+         expanded_location xloc;
+         NOTE_EXPANDED_LOCATION (xloc, x);
+         sprintf (buf, "%4d note \"%s\" %d", INSN_UID (x),
+                  xloc.file, xloc.line);
+       }
       else
        sprintf (buf, "%4d %s", INSN_UID (x),
                 GET_NOTE_INSN_NAME (NOTE_LINE_NUMBER (x)));
@@ -827,8 +812,7 @@ print_insn (buf, x, verbose)
    description should never use the following function.  */
 
 void
-print_block_visualization (s)
-     const char *s;
+print_block_visualization (const char *s)
 {
   int unit, i;
 
@@ -857,8 +841,7 @@ print_block_visualization (s)
 /* Print insns in the 'no_unit' column of visualization.  */
 
 void
-visualize_no_unit (insn)
-     rtx insn;
+visualize_no_unit (rtx insn)
 {
   if (n_vis_no_unit < MAX_VISUAL_NO_UNIT)
     {
@@ -870,8 +853,7 @@ visualize_no_unit (insn)
 /* Print insns scheduled in clock, for visualization.  */
 
 void
-visualize_scheduled_insns (clock)
-     int clock;
+visualize_scheduled_insns (int clock)
 {
   int i, unit;
 
@@ -917,8 +899,7 @@ visualize_scheduled_insns (clock)
 /* Print stalled cycles.  */
 
 void
-visualize_stall_cycles (stalls)
-     int stalls;
+visualize_stall_cycles (int stalls)
 {
   static const char *const prefix = ";;       ";
   const char *suffix = "\n";
@@ -953,7 +934,7 @@ visualize_stall_cycles (stalls)
 /* Allocate data used for visualization during scheduling.  */
 
 void
-visualize_alloc ()
+visualize_alloc (void)
 {
   visual_tbl = xmalloc (get_visual_tbl_length ());
 }
@@ -961,7 +942,7 @@ visualize_alloc ()
 /* Free data used for visualization.  */
 
 void
-visualize_free ()
+visualize_free (void)
 {
   free (visual_tbl);
 }