* c-exp.y (parse_number): Assign to temporary between the right

shifts, to work around a bug in the SCO compiler.
This commit is contained in:
Jim Kingdon 1994-01-17 00:23:49 +00:00
parent 24033f1e6b
commit a39f77396e
2 changed files with 7 additions and 2 deletions

View File

@ -1,5 +1,8 @@
Sun Jan 16 12:46:01 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
* c-exp.y (parse_number): Assign to temporary between the right
shifts, to work around a bug in the SCO compiler.
* Makefile.in (ALLCONFIG, ALLPARAM, ALLDEPFILES, HFILES_NO_SRCDIR):
Add various files which were added to GDB recently.

View File

@ -903,6 +903,7 @@ parse_number (p, len, parsed_float, putithere)
here, and we do kind of silly things like cast to unsigned. */
register LONGEST n = 0;
register LONGEST prevn = 0;
unsigned LONGEST un;
register int i = 0;
register int c;
@ -1023,8 +1024,9 @@ parse_number (p, len, parsed_float, putithere)
the case where it is we just always shift the value more than
once, with fewer bits each time. */
un = (unsigned LONGEST)n >> 2;
if (long_p == 0
&& (((unsigned LONGEST)n >> 2) >> (TARGET_INT_BIT - 2)) == 0)
&& (un >> (TARGET_INT_BIT - 2)) == 0)
{
high_bit = ((unsigned LONGEST)1) << (TARGET_INT_BIT-1);
@ -1038,7 +1040,7 @@ parse_number (p, len, parsed_float, putithere)
signed_type = builtin_type_int;
}
else if (long_p <= 1
&& (((unsigned LONGEST)n >> 2) >> (TARGET_LONG_BIT - 2)) == 0)
&& (un >> (TARGET_LONG_BIT - 2)) == 0)
{
high_bit = ((unsigned LONGEST)1) << (TARGET_LONG_BIT-1);
unsigned_type = builtin_type_unsigned_long;