X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fdbgcnt.c;h=0c496b308d697b870b4c8f13641e5c2923a07979;hp=660428e1968a62272c2ad917365103f88990bb05;hb=5185084deef5348ecab230e6903be779c312e873;hpb=d2153a46f57f9a774e1c4432d19f19b9f775d21d diff --git a/gcc/dbgcnt.c b/gcc/dbgcnt.c index 660428e1968..0c496b308d6 100644 --- a/gcc/dbgcnt.c +++ b/gcc/dbgcnt.c @@ -1,11 +1,11 @@ /* Debug counter for debugging support - Copyright (C) 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. 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 -Software Foundation; either version 2, or (at your option) any later +Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY @@ -14,9 +14,8 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to the Free -Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. +along with GCC; see the file COPYING3. If not see +. See dbgcnt.def for usage information. */ @@ -24,6 +23,9 @@ See dbgcnt.def for usage information. */ #include "system.h" #include "coretypes.h" #include "errors.h" +#include "tm.h" +#include "rtl.h" +#include "output.h" #include "dbgcnt.h" @@ -59,6 +61,10 @@ bool dbg_cnt (enum debug_counter index) { count[index]++; + if (dump_file && count[index] == limit[index]) + fprintf (dump_file, "***dbgcnt: limit reached for %s.***\n", + map[index].name); + return dbg_cnt_is_enabled (index); } @@ -76,13 +82,14 @@ dbg_cnt_set_limit_by_name (const char *name, int len, int value) { int i; for (i = debug_counter_number_of_counters - 1; i >= 0; i--) - if (!strncmp (map[i].name, name, len)) + if (strncmp (map[i].name, name, len) == 0 + && map[i].name[len] == '\0') break; if (i < 0) return false; - dbg_cnt_set_limit_by_index (i, value); + dbg_cnt_set_limit_by_index ((enum debug_counter) i, value); return true; } @@ -123,7 +130,7 @@ dbg_cnt_process_opt (const char *arg) if (next == NULL || *next != 0) { - char *buffer = alloca (arg - start + 2); + char *buffer = XALLOCAVEC (char, arg - start + 2); sprintf (buffer, "%*c", (int)(1 + (arg - start)), '^'); error ("Can not find a valid counter:value pair:"); error ("-fdbg-cnt=%s", start); @@ -133,7 +140,8 @@ dbg_cnt_process_opt (const char *arg) /* Print name, limit and count of all counters. */ -void dbg_cnt_list_all_counters (void) +void +dbg_cnt_list_all_counters (void) { int i; printf (" %-30s %-5s %-5s\n", "counter name", "limit", "value");