- printf ("#ifdef HAVE_mov");
- for (p = cc_names[i]; *p; p++)
- printf ("%c", *p >= 'A' && *p <= 'Z' ? *p - 'A' + 'a' : *p);
- printf ("\n");
- printf (" if (HAVE_mov");
- for (p = cc_names[i]; *p; p++)
- printf ("%c", *p >= 'A' && *p <= 'Z' ? *p - 'A' + 'a' : *p);
- printf (")\n");
- printf (" mov_optab->handlers[(int) %smode].insn_code = CODE_FOR_mov",
- cc_names[i]);
- for (p = cc_names[i]; *p; p++)
- printf ("%c", *p >= 'A' && *p <= 'Z' ? *p - 'A' + 'a' : *p);
- printf (";\n#endif\n");
- }
-
- printf ("}\n");
-#endif
-}
-\f
-char *
-xmalloc (size)
- unsigned size;
-{
- register char *val = (char *) malloc (size);
-
- if (val == 0)
- fatal ("virtual memory exhausted");
-
- return val;
-}
-
-char *
-xrealloc (ptr, size)
- char *ptr;
- unsigned size;
-{
- char *result = (char *) realloc (ptr, size);
- if (!result)
- fatal ("virtual memory exhausted");
- return result;
-}
+ rtx elt = XVECEXP (split, 0, i);
+ if (GET_CODE (elt) == MATCH_SCRATCH)
+ {
+ int last_insn_nr = insn_nr;
+ int cur_insn_nr = insn_nr;
+ int j;
+ for (j = i + 1; j < XVECLEN (split, 0); j++)
+ if (GET_CODE (XVECEXP (split, 0, j)) == MATCH_DUP)
+ {
+ if (XINT (XVECEXP (split, 0, j), 0) == XINT (elt, 0))
+ last_insn_nr = cur_insn_nr;
+ }
+ else if (GET_CODE (XVECEXP (split, 0, j)) != MATCH_SCRATCH)
+ cur_insn_nr++;
+
+ printf (" if ((operands[%d] = peep2_find_free_register (%d, %d, \"%s\", %smode, &_regs_allocated)) == NULL_RTX)\n\
+ return NULL;\n",
+ XINT (elt, 0),
+ insn_nr, last_insn_nr,
+ XSTR (elt, 1),
+ GET_MODE_NAME (GET_MODE (elt)));