From 7ddf71e3171fb2d809e7baf6a94c9243b8d9fcac Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 8 Apr 2009 15:00:34 +0000 Subject: genoutput.c (validate_optab_operands): New. 2009-04-08 Paolo Bonzini * genoutput.c (validate_optab_operands): New. (gen_insn, gen_expand): Call it. * genflags.c (gen_insn): Detect misused iterators. (main): Pass line_no to gen_insn, exit with status 1 on error. * genextract.c (line_no): Make global. (VEC_safe_set_locstr): Change assertion to error message. (main): Exit with status 1 on error. From-SVN: r145746 --- gcc/genextract.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'gcc/genextract.c') diff --git a/gcc/genextract.c b/gcc/genextract.c index c983110..c414891 100644 --- a/gcc/genextract.c +++ b/gcc/genextract.c @@ -80,6 +80,8 @@ struct accum_extract VEC(char,heap) *pathstr; }; +int line_no; + /* Forward declarations. */ static void walk_rtx (rtx, struct accum_extract *); @@ -187,8 +189,13 @@ VEC_safe_set_locstr (VEC(locstr,heap) **vp, unsigned int ix, char *str) { if (ix < VEC_length (locstr, *vp)) { - gcc_assert (VEC_index (locstr, *vp, ix) == 0); - VEC_replace (locstr, *vp, ix, str); + if (VEC_index (locstr, *vp, ix)) + { + message_with_line (line_no, "repeated operand number %d", ix); + have_error = 1; + } + else + VEC_replace (locstr, *vp, ix, str); } else { @@ -399,7 +406,6 @@ main (int argc, char **argv) struct code_ptr *link; const char *name; int insn_code_number; - int line_no; progname = "genextract"; @@ -423,6 +429,9 @@ main (int argc, char **argv) } } + if (have_error) + return FATAL_EXIT_CODE; + print_header (); /* Write out code to handle peepholes and the insn_codes that it should -- cgit v1.1