/* Generate code from to output assembler insns as recognized from rtl.
Copyright (C) 1987, 1988, 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2002,
- 2003, 2004 Free Software Foundation, Inc.
+ 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GCC.
const char *template;
int code_number;
int index_number;
+ const char *filename;
int lineno;
int n_operands; /* Number of operands this insn recognizes */
int n_dups; /* Number times match_dup appears in pattern */
for (d = idata; d; d = d->next)
{
+ printf (" /* %s:%d */\n", d->filename, d->lineno);
printf (" {\n");
if (d->name)
printf ("#endif\n");
break;
default:
- abort ();
+ gcc_unreachable ();
}
if (d->name && d->name[0] != '*')
printf ("output_%d (rtx *operands ATTRIBUTE_UNUSED, rtx insn ATTRIBUTE_UNUSED)\n",
d->code_number);
puts ("{");
-
+ print_rtx_ptr_loc (template);
puts (template + 1);
puts ("}");
}
for (i = 0, cp = &template[1]; *cp; )
{
+ const char *ep, *sp;
+
while (ISSPACE (*cp))
cp++;
printf (" \"");
- while (!IS_VSPACE (*cp) && *cp != '\0')
+
+ for (ep = sp = cp; !IS_VSPACE (*ep) && *ep != '\0'; ++ep)
+ if (!ISSPACE (*ep))
+ sp = ep + 1;
+
+ if (sp != ep)
+ message_with_line (d->lineno,
+ "trailing whitespace in output template");
+
+ while (cp < sp)
{
putchar (*cp);
cp++;
d->code_number = next_code_number;
d->index_number = next_index_number;
+ d->filename = read_rtx_filename;
d->lineno = lineno;
if (XSTR (insn, 0)[0])
d->name = XSTR (insn, 0);
d->code_number = next_code_number;
d->index_number = next_index_number;
+ d->filename = read_rtx_filename;
d->lineno = lineno;
d->name = 0;
d->code_number = next_code_number;
d->index_number = next_index_number;
+ d->filename = read_rtx_filename;
d->lineno = lineno;
if (XSTR (insn, 0)[0])
d->name = XSTR (insn, 0);
d->code_number = next_code_number;
d->index_number = next_index_number;
+ d->filename = read_rtx_filename;
d->lineno = lineno;
d->name = 0;
progname = "genoutput";
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
for (p = ",#*+=&%!1234567890"; *p; p++)
for (d = -9; d < 9; d++)
- if (constraint_len (p, d) != d)
- abort ();
+ gcc_assert (constraint_len (p, d) == d);
}
static int
{
/* Check that we still match defaults.h . First we do a generation-time
check that fails if the value is not the expected one... */
- if (DEFAULT_CONSTRAINT_LEN (*p, p) != 1)
- abort ();
+ gcc_assert (DEFAULT_CONSTRAINT_LEN (*p, p) == 1);
/* And now a compile-time check that should give a diagnostic if the
definition doesn't exactly match. */
#define DEFAULT_CONSTRAINT_LEN(C,STR) 1