From 9a5834ae8dc3c4b6bb29ee487186a85b89378985 Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Sun, 12 May 2002 18:43:33 +0000 Subject: gensupport.c (n_comma_elts): Moved here from genattrtab.c. * gensupport.c (n_comma_elts): Moved here from genattrtab.c. (scan_comma_elt): New function. Accepts whitespace in comma lists. * gensupport.h: Prototype new routines. * genattr.c (gen_attr): Use scan_comma_elt. Avoid unnecessary use of printf. * genattrtab.c (n_comma_elts): Moved to gensupport.c. (next_comma_elt): Use scan_comma_elt. * config/i386/i386.md: Use new attribute notation to break up long lines in define_attr forms. From-SVN: r53403 --- gcc/genattr.c | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) (limited to 'gcc/genattr.c') diff --git a/gcc/genattr.c b/gcc/genattr.c index 60045ff..b688bd4 100644 --- a/gcc/genattr.c +++ b/gcc/genattr.c @@ -86,34 +86,30 @@ static void gen_attr (attr) rtx attr; { - const char *p; + const char *p, *tag; int is_const = GET_CODE (XEXP (attr, 2)) == CONST; printf ("#define HAVE_ATTR_%s\n", XSTR (attr, 0)); /* If numeric attribute, don't need to write an enum. */ - if (*XSTR (attr, 1) == '\0') + p = XSTR (attr, 1); + if (*p == '\0') printf ("extern int get_attr_%s PARAMS ((%s));\n", XSTR (attr, 0), (is_const ? "void" : "rtx")); else { printf ("enum attr_%s {", XSTR (attr, 0)); - write_upcase (XSTR (attr, 0)); - printf ("_"); - for (p = XSTR (attr, 1); *p != '\0'; p++) + while ((tag = scan_comma_elt (&p)) != 0) { - if (*p == ',') - { - printf (", "); - write_upcase (XSTR (attr, 0)); - printf ("_"); - } - else - putchar (TOUPPER(*p)); + write_upcase (XSTR (attr, 0)); + putchar ('_'); + while (tag != p) + putchar (TOUPPER (*tag++)); + fputs (", ", stdout); } - printf ("};\n"); + fputs ("};\n", stdout); printf ("extern enum attr_%s get_attr_%s PARAMS ((%s));\n\n", XSTR (attr, 0), XSTR (attr, 0), (is_const ? "void" : "rtx")); } @@ -122,11 +118,12 @@ gen_attr (attr) variables used by `insn_current_length'. */ if (! strcmp (XSTR (attr, 0), "length")) { - printf ("extern void shorten_branches PARAMS ((rtx));\n"); - printf ("extern int insn_default_length PARAMS ((rtx));\n"); - printf ("extern int insn_variable_length_p PARAMS ((rtx));\n"); - printf ("extern int insn_current_length PARAMS ((rtx));\n\n"); - printf ("#include \"insn-addr.h\"\n\n"); + puts ("\ +extern void shorten_branches PARAMS ((rtx));\n\ +extern int insn_default_length PARAMS ((rtx));\n\ +extern int insn_variable_length_p PARAMS ((rtx));\n\ +extern int insn_current_length PARAMS ((rtx));\n\n\ +#include \"insn-addr.h\"\n"); } } -- cgit v1.1