Remove some Ada parser helper functions
authorTom Tromey <tromey@adacore.com>
Mon, 27 Mar 2023 19:52:01 +0000 (13:52 -0600)
committerTom Tromey <tromey@adacore.com>
Mon, 17 Apr 2023 16:43:06 +0000 (10:43 -0600)
These helper functions in the Ada parser don't seem all that
worthwhile to me, so this patch removes them.

gdb/ada-exp.y
gdb/ada-lex.l
gdb/testsuite/gdb.base/parse_number.exp

index a9c37bedff06752a165fc48f1e45b78155f7ac6a..4095106bb09221798b84d81182277e24f03c244e 100644 (file)
@@ -93,18 +93,8 @@ static const struct block *block_lookup (const struct block *, const char *);
 static void write_ambiguous_var (struct parser_state *,
                                 const struct block *, const char *, int);
 
-static struct type *type_int (struct parser_state *);
-
-static struct type *type_long (struct parser_state *);
-
-static struct type *type_long_long (struct parser_state *);
-
-static struct type *type_long_double (struct parser_state *);
-
 static struct type *type_for_char (struct parser_state *, ULONGEST);
 
-static struct type *type_boolean (struct parser_state *);
-
 static struct type *type_system_address (struct parser_state *);
 
 static std::string find_completion_bounds (struct parser_state *);
@@ -934,9 +924,15 @@ primary    :       STRING
        ;
 
 primary :      TRUEKEYWORD
-                       { write_int (pstate, 1, type_boolean (pstate)); }
+                       {
+                         write_int (pstate, 1,
+                                    parse_type (pstate)->builtin_bool);
+                       }
        |       FALSEKEYWORD
-                       { write_int (pstate, 0, type_boolean (pstate)); }
+                       {
+                         write_int (pstate, 0,
+                                    parse_type (pstate)->builtin_bool);
+                       }
        ;
 
 primary        :       NEW NAME
@@ -1268,7 +1264,7 @@ write_object_renaming (struct parser_state *par_state,
            if (next == renaming_expr)
              goto BadEncoding;
            renaming_expr = next;
-           write_int (par_state, val, type_int (par_state));
+           write_int (par_state, val, parse_type (par_state)->builtin_int);
          }
        else
          {
@@ -1841,30 +1837,6 @@ write_name_assoc (struct parser_state *par_state, struct stoken name)
   push_association<ada_name_association> (ada_pop ());
 }
 
-static struct type *
-type_int (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_int;
-}
-
-static struct type *
-type_long (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_long;
-}
-
-static struct type *
-type_long_long (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_long_long;
-}
-
-static struct type *
-type_long_double (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_long_double;
-}
-
 static struct type *
 type_for_char (struct parser_state *par_state, ULONGEST value)
 {
@@ -1880,12 +1852,6 @@ type_for_char (struct parser_state *par_state, ULONGEST value)
                                         "wide_wide_character");
 }
 
-static struct type *
-type_boolean (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_bool;
-}
-
 static struct type *
 type_system_address (struct parser_state *par_state)
 {
index 69fc14f7107256cc2eb79cb60493ff664c8d7924..0634f337cb2b4eae8b2d88a21fbed3ac5e9afab4 100644 (file)
@@ -471,9 +471,9 @@ processInt (struct parser_state *par_state, const char *base0,
 
   ULONGEST value = result.as_integer<ULONGEST> ();
   if (fits_in_type (1, value, int_bits, true))
-    yylval.typed_val.type = type_int (par_state);
+    yylval.typed_val.type = parse_type (par_state)->builtin_int;
   else if (fits_in_type (1, value, long_bits, true))
-    yylval.typed_val.type = type_long (par_state);
+    yylval.typed_val.type = parse_type (par_state)->builtin_long;
   else if (fits_in_type (1, value, long_bits, false))
     {
       /* We have a number representable as an unsigned integer quantity.
@@ -494,7 +494,7 @@ processInt (struct parser_state *par_state, const char *base0,
       return INT;
     }
   else if (fits_in_type (1, value, long_long_bits, true))
-    yylval.typed_val.type = type_long_long (par_state);
+    yylval.typed_val.type = parse_type (par_state)->builtin_long_long;
   else if (fits_in_type (1, value, long_long_bits, false))
     {
       yylval.typed_val.type
@@ -518,7 +518,7 @@ processInt (struct parser_state *par_state, const char *base0,
 static int
 processReal (struct parser_state *par_state, const char *num0)
 {
-  yylval.typed_val_float.type = type_long_double (par_state);
+  yylval.typed_val_float.type = parse_type (par_state)->builtin_long_double;
 
   bool parsed = parse_float (num0, strlen (num0),
                             yylval.typed_val_float.type,
index 5dd4fa705e9263a98d7a9267fbc61c7227530abc..8800dead53b0f92512449af0ea5750f712415b8b 100644 (file)
@@ -145,6 +145,8 @@ proc parse_number { lang n } {
        } elseif { [fits_in_type $n $long_long_bits u] } {
            # Note: Interprets ULLONG_MAX as -1.
            return [list "<$sizeof_long_long-byte integer>" $n]
+       } elseif { [fits_in_type $n 128 u] } {
+           return [list "<16-byte integer>" $n]
        } else {
            # Overflow.
            return [list $re_overflow $re_overflow]