summaryrefslogtreecommitdiff
path: root/gcc/recog.h
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>1999-09-14 04:19:34 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>1999-09-14 04:19:34 +0000
commitae9660c87616b7088dee7ed41b203b5fdea0217c (patch)
treeddfa019fe74f8976a92fcdd7a45d5f6e82b77a46 /gcc/recog.h
parentd3cc0e20db1d458bd162b59a3ed4eb423ea9eb2c (diff)
downloadgcc-ae9660c87616b7088dee7ed41b203b5fdea0217c.tar.gz
* 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
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[];