GCC Middle and Back End API Reference
genemit.c File Reference

Data Structures

struct  clobber_pat
struct  clobber_ent

Functions

static void print_code (RTX_CODE)
static void gen_exp (rtx, enum rtx_code, char *)
static void gen_insn (rtx, int)
static void gen_expand (rtx)
static void gen_split (rtx)
static void output_add_clobbers (void)
static void output_added_clobbers_hard_reg_p (void)
static void gen_rtx_scratch (rtx, enum rtx_code)
static void output_peephole2_scratches (rtx)
static void print_code ()
static void gen_rtx_scratch ()
static void gen_exp ()
static void gen_insn ()
static void gen_expand ()
static void gen_split ()
static void output_peephole2_scratches ()
int main ()

Variables

static int insn_code_number
static int insn_index_number
struct clobber_patclobber_list

Function Documentation

static void gen_exp ( rtx  ,
enum  rtx_code,
char *   
)
static
static void gen_exp ( )
static
Print a C expression to construct an RTX just like X,
   substituting any operand references appearing within.   

References gen_exp(), gen_rtx_scratch(), HOST_WIDE_INT_PRINT_DEC_C, len, and print_code().

static void gen_expand ( rtx  )
static
static void gen_insn ( rtx  ,
int   
)
static
static void gen_rtx_scratch ( rtx  ,
enum  rtx_code 
)
static

Referenced by gen_exp().

static void gen_rtx_scratch ( )
static
static void gen_split ( rtx  )
static
static void gen_split ( )
static
Like gen_expand, but generates insns resulting from splitting SPLIT.   

References fatal(), free(), gen_exp(), get_pattern_stats(), insn_code_number, insn_index_number, pattern_stats::num_operand_vars, output_peephole2_scratches(), print_md_ptr_loc(), and SET.

static void output_add_clobbers ( )
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, clobber_ent::code_number, clobber_pat::first_clobber, gen_exp(), clobber_pat::insns, clobber_pat::next, clobber_ent::next, and clobber_pat::pattern.

Referenced by main().

static void output_added_clobbers_hard_reg_p ( )
static
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, clobber_ent::code_number, clobber_pat::has_hard_reg, clobber_pat::insns, clobber_pat::next, and clobber_ent::next.

Referenced by main().

static void output_peephole2_scratches ( rtx  )
static

Referenced by gen_split().

static void output_peephole2_scratches ( )
static
Generate code to invoke find_free_register () as needed for the
   scratch registers used by the peephole2 pattern in SPLIT.   

References first.

static void print_code ( RTX_CODE  )
static

Referenced by gen_exp(), and match_rtx().

static void print_code ( )
static

Variable Documentation

int insn_code_number
static
@verbatim Generate code from machine description to emit insns as rtl.

Copyright (C) 1987-2013 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 http://www.gnu.org/licenses/.

Referenced by gen_insn(), gen_split(), and main().

int insn_index_number
static

Referenced by gen_split(), and main().