From 385399a8759c233f487ddd7e158802a1ee4f960d Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Thu, 17 Sep 2015 14:28:59 +0000 Subject: Split up optabs.[hc] optabs.[hc] is a bit of a behemoth. It includes basic functions for querying what a target can do, related tree- and gimple-level query functions, related rtl-level query functions, and the functions that actually generate code. Some gimple optimisations therefore need: #include "insn-config.h" #include "expmed.h" #include "dojump.h" #include "explow.h" #include "emit-rtl.h" #include "varasm.h" #include "stmt.h" #include "expr.h" purely to query whether the target has support for a particular operation. This patch splits optabs up as follows: - optabs-query.[hc]: IL-independent functions for querying what a target can do natively. - optabs-tree.[hc]: tree and gimple query functions (an extension of optabs-query.[hc]). - optabs-libfuncs.[hc]: optabs-specific libfuncs (an extension of libfuncs.h) - optabs.h: For now includes optabs-query.h and optabs-libfuncs.h. Only two files outside optabs need to include both optabs.h and optabs-tree.h: expr.c and function.c. I think that's expected given that both are related to expand. It might be good to split optabs.h further, but this is already quite a big patch. I changed can_conditionally_move_p from returning an int to returning a bool and fixed a few formatting glitches. There should be no other changes to the functions themselves. gcc/ * Makefile.in (OBJS): Add optabs-libfuncs.o, optabs-query.o and optabs-tree.o. (GTFILES): Replace optabs.c with optabs-libfunc.c. * genopinit.c (main): Add an include guard to insn-opinit.h. Protect the rtx_code parts with NUM_RTX_CODE. * optabs.h: Split parts out to... * optabs-libfuncs.h, optabs-query.h, optabs-tree.h: ...these new files. * optabs.c: Split parts out to... * optabs-libfuncs.c, optabs-query.c, optabs-tree.c: ...these new files. * cilk-common.c: Include optabs-query.h rather than optabs.h. * fold-const.c: Likewise. * target-globals.c: Likewise. * tree-if-conv.c: Likewise. * tree-ssa-forwprop.c: Likewise. * tree-ssa-loop-prefetch.c: Likewise. * tree-ssa-math-opts.c: Include optabs-tree.h rather than optabs.h. Remove unncessary include files. * tree-ssa-phiopt.c: Likewise. * tree-ssa-reassoc.c: Likewise. * tree-switch-conversion.c: Likewise. * tree-vect-data-refs.c: Likewise. * tree-vect-generic.c: Likewise. * tree-vect-loop.c: Likewise. * tree-vect-patterns.c: Likewise. * tree-vect-slp.c: Likewise. * tree-vect-stmts.c: Likewise. * tree-vrp.c: Likewise. * toplev.c: Include optabs-query.h and optabs-libfuncs.h rather than optabs.h. * expr.c: Include optabs-tree.h. * function.c: Likewise. From-SVN: r227865 --- gcc/optabs-libfuncs.h | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 gcc/optabs-libfuncs.h (limited to 'gcc/optabs-libfuncs.h') diff --git a/gcc/optabs-libfuncs.h b/gcc/optabs-libfuncs.h new file mode 100644 index 0000000..4e43c80 --- /dev/null +++ b/gcc/optabs-libfuncs.h @@ -0,0 +1,77 @@ +/* Mapping from optabs to underlying library functions + Copyright (C) 2001-2015 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +. */ + +#ifndef GCC_OPTABS_LIBFUNCS_H +#define GCC_OPTABS_LIBFUNCS_H + +#include "insn-opinit.h" + +rtx convert_optab_libfunc (convert_optab, machine_mode, machine_mode); +rtx optab_libfunc (optab, machine_mode); + +void gen_int_libfunc (optab, const char *, char, machine_mode); +void gen_fp_libfunc (optab, const char *, char, machine_mode); +void gen_fixed_libfunc (optab, const char *, char, machine_mode); +void gen_signed_fixed_libfunc (optab, const char *, char, machine_mode); +void gen_unsigned_fixed_libfunc (optab, const char *, char, machine_mode); +void gen_int_fp_libfunc (optab, const char *, char, machine_mode); +void gen_intv_fp_libfunc (optab, const char *, char, machine_mode); +void gen_int_fp_fixed_libfunc (optab, const char *, char, machine_mode); +void gen_int_fp_signed_fixed_libfunc (optab, const char *, char, machine_mode); +void gen_int_fixed_libfunc (optab, const char *, char, machine_mode); +void gen_int_signed_fixed_libfunc (optab, const char *, char, machine_mode); +void gen_int_unsigned_fixed_libfunc (optab, const char *, char, machine_mode); + +void gen_interclass_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_int_to_fp_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_ufloat_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_int_to_fp_nondecimal_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_fp_to_int_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_intraclass_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_trunc_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_extend_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_fract_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_fractuns_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_satfract_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); +void gen_satfractuns_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); + +tree build_libfunc_function (const char *); +rtx init_one_libfunc (const char *); +rtx set_user_assembler_libfunc (const char *, const char *); + +void set_optab_libfunc (optab, machine_mode, const char *); +void set_conv_libfunc (convert_optab, machine_mode, + machine_mode, const char *); + +void init_optabs (void); +void init_sync_libfuncs (int max); + +#endif -- cgit v1.1