aboutsummaryrefslogtreecommitdiff
path: root/gcc/genopinit.c
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2014-11-01 13:34:15 +0000
committerAndrew Macleod <amacleod@gcc.gnu.org>2014-11-01 13:34:15 +0000
commitb0710fe1b155d3aff0fda3fcff291c09a727ec82 (patch)
treea1d684f3d10d3446cf010b46c1c96adbd1c76a84 /gcc/genopinit.c
parenta5474c4cb0cd4499437eeffd7223bb7533100d48 (diff)
downloadgcc-b0710fe1b155d3aff0fda3fcff291c09a727ec82.zip
gcc-b0710fe1b155d3aff0fda3fcff291c09a727ec82.tar.gz
gcc-b0710fe1b155d3aff0fda3fcff291c09a727ec82.tar.bz2
2014-11-01 Andrew MacLeod <amacleod@redhat,com>
* optabs.h: Flatten insn-codes.h to source files. Move some prototypes and structs to genopinit.c. Adjust protyoptypes to match optabs.c. * genopinit.c (main): Emit prototypes and structs into insn-opinit.h. * optabs.c: (gen_move_insn): Move to expr.c. * expr.h: Move protypes and enums to optabs.h. * expr.c: (gen_move_insn): Relocate from optabs.c. * genemit.c (main): Include insn-codes.h. * gengtype.c (open_base_files): Include insn-codes.h. * asan.c: Include insn-codes.h. * bb-reorder.c: Ditto. * builtins.c: Ditto. * calls.c: Ditto. * cfgexpand.c: Ditto. * cilk-common.c: Ditto. * combine.c: Ditto. * dojump.c: Ditto. * dse.c: Ditto. * except.c: Ditto. * explow.c: Ditto. * expmed.c: Ditto. * function.c: Ditto. * ifcvt.c: Ditto. * internal-fn.c: Ditto. * loop-unroll.c: Ditto. * lra.c: Ditto. * modulo-sched.c: Ditto. * omp-low.c: Ditto. * postreload.c: Ditto. * ree.c: Ditto. * reload.c: Ditto. * reload1.c: Ditto. * shrink-wrap.c: Ditto. * simplify-rtx.c: Ditto. * stmt.c: Ditto. * target-globals.c: Ditto. * targhooks.c: Ditto. * toplev.c: Ditto. * tree-if-conv.c: Ditto. * tree-ssa-forwprop.c: Ditto. * tree-ssa-loop-prefetch.c: Ditto. * tree-ssa-math-opts.c: Ditto. * tree-ssa-phiopt.c: Ditto. * tree-ssa-reassoc.c: Ditto. * tree-switch-conversion.c: Ditto. * tree-vect-data-refs.c: Ditto. * tree-vect-generic.c: Ditto. * tree-vect-loop.c: Ditto. * tree-vect-patterns.c: Ditto. * tree-vect-slp.c: Ditto. * tree-vect-stmts.c: Ditto. * tree-vrp.c: Ditto. * value-prof.c: Ditto. * config/aarch64/aarch64-builtins.c: Ditto. * config/alpha/alpha.c: Ditto. * config/arm/arm.c: Ditto. * config/cris/cris.c: Ditto. * config/epiphany/epiphany.c: Ditto. * config/frv/frv.c: Ditto. * config/h8300/h8300.c: Ditto. * config/ia64/ia64.c: Ditto. * config/iq2000/iq2000.c: Ditto. * config/m32c/m32c.c: Ditto. * config/mep/mep.c: Ditto. * config/microblaze/microblaze.c: Ditto. * config/mips/mips.c: Ditto. * config/mn10300/mn10300.c: Ditto. * config/moxie/moxie.c: Ditto. * config/msp430/msp430.c: Ditto. * config/nios2/nios2.c: Ditto. * config/pa/pa.c: Ditto. * config/rl78/rl78.c: Ditto. * config/rs6000/rs6000.c: Ditto. * config/rx/rx.c: Ditto. * config/s390/s390.c: Ditto. * config/sh/sh.c: Ditto. * config/sh/sh_treg_combine.cc: Ditto. * config/spu/spu.c: Ditto. * config/stormy16/stormy16.c: Ditto. * config/tilegx/mul-tables.c: Ditto. * config/tilegx/tilegx.c: Ditto. * config/tilepro/mul-tables.c: Ditto. * config/tilepro/tilepro.c: Ditto. * config/vax/vax.c: Ditto. From-SVN: r217005
Diffstat (limited to 'gcc/genopinit.c')
-rw-r--r--gcc/genopinit.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/gcc/genopinit.c b/gcc/genopinit.c
index b8a2827..2d14d12 100644
--- a/gcc/genopinit.c
+++ b/gcc/genopinit.c
@@ -398,6 +398,68 @@ main (int argc, char **argv)
fprintf (h_file, "#define NUM_OPTAB_PATTERNS %u\n",
(unsigned) patterns.length ());
+ fprintf (h_file,
+ "typedef enum optab_tag optab;\n"
+ "typedef enum optab_tag convert_optab;\n"
+ "typedef enum optab_tag direct_optab;\n"
+ "\n"
+ "struct optab_libcall_d\n"
+ "{\n"
+ " char libcall_suffix;\n"
+ " const char *libcall_basename;\n"
+ " void (*libcall_gen) (optab, const char *name,\n"
+ " char suffix, machine_mode);\n"
+ "};\n"
+ "\n"
+ "struct convert_optab_libcall_d\n"
+ "{\n"
+ " const char *libcall_basename;\n"
+ " void (*libcall_gen) (convert_optab, const char *name,\n"
+ " machine_mode, machine_mode);\n"
+ "};\n"
+ "\n"
+ "/* Given an enum insn_code, access the function to construct\n"
+ " the body of that kind of insn. */\n"
+ "#define GEN_FCN(CODE) (insn_data[CODE].genfun)\n"
+ "\n"
+ "/* Contains the optab used for each rtx code, and vice-versa. */\n"
+ "extern const optab code_to_optab_[NUM_RTX_CODE];\n"
+ "extern const enum rtx_code optab_to_code_[NUM_OPTABS];\n"
+ "\n"
+ "static inline optab\n"
+ "code_to_optab (enum rtx_code code)\n"
+ "{\n"
+ " return code_to_optab_[code];\n"
+ "}\n"
+ "\n"
+ "static inline enum rtx_code\n"
+ "optab_to_code (optab op)\n"
+ "{\n"
+ " return optab_to_code_[op];\n"
+ "}\n"
+ "\n"
+ "extern const struct convert_optab_libcall_d convlib_def[NUM_CONVLIB_OPTABS];\n"
+ "extern const struct optab_libcall_d normlib_def[NUM_NORMLIB_OPTABS];\n"
+ "\n"
+ "/* Returns the active icode for the given (encoded) optab. */\n"
+ "extern enum insn_code raw_optab_handler (unsigned);\n"
+ "extern bool swap_optab_enable (optab, machine_mode, bool);\n"
+ "\n"
+ "/* Target-dependent globals. */\n"
+ "struct target_optabs {\n"
+ " /* Patterns that are used by optabs that are enabled for this target. */\n"
+ " bool pat_enable[NUM_OPTAB_PATTERNS];\n"
+ "};\n"
+ "extern void init_all_optabs (struct target_optabs *);\n"
+ "\n"
+ "extern struct target_optabs default_target_optabs;\n"
+ "extern struct target_optabs *this_fn_optabs;\n"
+ "#if SWITCHABLE_TARGET\n"
+ "extern struct target_optabs *this_target_optabs;\n"
+ "#else\n"
+ "#define this_target_optabs (&default_target_optabs)\n"
+ "#endif\n");
+
fprintf (s_file,
"#include \"config.h\"\n"
"#include \"system.h\"\n"
@@ -413,6 +475,7 @@ main (int argc, char **argv)
"#include \"flags.h\"\n"
"#include \"insn-config.h\"\n"
"#include \"expr.h\"\n"
+ "#include \"insn-codes.h\"\n"
"#include \"optabs.h\"\n"
"\n"
"struct optab_pat {\n"