*** empty log message ***
authorRichard Stallman <rms@gnu.org>
Thu, 21 May 1992 19:26:56 +0000 (19:26 +0000)
committerRichard Stallman <rms@gnu.org>
Thu, 21 May 1992 19:26:56 +0000 (19:26 +0000)
From-SVN: r1042

gcc/stmt.c

index e55b2bd7046d7d5fa370002cb714baf23a5e2bf9..6b874116640d5d931003f967f71fc466cd4398b0 100644 (file)
@@ -1000,7 +1000,7 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
   rtx body;
   int ninputs = list_length (inputs);
   int noutputs = list_length (outputs);
-  int nclobbers = list_length (clobbers);
+  int nclobbers;
   tree tail;
   register int i;
   /* Vector of RTX's of evaluated output operands.  */
@@ -1008,6 +1008,16 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
   /* The insn we have emitted.  */
   rtx insn;
 
+  /* Count the number of meaningful clobbered registers, ignoring what
+     we would ignore later.  */
+  nclobbers = 0;
+  for (tail = clobbers; tail; tail = TREE_CHAIN (tail))
+    {
+      char *regname = TREE_STRING_POINTER (TREE_VALUE (tail));
+      if (decode_reg_name (regname) >= 0)
+       ++nclobbers;
+    }
+
   last_expr_type = 0;
 
   for (i = 0, tail = outputs; tail; tail = TREE_CHAIN (tail), i++)
@@ -1168,7 +1178,7 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
 
       /* Store (clobber REG) for each clobbered register specified.  */
 
-      for (tail = clobbers; tail; tail = TREE_CHAIN (tail), i++)
+      for (tail = clobbers; tail; tail = TREE_CHAIN (tail))
        {
          char *regname = TREE_STRING_POINTER (TREE_VALUE (tail));
          int j = decode_reg_name (regname);
@@ -1183,7 +1193,7 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
            }
 
          /* Use QImode since that's guaranteed to clobber just one reg.  */
-         XVECEXP (body, 0, i)
+         XVECEXP (body, 0, i++)
            = gen_rtx (CLOBBER, VOIDmode, gen_rtx (REG, QImode, j));
        }