From 837865bdc2aa07d7b34f67b649837967123cea54 Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Sat, 23 Feb 2019 20:25:57 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/gimple-ssa-sprintf.c | 24 ++++++++++++------------ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78d5e9962bb..2be8a96355a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-02-23 Martin Sebor + + * 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 PR driver/69471 diff --git a/gcc/gimple-ssa-sprintf.c b/gcc/gimple-ssa-sprintf.c index e40e0db427c..4fe206ad08b 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; -- 2.30.2