* config/tc-dvp.c (assemble_vif): Watch for macro insns.
authorDoug Evans <dje@google.com>
Tue, 7 Apr 1998 00:12:27 +0000 (00:12 +0000)
committerDoug Evans <dje@google.com>
Tue, 7 Apr 1998 00:12:27 +0000 (00:12 +0000)
gas/ChangeLog
gas/config/tc-dvp.c

index 267902d99a29996079953b5450cee07ef86a4408..34db311746f1dd359144c5f10ec0bb4c6d241e66 100644 (file)
@@ -1,3 +1,9 @@
+start-sanitize-sky
+Mon Apr  6 17:08:47 1998  Doug Evans  <devans@canuck.cygnus.com>
+
+       * config/tc-dvp.c (assemble_vif): Watch for macro insns.
+
+end-sanitize-sky
 Mon Apr  6 12:06:39 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
 
        * config/tc-m68k.c (m68k_ip, case "#B"): Install the offset of the
index 64e516bd1c593cc0d4e57179f561b06e3a8418b8..b3c523a1148d8e99f217b540a09c2f5c49d27503 100644 (file)
@@ -474,6 +474,28 @@ assemble_vif (str)
   const char *file;
   /* Length in 32 bit words.  */
   int data_len;
+  /* Macro expansion, if there is one.  */
+  char * macstr;
+
+  /* First check for macros.  */
+  macstr = dvp_expand_macro (vif_macros, vif_macro_count, str);
+  if (macstr)
+    {
+      /* The macro may expand into several insns (delimited with '\n'),
+        so loop.  */
+      char * next = macstr;
+      do
+       {
+         char *p = strchr (next, '\n');
+         if (p)
+           *p = 0;
+         assemble_vif (next);
+         next = p ? p + 1 : 0;
+       }
+      while (next);
+      free (macstr);
+      return;
+    }
 
   opcode = assemble_one_insn (DVP_VIF,
                              vif_opcode_lookup_asm (str), vif_operands,