diff options
author | Martin Liska <mliska@suse.cz> | 2019-03-29 12:45:39 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2019-03-29 11:45:39 +0000 |
commit | 2a7108b96e7bd599971feeda4bc362b16ec19328 (patch) | |
tree | b5380bcbaf350c1ebb35b153c351ae0753074693 /gcc/dbgcnt.c | |
parent | a6240447c4eb5e683cf439fa2f3cff3773f6d6fb (diff) |
Fix multiple values for -fdbg-cnt.
2019-03-29 Martin Liska <mliska@suse.cz>
* dbgcnt.c (dbg_cnt_process_single_pair): Fix GNU coding style.
(dbg_cnt_process_opt): Parse first tokens aas
dbg_cnt_process_single_pair is also using strtok.
From-SVN: r270014
Diffstat (limited to 'gcc/dbgcnt.c')
-rw-r--r-- | gcc/dbgcnt.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/gcc/dbgcnt.c b/gcc/dbgcnt.c index ebaa310821c..e2f65f449e5 100644 --- a/gcc/dbgcnt.c +++ b/gcc/dbgcnt.c @@ -151,30 +151,35 @@ dbg_cnt_process_single_pair (const char *arg) high = strtol (value2, NULL, 10); } - return dbg_cnt_set_limit_by_name (name, low, high); + return dbg_cnt_set_limit_by_name (name, low, high); } void dbg_cnt_process_opt (const char *arg) { char *str = xstrdup (arg); - const char *next = strtok (str, ","); unsigned int start = 0; - do { - if (!dbg_cnt_process_single_pair (arg)) + auto_vec<const char *> tokens; + for (const char *next = strtok (str, ","); next != NULL; + next = strtok (NULL, ",")) + tokens.safe_push (next); + + unsigned i; + for (i = 0; i < tokens.length (); i++) + { + if (!dbg_cnt_process_single_pair (tokens[i])) break; - start += strlen (arg) + 1; - next = strtok (NULL, ","); - } while (next != NULL); + start += strlen (tokens[i]) + 1; + } - if (next != NULL) + if (i != tokens.length ()) { char *buffer = XALLOCAVEC (char, start + 2); sprintf (buffer, "%*c", start + 1, '^'); error ("cannot find a valid counter:value pair:"); - error ("%<-fdbg-cnt=%s%>", next); - error (" %s", buffer); + error ("%<-fdbg-cnt=%s%>", arg); + error (" %s", buffer); } } |