rtl.c (read_rtx): Fall back on homebrew atoll if HOST_WIDE_INT is large...
* rtl.c (read_rtx): Fall back on homebrew atoll if HOST_WIDE_INT is large, and the system doesn't provide atoll or atoq. (atoll): New. * alpha/xm-vms.h (HAVE_ATOLL): Define. Reported by Klaus Kaempf <kkaempf@progis.de>. From-SVN: r18657
This commit is contained in:
parent
8056460354
commit
cbe3672526
@ -1,3 +1,12 @@
|
||||
Wed Mar 18 09:52:56 1998 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* rtl.c (read_rtx): Fall back on homebrew atoll if HOST_WIDE_INT
|
||||
is large, and the system doesn't provide atoll or atoq.
|
||||
(atoll): New.
|
||||
|
||||
* alpha/xm-vms.h (HAVE_ATOLL): Define.
|
||||
Reported by Klaus Kaempf <kkaempf@progis.de>.
|
||||
|
||||
Wed Mar 18 09:56:26 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* c-lang.c (finish_file): Wrap variable `void_list_node' with macro
|
||||
|
@ -68,6 +68,7 @@ Boston, MA 02111-1307, USA. */
|
||||
#define HAVE_VPRINTF
|
||||
#define HAVE_PUTENV
|
||||
#define HAVE_STRERROR
|
||||
#define HAVE_ATOLL
|
||||
|
||||
#define NO_SYS_PARAMS_H /* Don't have <sys/params.h> */
|
||||
#define NO_STAB_H /* Don't have <stab.h> */
|
||||
|
43
gcc/rtl.c
43
gcc/rtl.c
@ -558,6 +558,43 @@ read_name (str, infile)
|
||||
*p = 0;
|
||||
}
|
||||
|
||||
/* Provide a version of a function to read a long long if the system does
|
||||
not provide one. */
|
||||
#if HOST_BITS_PER_WIDE_INT > HOST_BITS_PER_LONG && !defined(HAVE_ATOLL) && !defined(HAVE_ATOQ)
|
||||
HOST_WIDE_INT
|
||||
atoll(p)
|
||||
const char *p;
|
||||
{
|
||||
int neg = 0;
|
||||
HOST_WIDE_INT tmp_wide;
|
||||
|
||||
while (isspace(*p))
|
||||
p++;
|
||||
if (*p == '-')
|
||||
neg = 1, p++;
|
||||
else if (*p == '+')
|
||||
p++;
|
||||
|
||||
tmp_wide = 0;
|
||||
while (isdigit(*p))
|
||||
{
|
||||
HOST_WIDE_INT new_wide = tmp_wide*10 + (*p - '0');
|
||||
if (new_wide < tmp_wide)
|
||||
{
|
||||
/* Return INT_MAX equiv on overflow. */
|
||||
tmp_wide = (~(unsigned HOST_WIDE_INT)0) >> 1;
|
||||
break;
|
||||
}
|
||||
tmp_wide = new_wide;
|
||||
p++;
|
||||
}
|
||||
|
||||
if (neg)
|
||||
tmp_wide = -tmp_wide;
|
||||
return tmp_wide;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Read an rtx in printed representation from INFILE
|
||||
and return an actual rtx in core constructed accordingly.
|
||||
read_rtx is not used in the compiler proper, but rather in
|
||||
@ -768,14 +805,14 @@ read_rtx (infile)
|
||||
#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
|
||||
tmp_wide = atol (tmp_char);
|
||||
#else
|
||||
#ifdef HAVE_ATOLL
|
||||
/* Prefer atoll over atoq, since the former is in the ISO C9X draft.
|
||||
But prefer not to use our hand-rolled function above either. */
|
||||
#if defined(HAVE_ATOLL) || !defined(HAVE_ATOQ)
|
||||
tmp_wide = atoll (tmp_char);
|
||||
#else
|
||||
#ifdef HAVE_ATOQ
|
||||
tmp_wide = atoq (tmp_char);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
XWINT (return_rtx, i) = tmp_wide;
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user