From ae9660c87616b7088dee7ed41b203b5fdea0217c Mon Sep 17 00:00:00 2001 From: rth Date: Tue, 14 Sep 1999 04:19:34 +0000 Subject: * recog.h (INSN_OUTPUT_FORMAT_*): New. (struct insn_data): Merge `template' and `outfun' into `output'. Add `output_format'. * genoutput.c (INSN_OUTPUT_FORMAT_*): New. (struct data): Remove `outfun'; add `output_format'. (name_for_index): Remove declaration. (output_insn_data): Handle output formats. (process_template): Emit the bare array for @. (gen_expand, gen_split): Set output_format to NONE. * output.h (get_insn_template): Declare. * final.c (get_insn_template): New. (final_scan_insn): Use it. * toplev.c (compile_file): Likewise. * c4x/c4x.c (c4x_process_after_reload): Likewise. * i860/i860.c (output_delayed_branch): Likewise. (output_delay_insn): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29389 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/recog.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'gcc/recog.h') diff --git a/gcc/recog.h b/gcc/recog.h index 0d4cc977cf5..e5875d59293 100644 --- a/gcc/recog.h +++ b/gcc/recog.h @@ -211,17 +211,24 @@ struct insn_operand_data char strict_low; }; +/* Legal values for insn_data.output_format. Indicate what type of data + is stored in insn_data.output. */ +#define INSN_OUTPUT_FORMAT_NONE 0 /* abort */ +#define INSN_OUTPUT_FORMAT_SINGLE 1 /* const char * */ +#define INSN_OUTPUT_FORMAT_MULTI 2 /* const char * const * */ +#define INSN_OUTPUT_FORMAT_FUNCTION 3 /* const char * (*)(...) */ + struct insn_data { const char *name; - const char *template; - insn_output_fn outfun; + const PTR output; insn_gen_fn genfun; const struct insn_operand_data *operand; unsigned char n_operands; unsigned char n_dups; unsigned char n_alternatives; + unsigned char output_format; }; extern const struct insn_data insn_data[]; -- cgit v1.2.1