summaryrefslogtreecommitdiff
path: root/gcc/recog.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-09-13 21:19:34 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-09-13 21:19:34 -0700
commit4bbf910eefafa77900eb9234feac7dce5451e18b (patch)
treeddfa019fe74f8976a92fcdd7a45d5f6e82b77a46 /gcc/recog.h
parentc452dcde0ad257958078a4f0561f5bbd9d8763fa (diff)
downloadgcc-4bbf910eefafa77900eb9234feac7dce5451e18b.tar.gz
recog.h (INSN_OUTPUT_FORMAT_*): New.
* 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. From-SVN: r29389
Diffstat (limited to 'gcc/recog.h')
-rw-r--r--gcc/recog.h11
1 files changed, 9 insertions, 2 deletions
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[];