public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Jan Beulich <jbeulich@suse.com>
To: Binutils <binutils@sourceware.org>
Subject: [PATCH 3/4] gas: use flag_mri directly in macro processing
Date: Wed, 8 Mar 2023 17:08:39 +0100	[thread overview]
Message-ID: <0cdb6ff1-8f31-8222-629f-cb991a1efb63@suse.com> (raw)
In-Reply-To: <bdf364c0-c333-095b-47e0-24948906071e@suse.com>

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.

--- a/gas/as.c
+++ b/gas/as.c
@@ -1307,7 +1307,7 @@ gas_init (void)
   input_scrub_begin ();
   expr_begin ();
 
-  macro_init (flag_macro_alternate, flag_mri);
+  macro_init (flag_macro_alternate);
 
   dwarf2_init ();
 
--- 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
 
       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 *
 	  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 *
 			 && 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 i
       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 i
 	}
     }
 
-  if (macro_mri)
+  if (flag_mri)
     {
       formal_entry *formal = new_formal ();
 
@@ -764,7 +751,7 @@ get_apost_token (size_t idx, sb *in, sb
   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, form
       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, form
 	      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, form
 	      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, form
 	    }
 	}
       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, form
 	      ++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_
   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_
       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_
 	      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_
 	  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_
 		    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_
     }
 
   /* Discard any unnamed formal arguments.  */
-  if (macro_mri)
+  if (flag_mri)
     {
       formal_entry **pf;
 
@@ -1271,7 +1258,7 @@ check_macro (const char *line, sb *expan
   sb line_sb;
 
   if (! is_name_beginner (*line)
-      && (! macro_mri || *line != '.'))
+      && (! flag_mri || *line != '.'))
     return 0;
 
   s = line + 1;
--- 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 *);
--- a/gas/read.c
+++ b/gas/read.c
@@ -2746,7 +2746,6 @@ s_mri (int ignore ATTRIBUTE_UNUSED)
 #ifdef TC_M68K
       flag_m68k_mri = 1;
 #endif
-      macro_mri_mode (1);
     }
   else
     {
@@ -2754,7 +2753,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


  parent reply	other threads:[~2023-03-08 16:08 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-08 16:05 [PATCH 0/4] gas: tidy macro interfacing after removal of gasp Jan Beulich
2023-03-08 16:07 ` [PATCH 1/4] gas: drop function pointer parameter from macro_init() Jan Beulich
2023-03-08 16:08 ` [PATCH 2/4] gas: isolate macro_strip_at to macro.c Jan Beulich
2023-03-08 16:08 ` Jan Beulich [this message]
2023-03-08 16:09 ` [PATCH 4/4] gas: expose flag_macro_alternate globally Jan Beulich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0cdb6ff1-8f31-8222-629f-cb991a1efb63@suse.com \
    --to=jbeulich@suse.com \
    --cc=binutils@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).