From: Jan Beulich Date: Fri, 17 Mar 2023 09:05:57 +0000 (+0100) Subject: gas: use flag_mri directly in macro processing X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dc3f65f030628a779318ac75d7ec572f16d61132;p=binutils-gdb.git gas: use flag_mri directly in macro processing Again with the removal of gasp about 20 years ago the extra level of indirection isn't necessary anymore. Drop macro.c's local variable and use the global flag directly. --- diff --git a/gas/as.c b/gas/as.c index 357c13bf27a..39873662a9a 100644 --- a/gas/as.c +++ b/gas/as.c @@ -1310,7 +1310,7 @@ gas_init (void) expr_begin (); eh_begin (); - macro_init (flag_macro_alternate, flag_mri); + macro_init (flag_macro_alternate); dwarf2_init (); diff --git a/gas/macro.c b/gas/macro.c index 25ce962a2f2..5d3b0f22141 100644 --- a/gas/macro.c +++ b/gas/macro.c @@ -34,7 +34,7 @@ #define ISSEP(x) \ ((x) == ' ' || (x) == '\t' || (x) == ',' || (x) == '"' || (x) == ';' \ || (x) == ')' || (x) == '(' \ - || ((macro_alternate || macro_mri) && ((x) == '<' || (x) == '>'))) + || ((macro_alternate || flag_mri) && ((x) == '<' || (x) == '>'))) #define ISBASE(x) \ ((x) == 'b' || (x) == 'B' \ @@ -54,10 +54,6 @@ int macro_defined; static int macro_alternate; -/* Whether we are in MRI mode. */ - -static int macro_mri; - /* Whether we should strip '@' characters. */ #define macro_strip_at false @@ -78,13 +74,12 @@ macro_del_f (void *ent) /* Initialize macro processing. */ void -macro_init (int alternate, int mri) +macro_init (int alternate) { macro_hash = htab_create_alloc (16, hash_string_tuple, eq_string_tuple, macro_del_f, notes_calloc, NULL); macro_defined = 0; macro_alternate = alternate; - macro_mri = mri; } void @@ -101,14 +96,6 @@ macro_set_alternate (int alternate) macro_alternate = alternate; } -/* Switch in and out of MRI mode on the fly. */ - -void -macro_mri_mode (int mri) -{ - macro_mri = mri; -} - /* Read input lines till we get to a TO string. Increase nesting depth if we get a FROM string. Put the results into sb at PTR. @@ -205,7 +192,7 @@ buffer_and_nest (const char *from, const char *to, sb *ptr, if (i < ptr->len && (ptr->ptr[i] == '.' || NO_PSEUDO_DOT - || macro_mri)) + || flag_mri)) { if (! flag_m68k_mri && ptr->ptr[i] == '.') i++; @@ -309,7 +296,7 @@ getstring (size_t idx, sb *in, sb *acc) { while (idx < in->len && (in->ptr[idx] == '"' - || (in->ptr[idx] == '<' && (macro_alternate || macro_mri)) + || (in->ptr[idx] == '<' && (macro_alternate || flag_mri)) || (in->ptr[idx] == '\'' && macro_alternate))) { if (in->ptr[idx] == '<') @@ -423,7 +410,7 @@ get_any_string (size_t idx, sb *in, sb *out) sb_add_string (out, buf); } else if (in->ptr[idx] == '"' - || (in->ptr[idx] == '<' && (macro_alternate || macro_mri)) + || (in->ptr[idx] == '<' && (macro_alternate || flag_mri)) || (macro_alternate && in->ptr[idx] == '\'')) { if (macro_alternate && ! macro_strip_at && in->ptr[idx] != '<') @@ -450,7 +437,7 @@ get_any_string (size_t idx, sb *in, sb *out) && in->ptr[idx] != '\t')) && in->ptr[idx] != ',' && (in->ptr[idx] != '<' - || (! macro_alternate && ! macro_mri))) + || (! macro_alternate && ! flag_mri))) { char tchar = in->ptr[idx]; @@ -553,7 +540,7 @@ do_formals (macro_entry *macro, size_t idx, sb *in) idx = sb_skip_white (idx, in); /* This is a formal. */ name = sb_terminate (&formal->name); - if (! macro_mri + if (! flag_mri && idx < in->len && in->ptr[idx] == ':' && (! is_name_beginner (':') @@ -625,7 +612,7 @@ do_formals (macro_entry *macro, size_t idx, sb *in) } } - if (macro_mri) + if (flag_mri) { formal_entry *formal = new_formal (); @@ -764,7 +751,7 @@ get_apost_token (size_t idx, sb *in, sb *name, int kind) idx = get_token (idx, in, name); if (idx < in->len && in->ptr[idx] == kind - && (! macro_mri || macro_strip_at) + && (! flag_mri || macro_strip_at) && (! macro_strip_at || kind == '@')) idx++; return idx; @@ -838,7 +825,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, if (in->ptr[src] == '&') { sb_reset (&t); - if (macro_mri) + if (flag_mri) { if (src + 1 < in->len && in->ptr[src + 1] == '&') src = sub_actual (src + 2, in, &t, formal_hash, '\'', out, 1); @@ -887,7 +874,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, sb_add_char (out, '&'); src++; } - else if (macro_mri && src < in->len && ISALNUM (in->ptr[src])) + else if (flag_mri && src < in->len && ISALNUM (in->ptr[src])) { int ind; formal_entry *f; @@ -917,7 +904,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, src = sub_actual (src, in, &t, formal_hash, '\'', out, 0); } } - else if ((macro_alternate || macro_mri) + else if ((macro_alternate || flag_mri) && is_name_beginner (in->ptr[src]) && (! inquote || ! macro_strip_at @@ -970,7 +957,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, } } else if (in->ptr[src] == '"' - || (macro_mri && in->ptr[src] == '\'')) + || (flag_mri && in->ptr[src] == '\'')) { inquote = !inquote; sb_add_char (out, in->ptr[src++]); @@ -985,7 +972,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, ++src; } } - else if (macro_mri + else if (flag_mri && in->ptr[src] == '=' && src + 1 < in->len && in->ptr[src + 1] == '=') @@ -1070,7 +1057,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) while (f != NULL && f->index < 0) f = f->next; - if (macro_mri) + if (flag_mri) { /* The macro may be called with an optional qualifier, which may be referred to in the macro body as \0. */ @@ -1105,7 +1092,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) scan = idx; while (scan < in->len && !ISSEP (in->ptr[scan]) - && !(macro_mri && in->ptr[scan] == '\'') + && !(flag_mri && in->ptr[scan] == '\'') && (!macro_alternate && in->ptr[scan] != '=')) scan++; if (scan < in->len && !macro_alternate && in->ptr[scan] == '=') @@ -1162,7 +1149,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) formal_entry **pf; int c; - if (!macro_mri) + if (!flag_mri) { err = _("too many positional arguments"); break; @@ -1196,7 +1183,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) while (f != NULL && f->index < 0); } - if (! macro_mri) + if (! flag_mri) idx = sb_skip_comma (idx, in); else { @@ -1217,7 +1204,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) m->name); } - if (macro_mri) + if (flag_mri) { ptr = str_hash_find (m->formal_hash, macro_strip_at ? "$NARG" : "NARG"); @@ -1233,7 +1220,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) } /* Discard any unnamed formal arguments. */ - if (macro_mri) + if (flag_mri) { formal_entry **pf; @@ -1271,7 +1258,7 @@ check_macro (const char *line, sb *expand, sb line_sb; if (! is_name_beginner (*line) - && (! macro_mri || *line != '.')) + && (! flag_mri || *line != '.')) return 0; s = line + 1; diff --git a/gas/macro.h b/gas/macro.h index 7354826f53c..6386223f7f6 100644 --- a/gas/macro.h +++ b/gas/macro.h @@ -83,10 +83,9 @@ extern htab_t macro_hash; extern int buffer_and_nest (const char *, const char *, sb *, size_t (*) (sb *)); -extern void macro_init (int, int); +extern void macro_init (int); extern void macro_end (void); extern void macro_set_alternate (int); -extern void macro_mri_mode (int); extern macro_entry *define_macro (sb *, sb *, size_t (*) (sb *)); extern int check_macro (const char *, sb *, const char **, macro_entry **); extern void delete_macro (const char *); diff --git a/gas/read.c b/gas/read.c index 0320d0248e7..11ceafb12da 100644 --- a/gas/read.c +++ b/gas/read.c @@ -2784,7 +2784,6 @@ s_mri (int ignore ATTRIBUTE_UNUSED) #ifdef TC_M68K flag_m68k_mri = 1; #endif - macro_mri_mode (1); } else { @@ -2792,7 +2791,6 @@ s_mri (int ignore ATTRIBUTE_UNUSED) #ifdef TC_M68K flag_m68k_mri = 0; #endif - macro_mri_mode (0); } /* Operator precedence changes in m68k MRI mode, so we need to