* c-exp.y (parse_number): Assign to temporary between the right
authorJim Kingdon <jkingdon@engr.sgi.com>
Mon, 17 Jan 1994 00:23:49 +0000 (00:23 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Mon, 17 Jan 1994 00:23:49 +0000 (00:23 +0000)
shifts, to work around a bug in the SCO compiler.

gdb/ChangeLog
gdb/c-exp.y

index e930dbb2f052268e82f6abfaa80b04dc05f3ead6..47d306f735c99f78fcf657f80d6e9ab1c18e4072 100644 (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.
 
index 08f7548d566b7ecafc44c091a68ae1d2520eeb8a..72639799d66ad94243673fef679de960059e67a8 100644 (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;