GCC Middle and Back End API Reference
|
#include "bconfig.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
#include "errors.h"
#include "read-md.h"
#include "gensupport.h"
#include "internal-fn.def"
Data Structures | |
struct | clobber_pat |
struct | clobber_ent |
Macros | |
#define | DEF_INTERNAL_OPTAB_FN(NAME, FLAGS, OPTAB, TYPE) nofail_optabs[OPTAB##_optab] = true; |
Variables | |
struct clobber_pat * | clobber_list |
static bool | nofail_optabs [NUM_OPTABS] |
auto_vec< const char *, 10 > | output_files |
|
static |
Emit the given C code to the output file. The code is allowed to fail if CAN_FAIL_P. NAME describes what we're generating, for use in error messages.
References ggc_alloc(), md_reader::print_md_ptr_loc(), and rtx_reader_ptr.
Referenced by gen_expand(), and gen_split().
Output code to emit the instruction patterns in VEC, with each element becoming a separate instruction. USED is as for gen_exp.
References gen_exp(), get_emit_function(), GET_NUM_ELEM, ggc_alloc(), i, needs_barrier_p(), clobber_ent::next, and RTVEC_ELT.
Referenced by gen_expand(), and gen_split().
|
static |
Print a C expression to construct an RTX just like X, substituting any operand references appearing within.
References always_void_p(), CONST_DOUBLE_REAL_VALUE, gcc_unreachable, gen_exp(), gen_rtx_scratch(), GET_CODE, GET_MODE, GET_MODE_NAME, GET_RTX_FORMAT, GET_RTX_LENGTH, ggc_alloc(), HOST_WIDE_INT_PRINT_DEC_C, i, INTVAL, MAX_SAVED_CONST_INT, print_code(), REG_P, REGNO, RTX_CODE, rvc_zero, STORE_FLAG_VALUE, SUBREG_BYTE, XEXP, XINT, XSTR, XVECEXP, and XVECLEN.
Referenced by gen_emit_seq(), gen_exp(), gen_expand(), gen_insn(), and output_add_clobbers().
|
static |
Generate the `gen_...' function for a DEFINE_EXPAND.
References md_rtx_info::def, emit_c_code(), fatal_at(), find_optab(), gcc_assert, gen_emit_seq(), gen_exp(), get_pattern_stats(), ggc_alloc(), i, md_rtx_info::loc, MAX, nofail_optabs, NULL, NUM_OPTABS, optab_pattern::op, XSTR, XVEC, XVECEXP, and XVECLEN.
Referenced by main().
|
static |
Generate the `gen_...' function for a DEFINE_INSN.
References add_implicit_parallel(), clobber_list, md_rtx_info::def, fatal_at(), file_location::filename, clobber_pat::first_clobber, gen_exp(), GET_CODE, GET_MODE, get_pattern_stats(), ggc_alloc(), clobber_pat::has_hard_reg, i, md_rtx_info::index, clobber_pat::insns, file_location::lineno, md_rtx_info::loc, clobber_pat::next, link::next, NULL, clobber_pat::pattern, REG_P, REGNO, XEXP, XSTR, XVEC, XVECEXP, and XVECLEN.
Referenced by main().
References GET_MODE, GET_MODE_NAME, ggc_alloc(), and XINT.
Referenced by gen_exp().
|
static |
Like gen_expand, but generates insns resulting from splitting SPLIT.
References md_rtx_info::def, emit_c_code(), fatal_at(), file_location::filename, free(), gen_emit_seq(), GET_CODE, get_pattern_stats(), GET_RTX_NAME, ggc_alloc(), i, md_rtx_info::index, file_location::lineno, md_rtx_info::loc, output_peephole2_scratches(), XSTR, and XVEC.
Referenced by main().
|
static |
Emit a maybe_code_for_* function for ONAME.
References ggc_alloc(), print_overload_arguments(), and print_overload_test().
Referenced by main().
|
static |
Emit a maybe_gen_* function for ONAME.
References get_pattern_stats(), ggc_alloc(), HOST_WIDE_INT_1U, i, print_overload_arguments(), stats, and XVEC.
Referenced by main().
References count, count_patterns(), md_rtx_info::def, FATAL_EXIT_CODE, file_location::filename, fopen, gcc_assert, gen_expand(), gen_insn(), gen_split(), GET_CODE, md_reader::get_overloads(), ggc_alloc(), handle_arg(), handle_overloaded_code_for(), handle_overloaded_gen(), init_rtx_reader_args_cb(), file_location::lineno, md_rtx_info::loc, NULL, output_add_clobbers(), output_added_clobbers_hard_reg_p(), output_files, print_header(), progname, read_md_rtx(), rtx_reader_ptr, and SUCCESS_EXIT_CODE.
|
static |
Write a function, `add_clobbers', that is given a PARALLEL of sufficient size for the insn and an INSN_CODE, and inserts the required CLOBBERs at the end of the vector.
References clobber_list, gen_exp(), GET_CODE, ggc_alloc(), i, NULL, XVECEXP, and XVECLEN.
Referenced by main().
Write a function, `added_clobbers_hard_reg_p' that is given an insn_code number that will have clobbers added (as indicated by `recog') and returns 1 if those include a clobber of a hard reg or 0 if all of them just clobber SCRATCH.
References clobber_list, and ggc_alloc().
Referenced by main().
Generate code to invoke find_free_register () as needed for the scratch registers used by the peephole2 pattern in SPLIT.
References GET_CODE, GET_MODE, GET_MODE_NAME, ggc_alloc(), i, XINT, XSTR, XVECEXP, and XVECLEN.
Referenced by gen_split().
References GET_RTX_NAME, and ggc_alloc().
Referenced by gen_exp().
References ggc_alloc().
|
static |
Print "arg<N>" parameter declarations for each argument N of ONAME.
References ggc_alloc(), and i.
Referenced by handle_overloaded_code_for(), and handle_overloaded_gen().
|
static |
Print code to test whether INSTANCE should be chosen, given that argument N of the overload is available as "arg<N>".
References overloaded_instance::arg_values, ggc_alloc(), and i.
Referenced by handle_overloaded_code_for().
struct clobber_pat * clobber_list |
Referenced by gen_insn(), output_add_clobbers(), and output_added_clobbers_hard_reg_p().
|
static |
True for <X>_optab if that optab isn't allowed to fail.
Referenced by gen_expand().
The list of output files.
Referenced by handle_arg(), and main().