osprey-gcc-4.2.0/gcc/config/cris/cris.c File Reference

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
#include "regs.h"
#include "hard-reg-set.h"
#include "real.h"
#include "insn-config.h"
#include "conditions.h"
#include "insn-attr.h"
#include "flags.h"
#include "tree.h"
#include "expr.h"
#include "except.h"
#include "function.h"
#include "toplev.h"
#include "recog.h"
#include "reload.h"
#include "tm_p.h"
#include "debug.h"
#include "output.h"
#include "target.h"
#include "target-def.h"
#include "ggc.h"
#include "optabs.h"
#include "gt-cris.h"

Include dependency graph for cris.c:

Go to the source code of this file.

Defines

#define ADDITIVE_SIZE_MODIFIER(size)   ((size) <= 63 ? "q" : (size) <= 255 ? "u.b" : (size) <= 65535 ? "u.w" : ".d")
#define ASSERT_PLT_UNSPEC(x)
#define LOSE_AND_RETURN(msgid, x)
#define TARGET_ASM_ALIGNED_HI_OP   "\t.word\t"
#define TARGET_ASM_ALIGNED_SI_OP   "\t.dword\t"
#define TARGET_ASM_ALIGNED_DI_OP   "\t.quad\t"
#define TARGET_ASM_UNALIGNED_HI_OP   TARGET_ASM_ALIGNED_HI_OP
#define TARGET_ASM_UNALIGNED_SI_OP   TARGET_ASM_ALIGNED_SI_OP
#define TARGET_ASM_UNALIGNED_DI_OP   TARGET_ASM_ALIGNED_DI_OP
#define TARGET_ASM_OUTPUT_MI_THUNK   cris_asm_output_mi_thunk
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK   default_can_output_mi_thunk_no_vcall
#define TARGET_ASM_FILE_START   cris_file_start
#define TARGET_INIT_LIBFUNCS   cris_init_libfuncs
#define TARGET_RTX_COSTS   cris_rtx_costs
#define TARGET_ADDRESS_COST   cris_address_cost
#define TARGET_PROMOTE_FUNCTION_ARGS   hook_bool_tree_true
#define TARGET_STRUCT_VALUE_RTX   cris_struct_value_rtx
#define TARGET_SETUP_INCOMING_VARARGS   cris_setup_incoming_varargs
#define TARGET_PASS_BY_REFERENCE   cris_pass_by_reference
#define TARGET_ARG_PARTIAL_BYTES   cris_arg_partial_bytes
#define TARGET_MD_ASM_CLOBBERS   cris_md_asm_clobbers
#define TARGET_DEFAULT_TARGET_FLAGS   (TARGET_DEFAULT | CRIS_SUBTARGET_DEFAULT)
#define TARGET_HANDLE_OPTION   cris_handle_option

Enumerations

enum  cris_retinsn_type { CRIS_RETINSN_UNKNOWN = 0, CRIS_RETINSN_RET, CRIS_RETINSN_JUMP }

Functions/Subroutines

struct machine_function GTY (())
static int cris_reg_overlap_mentioned_p (rtx, rtx)
static void cris_print_base (rtx, FILE *)
static void cris_print_index (rtx, FILE *)
static void cris_output_addr_const (FILE *, rtx)
static struct machine_functioncris_init_machine_status (void)
static rtx cris_struct_value_rtx (tree, int)
static void cris_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode, tree type, int *, int)
static int cris_initial_frame_pointer_offset (void)
static int saved_regs_mentioned (rtx)
static void cris_operand_lossage (const char *, rtx)
static int cris_reg_saved_in_regsave_area (unsigned int, bool)
static void cris_asm_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, tree)
static void cris_file_start (void)
static void cris_init_libfuncs (void)
static bool cris_rtx_costs (rtx, int, int, int *)
static int cris_address_cost (rtx)
static bool cris_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, tree, bool)
static int cris_arg_partial_bytes (CUMULATIVE_ARGS *, enum machine_mode, tree, bool)
static tree cris_md_asm_clobbers (tree, tree, tree)
static bool cris_handle_option (size_t, const char *, int)
bool cris_movem_load_rest_p (rtx op, int offs)
bool cris_store_multiple_op_p (rtx op)
void cris_conditional_register_usage (void)
int cris_cfun_uses_pic_table (void)
const char * cris_op_str (rtx x)
int cris_fatal (char *arg)
void cris_print_operand (FILE *file, rtx x, int code)
void cris_print_operand_address (FILE *file, rtx x)
rtx cris_return_addr_rtx (int count, rtx frameaddr ATTRIBUTE_UNUSED)
bool cris_return_address_on_stack (void)
bool cris_return_address_on_stack_for_return (void)
int cris_initial_elimination_offset (int fromreg, int toreg)
bool cris_reload_address_legitimized (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED, int opnum ATTRIBUTE_UNUSED, int itype, int ind_levels ATTRIBUTE_UNUSED)
void cris_notice_update_cc (rtx exp, rtx insn)
bool cris_simple_epilogue (void)
void cris_expand_return (bool on_stack)
int cris_side_effect_mode_ok (enum rtx_code code, rtx *ops, int lreg, int rreg, int rval, int multop, int other_op)
void cris_target_asm_named_section (const char *name, unsigned int flags, tree decl)
bool cris_valid_pic_const (rtx x)
enum cris_pic_symbol_type cris_pic_symbol_type_of (rtx x)
int cris_legitimate_pic_operand (rtx x)
static bool cris_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value ATTRIBUTE_UNUSED)
void cris_override_options (void)
static void cris_asm_output_mi_thunk (FILE *stream, tree thunkdecl ATTRIBUTE_UNUSED, HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset ATTRIBUTE_UNUSED, tree funcdecl)
void cris_init_expanders (void)
rtx cris_split_movdx (rtx *operands)
void cris_expand_prologue (void)
void cris_expand_epilogue (void)
rtx cris_gen_movem_load (rtx src, rtx nregs_rtx, int nprefix)
rtx cris_emit_movem_store (rtx dest, rtx nregs_rtx, int increment, bool frame_related)
void cris_expand_pic_call_address (rtx *opp)
void cris_order_for_addsi3 (rtx *operands, int n)
void cris_asm_output_symbol_ref (FILE *file, rtx x)
void cris_asm_output_label_ref (FILE *file, char *buf)
bool cris_output_addr_const_extra (FILE *file, rtx xconst)
static rtx cris_struct_value_rtx (tree fntype ATTRIBUTE_UNUSED, int incoming ATTRIBUTE_UNUSED)
static void cris_setup_incoming_varargs (CUMULATIVE_ARGS *ca, enum machine_mode mode ATTRIBUTE_UNUSED, tree type ATTRIBUTE_UNUSED, int *pretend_arg_size, int second_time)
static bool cris_pass_by_reference (CUMULATIVE_ARGS *ca ATTRIBUTE_UNUSED, enum machine_mode mode, tree type, bool named ATTRIBUTE_UNUSED)
static int cris_arg_partial_bytes (CUMULATIVE_ARGS *ca, enum machine_mode mode, tree type, bool named ATTRIBUTE_UNUSED)

Variables

static char cris_output_insn_is_bound = 0
static int in_code = 0
int cris_max_stackframe = 0
int cris_cpu_version = CRIS_DEFAULT_CPU_VERSION
struct gcc_target targetm = TARGET_INITIALIZER


Define Documentation

#define ADDITIVE_SIZE_MODIFIER ( size   )     ((size) <= 63 ? "q" : (size) <= 255 ? "u.b" : (size) <= 65535 ? "u.w" : ".d")

Definition at line 52 of file cris.c.

#define ASSERT_PLT_UNSPEC (  ) 

Value:

CRIS_ASSERT (XINT (x, 1) == CRIS_UNSPEC_PLT       \
         && ((GET_CODE (XVECEXP (x, 0, 0)) == SYMBOL_REF)   \
       || GET_CODE (XVECEXP (x, 0, 0)) == LABEL_REF))

Definition at line 55 of file cris.c.

#define LOSE_AND_RETURN ( msgid,
 ) 

Value:

do            \
    {           \
      cris_operand_lossage (msgid, x);    \
      return;         \
    } while (0)

Definition at line 60 of file cris.c.

#define TARGET_ADDRESS_COST   cris_address_cost

Definition at line 170 of file cris.c.

#define TARGET_ARG_PARTIAL_BYTES   cris_arg_partial_bytes

Definition at line 181 of file cris.c.

#define TARGET_ASM_ALIGNED_DI_OP   "\t.quad\t"

Definition at line 142 of file cris.c.

#define TARGET_ASM_ALIGNED_HI_OP   "\t.word\t"

Definition at line 138 of file cris.c.

#define TARGET_ASM_ALIGNED_SI_OP   "\t.dword\t"

Definition at line 140 of file cris.c.

#define TARGET_ASM_CAN_OUTPUT_MI_THUNK   default_can_output_mi_thunk_no_vcall

Definition at line 159 of file cris.c.

#define TARGET_ASM_FILE_START   cris_file_start

Definition at line 162 of file cris.c.

#define TARGET_ASM_OUTPUT_MI_THUNK   cris_asm_output_mi_thunk

Definition at line 157 of file cris.c.

#define TARGET_ASM_UNALIGNED_DI_OP   TARGET_ASM_ALIGNED_DI_OP

Definition at line 154 of file cris.c.

#define TARGET_ASM_UNALIGNED_HI_OP   TARGET_ASM_ALIGNED_HI_OP

Definition at line 148 of file cris.c.

#define TARGET_ASM_UNALIGNED_SI_OP   TARGET_ASM_ALIGNED_SI_OP

Definition at line 151 of file cris.c.

#define TARGET_DEFAULT_TARGET_FLAGS   (TARGET_DEFAULT | CRIS_SUBTARGET_DEFAULT)

Definition at line 185 of file cris.c.

#define TARGET_HANDLE_OPTION   cris_handle_option

Definition at line 187 of file cris.c.

#define TARGET_INIT_LIBFUNCS   cris_init_libfuncs

Definition at line 165 of file cris.c.

#define TARGET_MD_ASM_CLOBBERS   cris_md_asm_clobbers

Definition at line 183 of file cris.c.

#define TARGET_PASS_BY_REFERENCE   cris_pass_by_reference

Definition at line 179 of file cris.c.

#define TARGET_PROMOTE_FUNCTION_ARGS   hook_bool_tree_true

Definition at line 173 of file cris.c.

#define TARGET_RTX_COSTS   cris_rtx_costs

Definition at line 168 of file cris.c.

#define TARGET_SETUP_INCOMING_VARARGS   cris_setup_incoming_varargs

Definition at line 177 of file cris.c.

#define TARGET_STRUCT_VALUE_RTX   cris_struct_value_rtx

Definition at line 175 of file cris.c.


Enumeration Type Documentation

Enumerator:
CRIS_RETINSN_UNKNOWN 
CRIS_RETINSN_RET 
CRIS_RETINSN_JUMP 

Definition at line 67 of file cris.c.


Function Documentation

static int cris_address_cost ( rtx  x  )  [static]

static int cris_arg_partial_bytes ( CUMULATIVE_ARGS ca,
enum machine_mode  mode,
tree  type,
bool named  ATTRIBUTE_UNUSED 
) [static]

static int cris_arg_partial_bytes ( CUMULATIVE_ARGS ,
enum  machine_mode,
tree  ,
bool   
) [static]

void cris_asm_output_label_ref ( FILE file,
char *  buf 
)

static void cris_asm_output_mi_thunk ( FILE stream,
tree thunkdecl  ATTRIBUTE_UNUSED,
HOST_WIDE_INT  delta,
HOST_WIDE_INT vcall_offset  ATTRIBUTE_UNUSED,
tree  funcdecl 
) [static]

static void cris_asm_output_mi_thunk ( FILE ,
tree  ,
HOST_WIDE_INT  ,
HOST_WIDE_INT  ,
tree   
) [static]

void cris_asm_output_symbol_ref ( FILE file,
rtx  x 
)

int cris_cfun_uses_pic_table ( void   ) 

Definition at line 407 of file cris.c.

References current_function_uses_pic_offset_table.

void cris_conditional_register_usage ( void   ) 

rtx cris_emit_movem_store ( rtx  dest,
rtx  nregs_rtx,
int  increment,
bool  frame_related 
)

void cris_expand_epilogue ( void   ) 

void cris_expand_pic_call_address ( rtx opp  ) 

void cris_expand_prologue ( void   ) 

void cris_expand_return ( bool  on_stack  ) 

Definition at line 1602 of file cris.c.

References cfun, CRIS_ASSERT, CRIS_RETINSN_JUMP, CRIS_RETINSN_RET, emit_jump_insn(), and gen_rtx_RETURN.

Referenced by cris_expand_epilogue().

int cris_fatal ( char *  arg  ) 

Definition at line 565 of file cris.c.

References internal_error().

static void cris_file_start ( void   )  [static]

rtx cris_gen_movem_load ( rtx  src,
rtx  nregs_rtx,
int  nprefix 
)

static bool cris_handle_option ( size_t  code,
const char *arg  ATTRIBUTE_UNUSED,
int value  ATTRIBUTE_UNUSED 
) [static]

Definition at line 2041 of file cris.c.

References CRIS_SUBTARGET_HANDLE_OPTION, and target_flags.

static bool cris_handle_option ( size_t  ,
const char *  ,
int   
) [static]

void cris_init_expanders ( void   ) 

Definition at line 2279 of file cris.c.

static void cris_init_libfuncs ( void   )  [static]

Definition at line 2266 of file cris.c.

References sdiv_optab, set_optab_libfunc(), smod_optab, smul_optab, udiv_optab, and umod_optab.

static struct machine_function * cris_init_machine_status ( void   )  [static, read]

Definition at line 2287 of file cris.c.

References ggc_alloc_cleared.

int cris_initial_elimination_offset ( int  fromreg,
int  toreg 
)

static int cris_initial_frame_pointer_offset ( void   )  [static]

int cris_legitimate_pic_operand ( rtx  x  ) 

Definition at line 2030 of file cris.c.

References cris_valid_pic_const().

static tree cris_md_asm_clobbers ( tree  outputs,
tree  inputs,
tree  in_clobbers 
) [static]

bool cris_movem_load_rest_p ( rtx  op,
int  offs 
)

void cris_notice_update_cc ( rtx  exp,
rtx  insn 
)

const char* cris_op_str ( rtx  x  ) 

Definition at line 417 of file cris.c.

References AND, cris_output_insn_is_bound, DIV, GET_CODE, internal_error(), MINUS, NOT, PLUS, and XOR.

static void cris_operand_lossage ( const char *  msgid,
rtx  op 
) [static]

Definition at line 489 of file cris.c.

References debug_rtx(), and output_operand_lossage().

void cris_order_for_addsi3 ( rtx operands,
int  n 
)

Definition at line 3266 of file cris.c.

References MEM_P.

static void cris_output_addr_const ( FILE file,
rtx  x 
) [static]

bool cris_output_addr_const_extra ( FILE file,
rtx  xconst 
)

void cris_override_options ( void   ) 

static bool cris_pass_by_reference ( CUMULATIVE_ARGS *ca  ATTRIBUTE_UNUSED,
enum machine_mode  mode,
tree  type,
bool named  ATTRIBUTE_UNUSED 
) [static]

static bool cris_pass_by_reference ( CUMULATIVE_ARGS ,
enum  machine_mode,
tree  ,
bool   
) [static]

enum cris_pic_symbol_type cris_pic_symbol_type_of ( rtx  x  ) 

static void cris_print_base ( rtx  base,
FILE file 
) [static]

Definition at line 551 of file cris.c.

References cris_operand_lossage(), fprintf(), GET_CODE, reg_names, REG_P, REGNO, and XEXP.

static void cris_print_index ( rtx  index,
FILE file 
) [static]

void cris_print_operand ( FILE file,
rtx  x,
int  code 
)

void cris_print_operand_address ( FILE file,
rtx  x 
)

static int cris_reg_overlap_mentioned_p ( rtx  x,
rtx  in 
) [static]

Definition at line 1913 of file cris.c.

References GET_CODE, reg_overlap_mentioned_p(), and XEXP.

static int cris_reg_saved_in_regsave_area ( unsigned int  regno,
bool  got_really_used 
) [static]

bool cris_reload_address_legitimized ( rtx  x,
enum machine_mode mode  ATTRIBUTE_UNUSED,
int opnum  ATTRIBUTE_UNUSED,
int  itype,
int ind_levels  ATTRIBUTE_UNUSED 
)

rtx cris_return_addr_rtx ( int  count,
rtx frameaddr  ATTRIBUTE_UNUSED 
)

Definition at line 1109 of file cris.c.

References cfun, gen_rtx_MEM(), NULL_RTX, plus_constant, Pmode, and virtual_incoming_args_rtx.

bool cris_return_address_on_stack ( void   ) 

bool cris_return_address_on_stack_for_return ( void   ) 

Definition at line 1135 of file cris.c.

References cfun, CRIS_RETINSN_RET, and cris_return_address_on_stack().

static bool cris_rtx_costs ( rtx  x,
int  code,
int  outer_code,
int *  total 
) [static]

static void cris_setup_incoming_varargs ( CUMULATIVE_ARGS ca,
enum machine_mode mode  ATTRIBUTE_UNUSED,
tree type  ATTRIBUTE_UNUSED,
int *  pretend_arg_size,
int  second_time 
) [static]

static void cris_setup_incoming_varargs ( CUMULATIVE_ARGS ,
enum  machine_mode,
tree  type,
int *  ,
int   
) [static]

int cris_side_effect_mode_ok ( enum rtx_code  code,
rtx ops,
int  lreg,
int  rreg,
int  rval,
int  multop,
int  other_op 
)

bool cris_simple_epilogue ( void   ) 

rtx cris_split_movdx ( rtx operands  ) 

bool cris_store_multiple_op_p ( rtx  op  ) 

Definition at line 273 of file cris.c.

References dest, GET_CODE, GET_MODE, HOST_WIDE_INT, i, INTVAL, MEM, offset, PLUS, REG, REG_P, REGNO, rtx_equal_p(), SET, SET_DEST, SET_SRC, XEXP, XVECEXP, and XVECLEN.

static rtx cris_struct_value_rtx ( tree fntype  ATTRIBUTE_UNUSED,
int incoming  ATTRIBUTE_UNUSED 
) [static]

Definition at line 3380 of file cris.c.

References CRIS_STRUCT_VALUE_REGNUM, gen_rtx_REG(), and Pmode.

static rtx cris_struct_value_rtx ( tree  ,
int   
) [static]

void cris_target_asm_named_section ( const char *  name,
unsigned int  flags,
tree  decl 
)

Definition at line 1927 of file cris.c.

References default_elf_asm_named_section(), default_no_named_section(), and TARGET_ELF.

bool cris_valid_pic_const ( rtx  x  ) 

struct machine_function GTY ( ()   )  [read, write]

Definition at line 71 of file cris.c.

References machine_function::needs_return_address_on_stack.

static int saved_regs_mentioned ( rtx  x  )  [static]


Variable Documentation

int cris_cpu_version = CRIS_DEFAULT_CPU_VERSION

Definition at line 135 of file cris.c.

Definition at line 132 of file cris.c.

char cris_output_insn_is_bound = 0 [static]

Definition at line 84 of file cris.c.

int in_code = 0 [static]

Definition at line 88 of file cris.c.

struct gcc_target targetm = TARGET_INITIALIZER

Definition at line 189 of file cris.c.


Generated on Wed Apr 8 15:18:41 2009 for Open64 by  doxygen 1.5.6