]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Remove "numbuf" global
authorTom Tromey <tromey@adacore.com>
Thu, 14 Mar 2024 18:28:26 +0000 (12:28 -0600)
committerTom Tromey <tromey@adacore.com>
Tue, 2 Apr 2024 17:24:27 +0000 (11:24 -0600)
The lexer has a "numbuf" global that is only used for temporary
storage.  This patch removes the global and redeclares it at the
points of use.

gdb/ada-lex.l

index 11221723eb3c66ef5f58ef8178a0bc70c483e036..4e99eaab036ccccf10f226210b365d50c1d14975 100644 (file)
@@ -59,9 +59,7 @@ DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
 #define NUMERAL_WIDTH 256
 #define LONGEST_SIGN ((ULONGEST) 1 << (sizeof(LONGEST) * HOST_CHAR_BIT - 1))
 
-/* Temporary staging for numeric literals.  */
-static char numbuf[NUMERAL_WIDTH];
- static void canonicalizeNumeral (char *s1, const char *);
+static void canonicalizeNumeral (char *s1, const char *);
 static struct stoken processString (const char*, int);
 static int processInt (struct parser_state *, const char *, const char *,
                       const char *);
@@ -114,6 +112,7 @@ static void rewind_to_char (int);
 "--".*          { yyterminate(); }
 
 {NUM10}{POSEXP}  {
+                  char numbuf[NUMERAL_WIDTH];
                   canonicalizeNumeral (numbuf, yytext);
                   char *e_ptr = strrchr (numbuf, 'e');
                   *e_ptr = '\0';
@@ -121,11 +120,13 @@ static void rewind_to_char (int);
                 }
 
 {NUM10}          {
+                  char numbuf[NUMERAL_WIDTH];
                   canonicalizeNumeral (numbuf, yytext);
                   return processInt (pstate, NULL, numbuf, NULL);
                 }
 
 {NUM10}"#"{HEXDIG}({HEXDIG}|_)*"#"{POSEXP} {
+                  char numbuf[NUMERAL_WIDTH];
                   canonicalizeNumeral (numbuf, yytext);
                   char *e_ptr = strrchr (numbuf, 'e');
                   *e_ptr = '\0';
@@ -139,23 +140,27 @@ static void rewind_to_char (int);
           floating-point number is formed by reinterpreting the
           bytes, allowing direct control over the bits.  */
 {NUM10}(l{0,2}f)?"#"{HEXDIG}({HEXDIG}|_)*"#" {
+                  char numbuf[NUMERAL_WIDTH];
                   canonicalizeNumeral (numbuf, yytext);
                   return processInt (pstate, numbuf, strchr (numbuf, '#') + 1,
                                      NULL);
                 }
 
 "0x"{HEXDIG}+  {
+                 char numbuf[NUMERAL_WIDTH];
                  canonicalizeNumeral (numbuf, yytext+2);
                  return processInt (pstate, "16#", numbuf, NULL);
                }
 
 
 {NUM10}"."{NUM10}{EXP} {
+                  char numbuf[NUMERAL_WIDTH];
                   canonicalizeNumeral (numbuf, yytext);
                   return processReal (pstate, numbuf);
                }
 
 {NUM10}"."{NUM10} {
+                  char numbuf[NUMERAL_WIDTH];
                   canonicalizeNumeral (numbuf, yytext);
                   return processReal (pstate, numbuf);
                }