diff options
author | Martin Sebor <msebor@redhat.com> | 2019-02-23 20:25:57 +0000 |
---|---|---|
committer | Martin Sebor <msebor@gcc.gnu.org> | 2019-02-23 13:25:57 -0700 |
commit | 837865bdc2aa07d7b34f67b649837967123cea54 (patch) | |
tree | 488f71a21705c67c5b747321d94d5f6928b5c094 | |
parent | 34ab23c9acd6dc641f2f2d1212841b05d9a5ff6e (diff) | |
download | gcc-837865bdc2aa07d7b34f67b649837967123cea54.zip gcc-837865bdc2aa07d7b34f67b649837967123cea54.tar.gz gcc-837865bdc2aa07d7b34f67b649837967123cea54.tar.bz2 |
gimple-ssa-sprintf.c (target_strtol): Rename...
gcc/ChangeLog:
* gimple-ssa-sprintf.c (target_strtol): Rename...
(target_strtohwi): ...to this. Handle values up to HOST_WIDE_INT_MAX.
(parse_directive): Adjust to name change. Use HOST_WIDE_INT_MAX to
check for range error.
From-SVN: r269166
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/gimple-ssa-sprintf.c | 24 |
2 files changed, 19 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78d5e99..2be8a96 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-02-23 Martin Sebor <msebor@redhat.com> + + * gimple-ssa-sprintf.c (target_strtol): Rename... + (target_strtohwi): ...to this. Handle values up to HOST_WIDE_INT_MAX. + (parse_directive): Adjust to name change. Use HOST_WIDE_INT_MAX to + check for range error. + 2019-02-23 H.J. Lu <hongjiu.lu@intel.com> PR driver/69471 diff --git a/gcc/gimple-ssa-sprintf.c b/gcc/gimple-ssa-sprintf.c index e40e0db..4fe206a 100644 --- a/gcc/gimple-ssa-sprintf.c +++ b/gcc/gimple-ssa-sprintf.c @@ -411,12 +411,12 @@ target_to_host (char *hostr, size_t hostsz, const char *targstr) } /* Convert the sequence of decimal digits in the execution character - starting at S to a long, just like strtol does. Return the result - and set *END to one past the last converted character. On range - error set ERANGE to the digit that caused it. */ + starting at *PS to a HOST_WIDE_INT, analogously to strtol. Return + the result and set *PS to one past the last converted character. + On range error set ERANGE to the digit that caused it. */ -static inline long -target_strtol10 (const char **ps, const char **erange) +static inline HOST_WIDE_INT +target_strtowi (const char **ps, const char **erange) { unsigned HOST_WIDE_INT val = 0; for ( ; ; ++*ps) @@ -427,9 +427,9 @@ target_strtol10 (const char **ps, const char **erange) c -= '0'; /* Check for overflow. */ - if (val > (LONG_MAX - c) / 10LU) + if (val > ((unsigned HOST_WIDE_INT) HOST_WIDE_INT_MAX - c) / 10LU) { - val = LONG_MAX; + val = HOST_WIDE_INT_MAX; *erange = *ps; /* Skip the remaining digits. */ @@ -3149,7 +3149,7 @@ parse_directive (sprintf_dom_walker::call_info &info, width and sort it out later after the next character has been seen. */ pwidth = pf; - width = target_strtol10 (&pf, &werange); + width = target_strtowi (&pf, &werange); } else if (target_to_host (*pf) == '*') { @@ -3231,7 +3231,7 @@ parse_directive (sprintf_dom_walker::call_info &info, { werange = 0; pwidth = pf; - width = target_strtol10 (&pf, &werange); + width = target_strtowi (&pf, &werange); } else if (target_to_host (*pf) == '*') { @@ -3264,7 +3264,7 @@ parse_directive (sprintf_dom_walker::call_info &info, if (ISDIGIT (target_to_host (*pf))) { pprec = pf; - precision = target_strtol10 (&pf, &perange); + precision = target_strtowi (&pf, &perange); } else if (target_to_host (*pf) == '*') { @@ -3418,7 +3418,7 @@ parse_directive (sprintf_dom_walker::call_info &info, } else { - if (width == LONG_MAX && werange) + if (width == HOST_WIDE_INT_MAX && werange) { size_t begin = dir.beg - info.fmtstr + (pwidth - pcnt); size_t caret = begin + (werange - pcnt); @@ -3451,7 +3451,7 @@ parse_directive (sprintf_dom_walker::call_info &info, } else { - if (precision == LONG_MAX && perange) + if (precision == HOST_WIDE_INT_MAX && perange) { size_t begin = dir.beg - info.fmtstr + (pprec - pcnt) - 1; size_t caret = dir.beg - info.fmtstr + (perange - pcnt) - 1; |