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
This commit is contained in:
Martin Sebor 2019-02-23 20:25:57 +00:00 committed by Martin Sebor
parent 34ab23c9ac
commit 837865bdc2
2 changed files with 19 additions and 12 deletions

View file

@ -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

View file

@ -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;