arc/nps400: Add cp16/cp32 instructions to opcodes library
[deliverable/binutils-gdb.git] / gprof / basic_blocks.c
index 74f29a0eb197f2802949c4abfc49a7c68f875915..acab186d7f4c43f9dee78f2ef30a09ca29cbc305 100644 (file)
@@ -2,13 +2,13 @@
    of basic-block info to/from gmon.out; computing and formatting of
    basic-block related statistics.
 
    of basic-block info to/from gmon.out; computing and formatting of
    basic-block related statistics.
 
-   Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1999-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Binutils.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
    This file is part of GNU Binutils.
 
    This program 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 Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 \f
 \f
-#include "libiberty.h"
 #include "gprof.h"
 #include "gprof.h"
+#include "libiberty.h"
+#include "filenames.h"
 #include "basic_blocks.h"
 #include "corefile.h"
 #include "gmon_io.h"
 #include "basic_blocks.h"
 #include "corefile.h"
 #include "gmon_io.h"
 #include "symtab.h"
 #include "sym_ids.h"
 
 #include "symtab.h"
 #include "sym_ids.h"
 
-static int cmp_bb PARAMS ((const PTR, const PTR));
-static int cmp_ncalls PARAMS ((const PTR, const PTR));
-static void fskip_string PARAMS ((FILE *));
-static void annotate_with_count PARAMS ((char *, unsigned int, int, PTR));
+static int cmp_bb (const PTR, const PTR);
+static int cmp_ncalls (const PTR, const PTR);
+static void fskip_string (FILE *);
+static void annotate_with_count (char *, unsigned int, int, PTR);
 
 /* Default option values:  */
 
 /* Default option values:  */
-boolean bb_annotate_all_lines = false;
+bfd_boolean bb_annotate_all_lines = FALSE;
 unsigned long bb_min_calls = 1;
 int bb_table_length = 10;
 
 unsigned long bb_min_calls = 1;
 int bb_table_length = 10;
 
@@ -52,9 +53,7 @@ static long num_lines_executed;
    number, and address (in that order).  */
 
 static int
    number, and address (in that order).  */
 
 static int
-cmp_bb (lp, rp)
-     const PTR lp;
-     const PTR rp;
+cmp_bb (const PTR lp, const PTR rp)
 {
   int r;
   const Sym *left = *(const Sym **) lp;
 {
   int r;
   const Sym *left = *(const Sym **) lp;
@@ -62,7 +61,7 @@ cmp_bb (lp, rp)
 
   if (left->file && right->file)
     {
 
   if (left->file && right->file)
     {
-      r = strcmp (left->file->name, right->file->name);
+      r = filename_cmp (left->file->name, right->file->name);
 
       if (r)
        return r;
 
       if (r)
        return r;
@@ -83,9 +82,7 @@ cmp_bb (lp, rp)
 /* Helper for sorting.  Order basic blocks in decreasing number of
    calls, ties are broken in increasing order of line numbers.  */
 static int
 /* Helper for sorting.  Order basic blocks in decreasing number of
    calls, ties are broken in increasing order of line numbers.  */
 static int
-cmp_ncalls (lp, rp)
-     const PTR lp;
-     const PTR rp;
+cmp_ncalls (const PTR lp, const PTR rp)
 {
   const Sym *left = *(const Sym **) lp;
   const Sym *right = *(const Sym **) rp;
 {
   const Sym *left = *(const Sym **) lp;
   const Sym *right = *(const Sym **) rp;
@@ -105,8 +102,7 @@ cmp_ncalls (lp, rp)
 
 /* Skip over variable length string.  */
 static void
 
 /* Skip over variable length string.  */
 static void
-fskip_string (fp)
-     FILE *fp;
+fskip_string (FILE *fp)
 {
   int ch;
 
 {
   int ch;
 
@@ -121,11 +117,9 @@ fskip_string (fp)
    of file IFP and is provided for formatting error-messages only.  */
 
 void
    of file IFP and is provided for formatting error-messages only.  */
 
 void
-bb_read_rec (ifp, filename)
-     FILE *ifp;
-     const char *filename;
+bb_read_rec (FILE *ifp, const char *filename)
 {
 {
-  int nblocks, b;
+  unsigned int nblocks, b;
   bfd_vma addr, ncalls;
   Sym *sym;
 
   bfd_vma addr, ncalls;
   Sym *sym;
 
@@ -150,8 +144,8 @@ bb_read_rec (ifp, filename)
             care about anymore.  */
          if ((fread (&ncalls, sizeof (ncalls), 1, ifp) != 1)
              || (fread (&addr, sizeof (addr), 1, ifp) != 1)
             care about anymore.  */
          if ((fread (&ncalls, sizeof (ncalls), 1, ifp) != 1)
              || (fread (&addr, sizeof (addr), 1, ifp) != 1)
-             || (fskip_string (ifp), false)
-             || (fskip_string (ifp), false)
+             || (fskip_string (ifp), FALSE)
+             || (fskip_string (ifp), FALSE)
              || (fread (&line_num, sizeof (line_num), 1, ifp) != 1))
            {
              perror (filename);
              || (fread (&line_num, sizeof (line_num), 1, ifp) != 1))
            {
              perror (filename);
@@ -193,11 +187,11 @@ bb_read_rec (ifp, filename)
        }
       else
        {
        }
       else
        {
-         static boolean user_warned = false;
+         static bfd_boolean user_warned = FALSE;
 
          if (!user_warned)
            {
 
          if (!user_warned)
            {
-             user_warned = true;
+             user_warned = TRUE;
              fprintf (stderr,
   _("%s: warning: ignoring basic-block exec counts (use -l or --line)\n"),
                       whoami);
              fprintf (stderr,
   _("%s: warning: ignoring basic-block exec counts (use -l or --line)\n"),
                       whoami);
@@ -211,9 +205,7 @@ bb_read_rec (ifp, filename)
    is the name of OFP and is provided for producing error-messages
    only.  */
 void
    is the name of OFP and is provided for producing error-messages
    only.  */
 void
-bb_write_blocks (ofp, filename)
-     FILE *ofp;
-     const char *filename;
+bb_write_blocks (FILE *ofp, const char *filename)
 {
   unsigned int nblocks = 0;
   Sym *sym;
 {
   unsigned int nblocks = 0;
   Sym *sym;
@@ -256,13 +248,13 @@ bb_write_blocks (ofp, filename)
        <filename>:<line-number>: (<function-name>:<bb-addr): <ncalls>  */
 
 void
        <filename>:<line-number>: (<function-name>:<bb-addr): <ncalls>  */
 
 void
-print_exec_counts ()
+print_exec_counts (void)
 {
   Sym **sorted_bbs, *sym;
   unsigned int i, j, len;
 
   if (first_output)
 {
   Sym **sorted_bbs, *sym;
   unsigned int i, j, len;
 
   if (first_output)
-    first_output = false;
+    first_output = FALSE;
   else
     printf ("\f\n");
 
   else
     printf ("\f\n");
 
@@ -289,6 +281,8 @@ print_exec_counts ()
 
   for (i = 0; i < len; ++i)
     {
 
   for (i = 0; i < len; ++i)
     {
+      sym = sorted_bbs [i];
+
       if (sym->ncalls > 0 || ! ignore_zeros)
        {
          /* FIXME: This only works if bfd_vma is unsigned long.  */
       if (sym->ncalls > 0 || ! ignore_zeros)
        {
          /* FIXME: This only works if bfd_vma is unsigned long.  */
@@ -317,19 +311,15 @@ print_exec_counts ()
    line of a file in sequential order.
 
    Global variable bb_annotate_all_lines enables execution count
    line of a file in sequential order.
 
    Global variable bb_annotate_all_lines enables execution count
-   compression (counts are supressed if identical to the last one)
+   compression (counts are suppressed if identical to the last one)
    and prints counts on all executed lines.  Otherwise, print
    all basic-block execution counts exactly once on the line
    that starts the basic-block.  */
 
 static void
    and prints counts on all executed lines.  Otherwise, print
    all basic-block execution counts exactly once on the line
    that starts the basic-block.  */
 
 static void
-annotate_with_count (buf, width, line_num, arg)
-     char *buf;
-     unsigned int width;
-     int line_num;
-     PTR arg;
+annotate_with_count (char *buf, unsigned int width, int line_num, PTR arg)
 {
 {
-  Source_File *sf = arg;
+  Source_File *sf = (Source_File *) arg;
   Sym *b;
   unsigned int i;
   static unsigned long last_count;
   Sym *b;
   unsigned int i;
   static unsigned long last_count;
@@ -338,7 +328,7 @@ annotate_with_count (buf, width, line_num, arg)
   b = NULL;
 
   if (line_num <= sf->num_lines)
   b = NULL;
 
   if (line_num <= sf->num_lines)
-    b = sf->line[line_num - 1];
+    b = (Sym *) sf->line[line_num - 1];
 
   if (!b)
     {
 
   if (!b)
     {
@@ -469,7 +459,7 @@ annotate_with_count (buf, width, line_num, arg)
    regarding that source file are printed.  */
 
 void
    regarding that source file are printed.  */
 
 void
-print_annotated_source ()
+print_annotated_source (void)
 {
   Sym *sym, *line_stats, *new_line;
   Source_File *sf;
 {
   Sym *sym, *line_stats, *new_line;
   Source_File *sf;
@@ -498,7 +488,7 @@ print_annotated_source ()
     {
       if (sf->num_lines > 0)
        {
     {
       if (sf->num_lines > 0)
        {
-         sf->line = (void *) xmalloc (sf->num_lines * sizeof (sf->line[0]));
+         sf->line = (void **) xmalloc (sf->num_lines * sizeof (sf->line[0]));
          memset (sf->line, 0, sf->num_lines * sizeof (sf->line[0]));
        }
     }
          memset (sf->line, 0, sf->num_lines * sizeof (sf->line[0]));
        }
     }
@@ -512,7 +502,7 @@ print_annotated_source ()
                  && !sym_lookup (&syms[EXCL_ANNO], sym->addr))))
        {
          sym->file->ncalls += sym->ncalls;
                  && !sym_lookup (&syms[EXCL_ANNO], sym->addr))))
        {
          sym->file->ncalls += sym->ncalls;
-         line_stats = sym->file->line[sym->line_num - 1];
+         line_stats = (Sym *) sym->file->line[sym->line_num - 1];
 
          if (!line_stats)
            {
 
          if (!line_stats)
            {
@@ -562,7 +552,7 @@ print_annotated_source ()
 
          for (i = 0; i < table_len; ++i)
            {
 
          for (i = 0; i < table_len; ++i)
            {
-             sym = sf->line[i];
+             sym = (Sym *) sf->line[i];
 
              if (!sym || sym->ncalls == 0)
                  break;
 
              if (!sym || sym->ncalls == 0)
                  break;
This page took 0.025968 seconds and 4 git commands to generate.