X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fgenpreds.c;h=de913491469cbcd2e59461f4bbcad328d7eab721;hb=3cb4b8e201bbdc2105b79eb5995ddd5e6c88c56b;hp=e042427e496f561fe21f772df2881356184cafc6;hpb=77c2564f74400dabf79543b2a87a254532ed7a53;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/genpreds.c b/gcc/genpreds.c index e042427e496..de913491469 100644 --- a/gcc/genpreds.c +++ b/gcc/genpreds.c @@ -2,7 +2,7 @@ - prototype declarations for operand predicates (tm-preds.h) - function definitions of operand predicates, if defined new-style (insn-preds.c) - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GCC. @@ -67,9 +67,8 @@ validate_exp (rtx exp, const char *name, int lineno) { if (!ISDIGIT (*p) && !ISLOWER (*p)) { - message_with_line (lineno, "%s: invalid character in path " - "string '%s'", name, XSTR (exp, 1)); - have_error = 1; + error_with_line (lineno, "%s: invalid character in path " + "string '%s'", name, XSTR (exp, 1)); return true; } } @@ -82,10 +81,9 @@ validate_exp (rtx exp, const char *name, int lineno) return false; default: - message_with_line (lineno, - "%s: cannot use '%s' in a predicate expression", - name, GET_RTX_NAME (GET_CODE (exp))); - have_error = 1; + error_with_line (lineno, + "%s: cannot use '%s' in a predicate expression", + name, GET_RTX_NAME (GET_CODE (exp))); return true; } } @@ -95,35 +93,7 @@ validate_exp (rtx exp, const char *name, int lineno) static void process_define_predicate (rtx defn, int lineno) { - struct pred_data *pred; - const char *p; - - if (!ISALPHA (XSTR (defn, 0)[0]) && XSTR (defn, 0)[0] != '_') - goto bad_name; - for (p = XSTR (defn, 0) + 1; *p; p++) - if (!ISALNUM (*p) && *p != '_') - goto bad_name; - - if (validate_exp (XEXP (defn, 1), XSTR (defn, 0), lineno)) - return; - - pred = XCNEW (struct pred_data); - pred->name = XSTR (defn, 0); - pred->exp = XEXP (defn, 1); - pred->c_block = XSTR (defn, 2); - - if (GET_CODE (defn) == DEFINE_SPECIAL_PREDICATE) - pred->special = true; - - add_predicate (pred); - return; - - bad_name: - message_with_line (lineno, - "%s: predicate name must be a valid C function name", - XSTR (defn, 0)); - have_error = 1; - return; + validate_exp (XEXP (defn, 1), XSTR (defn, 0), lineno); } /* Given a predicate, if it has an embedded C block, write the block @@ -765,12 +735,11 @@ add_constraint (const char *name, const char *regclass, if (!ISALPHA (name[0]) && name[0] != '_') { if (name[1] == '\0') - message_with_line (lineno, "constraint name '%s' is not " - "a letter or underscore", name); + error_with_line (lineno, "constraint name '%s' is not " + "a letter or underscore", name); else - message_with_line (lineno, "constraint name '%s' does not begin " - "with a letter or underscore", name); - have_error = 1; + error_with_line (lineno, "constraint name '%s' does not begin " + "with a letter or underscore", name); return; } for (p = name; *p; p++) @@ -780,11 +749,10 @@ add_constraint (const char *name, const char *regclass, need_mangled_name = true; else { - message_with_line (lineno, - "constraint name '%s' must be composed of " - "letters, digits, underscores, and " - "angle brackets", name); - have_error = 1; + error_with_line (lineno, + "constraint name '%s' must be composed of " + "letters, digits, underscores, and " + "angle brackets", name); return; } } @@ -792,13 +760,12 @@ add_constraint (const char *name, const char *regclass, if (strchr (generic_constraint_letters, name[0])) { if (name[1] == '\0') - message_with_line (lineno, "constraint letter '%s' cannot be " - "redefined by the machine description", name); + error_with_line (lineno, "constraint letter '%s' cannot be " + "redefined by the machine description", name); else - message_with_line (lineno, "constraint name '%s' cannot be defined by " - "the machine description, as it begins with '%c'", - name, name[0]); - have_error = 1; + error_with_line (lineno, "constraint name '%s' cannot be defined by " + "the machine description, as it begins with '%c'", + name, name[0]); return; } @@ -817,25 +784,22 @@ add_constraint (const char *name, const char *regclass, if (!strcmp ((*iter)->name, name)) { - message_with_line (lineno, "redefinition of constraint '%s'", name); + error_with_line (lineno, "redefinition of constraint '%s'", name); message_with_line ((*iter)->lineno, "previous definition is here"); - have_error = 1; return; } else if (!strncmp ((*iter)->name, name, (*iter)->namelen)) { - message_with_line (lineno, "defining constraint '%s' here", name); + error_with_line (lineno, "defining constraint '%s' here", name); message_with_line ((*iter)->lineno, "renders constraint '%s' " "(defined here) a prefix", (*iter)->name); - have_error = 1; return; } else if (!strncmp ((*iter)->name, name, namelen)) { - message_with_line (lineno, "constraint '%s' is a prefix", name); + error_with_line (lineno, "constraint '%s' is a prefix", name); message_with_line ((*iter)->lineno, "of constraint '%s' " "(defined here)", (*iter)->name); - have_error = 1; return; } } @@ -856,43 +820,36 @@ add_constraint (const char *name, const char *regclass, GET_RTX_NAME (appropriate_code))) { if (name[1] == '\0') - message_with_line (lineno, "constraint letter '%c' is reserved " - "for %s constraints", - name[0], GET_RTX_NAME (appropriate_code)); + error_with_line (lineno, "constraint letter '%c' is reserved " + "for %s constraints", + name[0], GET_RTX_NAME (appropriate_code)); else - message_with_line (lineno, "constraint names beginning with '%c' " - "(%s) are reserved for %s constraints", - name[0], name, - GET_RTX_NAME (appropriate_code)); - - have_error = 1; + error_with_line (lineno, "constraint names beginning with '%c' " + "(%s) are reserved for %s constraints", + name[0], name, GET_RTX_NAME (appropriate_code)); return; } if (is_memory) { if (name[1] == '\0') - message_with_line (lineno, "constraint letter '%c' cannot be a " - "memory constraint", name[0]); + error_with_line (lineno, "constraint letter '%c' cannot be a " + "memory constraint", name[0]); else - message_with_line (lineno, "constraint name '%s' begins with '%c', " - "and therefore cannot be a memory constraint", - name, name[0]); - - have_error = 1; + error_with_line (lineno, "constraint name '%s' begins with '%c', " + "and therefore cannot be a memory constraint", + name, name[0]); return; } else if (is_address) { if (name[1] == '\0') - message_with_line (lineno, "constraint letter '%c' cannot be a " - "memory constraint", name[0]); + error_with_line (lineno, "constraint letter '%c' cannot be a " + "memory constraint", name[0]); else - message_with_line (lineno, "constraint name '%s' begins with '%c', " - "and therefore cannot be a memory constraint", - name, name[0]); - - have_error = 1; + error_with_line (lineno, "constraint name '%s' begins with '%c', " + "and therefore cannot be a memory constraint", + name, name[0]); return; } } @@ -1353,7 +1310,7 @@ write_insn_preds_c (void) #include \"flags.h\"\n\ #include \"hard-reg-set.h\"\n\ #include \"resource.h\"\n\ -#include \"toplev.h\"\n\ +#include \"diagnostic-core.h\"\n\ #include \"reload.h\"\n\ #include \"regs.h\"\n\ #include \"tm-constrs.h\"\n"); @@ -1409,7 +1366,7 @@ main (int argc, char **argv) progname = argv[0]; if (argc <= 1) fatal ("no input file name"); - if (init_md_reader_args_cb (argc, argv, parse_option) != SUCCESS_EXIT_CODE) + if (!init_rtx_reader_args_cb (argc, argv, parse_option)) return FATAL_EXIT_CODE; while ((defn = read_md_rtx (&pattern_lineno, &next_insn_code)) != 0)