Mostly to reduce cut-&-paste. gcc/ * genemit.cc (start_gen_insn): New function, split out from... (gen_insn, gen_expand): ...here. --- gcc/genemit.cc | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-)
diff --git a/gcc/genemit.cc b/gcc/genemit.cc index b73a45a0412..90f36e293b4 100644 --- a/gcc/genemit.cc +++ b/gcc/genemit.cc @@ -427,13 +427,32 @@ maybe_queue_insn (const md_rtx_info &info) queue.safe_push (info); } +/* Output the function name, argument declarations, and initial function + body for a pattern called NAME, given that it has the properties + in STATS. */ + +static void +start_gen_insn (FILE *file, const char *name, const pattern_stats &stats) +{ + fprintf (file, "rtx\ngen_%s (", name); + if (stats.num_generator_args) + for (int i = 0; i < stats.num_generator_args; i++) + if (i) + fprintf (file, ",\n\trtx operand%d ATTRIBUTE_UNUSED", i); + else + fprintf (file, "rtx operand%d ATTRIBUTE_UNUSED", i); + else + fprintf (file, "void"); + fprintf (file, ")\n"); + fprintf (file, "{\n"); +} + /* Generate the `gen_...' function for a DEFINE_INSN. */ static void gen_insn (const md_rtx_info &info, FILE *file) { struct pattern_stats stats; - int i; /* Find out how many operands this function has. */ rtx insn = info.def; @@ -442,17 +461,7 @@ gen_insn (const md_rtx_info &info, FILE *file) fatal_at (info.loc, "match_dup operand number has no match_operand"); /* Output the function name and argument declarations. */ - fprintf (file, "rtx\ngen_%s (", XSTR (insn, 0)); - if (stats.num_generator_args) - for (i = 0; i < stats.num_generator_args; i++) - if (i) - fprintf (file, ",\n\trtx operand%d ATTRIBUTE_UNUSED", i); - else - fprintf (file, "rtx operand%d ATTRIBUTE_UNUSED", i); - else - fprintf (file, "void"); - fprintf (file, ")\n"); - fprintf (file, "{\n"); + start_gen_insn (file, XSTR (insn, 0), stats); /* Output code to construct and return the rtl for the instruction body. */ @@ -499,17 +508,7 @@ gen_expand (const md_rtx_info &info, FILE *file) "numbers above all other operands", XSTR (expand, 0)); /* Output the function name and argument declarations. */ - fprintf (file, "rtx\ngen_%s (", XSTR (expand, 0)); - if (stats.num_generator_args) - for (i = 0; i < stats.num_generator_args; i++) - if (i) - fprintf (file, ",\n\trtx operand%d", i); - else - fprintf (file, "rtx operand%d", i); - else - fprintf (file, "void"); - fprintf (file, ")\n"); - fprintf (file, "{\n"); + start_gen_insn (file, XSTR (expand, 0), stats); /* If we don't have any C code to write, only one insn is being written, and no MATCH_DUPs are present, we can just return the desired insn -- 2.43.0