26#ifdef SECONDARY_RELOAD_CLASS
27#define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X) \
28 SECONDARY_RELOAD_CLASS (CLASS, MODE, X)
29#define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, X) \
30 SECONDARY_RELOAD_CLASS (CLASS, MODE, X)
38#define MAX_RELOADS (2 * MAX_RECOG_OPERANDS * (MAX_REGS_PER_ADDRESS + 1))
73#ifdef GCC_INSN_CODES_H
84 enum reg_class rclass;
123 int secondary_in_reload;
126 int secondary_out_reload;
130 enum insn_code secondary_in_icode;
132 enum insn_code secondary_out_icode;
141 unsigned int optional:1;
143 unsigned int nocombine:1;
145 unsigned int secondary_p:1;
148 unsigned int nongroup:1;
178 [FIRST_PSEUDO_REGISTER]
198#define this_target_reload (&default_target_reload)
201#define indirect_symref_ok \
202 (this_target_reload->x_indirect_symref_ok)
203#define double_reg_address_ok \
204 (this_target_reload->x_double_reg_address_ok)
205#define caller_save_initialized_p \
206 (this_target_reload->x_caller_save_initialized_p)
246#define reg_equiv_constant(ELT) \
247 (*reg_equivs)[(ELT)].constant
248#define reg_equiv_invariant(ELT) \
249 (*reg_equivs)[(ELT)].invariant
250#define reg_equiv_memory_loc(ELT) \
251 (*reg_equivs)[(ELT)].memory_loc
252#define reg_equiv_address(ELT) \
253 (*reg_equivs)[(ELT)].address
254#define reg_equiv_mem(ELT) \
255 (*reg_equivs)[(ELT)].mem
256#define reg_equiv_alt_mem_list(ELT) \
257 (*reg_equivs)[(ELT)].alt_mem_list
258#define reg_equiv_init(ELT) \
259 (*reg_equivs)[(ELT)].init
277#if defined HARD_CONST && defined CLEAR_REG_SET
285 class insn_chain *next, *prev;
289 class insn_chain *next_need_reload;
298 unsigned int need_reload:1;
301 unsigned int need_operand_change:1;
303 unsigned int need_elim:1;
305 unsigned int is_caller_save_insn:1;
329#if defined HARD_CONST
338#ifdef GCC_INSN_CODES_H
411 machine_mode, machine_mode,
void save_call_clobbered_regs(void)
Definition caller-save.cc:728
void init_save_areas(void)
Definition caller-save.cc:276
void setup_save_areas(void)
Definition caller-save.cc:401
void init_caller_save(void)
Definition caller-save.cc:184
struct rtx_def * rtx
Definition coretypes.h:57
int reg_class_t
Definition coretypes.h:372
class bitmap_head * bitmap
Definition coretypes.h:51
#define MAX_MOVE_MAX
Definition defaults.h:1003
#define MIN_UNITS_PER_WORD
Definition defaults.h:1007
void cleanup_subreg_operands(rtx_insn *insn)
Definition final.cc:3052
HARD_REG_ELT_TYPE HARD_REG_SET
Definition hard-reg-set.h:47
static bool operands_match_p(rtx x, rtx y, int y_hard_regno)
Definition lra-constraints.cc:881
static rtx form_sum(rtx x, rtx y)
Definition lra-eliminations.cc:208
poly_int< NUM_POLY_INT_COEFFS, HOST_WIDE_INT > poly_int64
Definition poly-int-types.h:24
poly_int< N, C > r
Definition poly-int.h:774
int register_move_cost(machine_mode mode, reg_class_t from, reg_class_t to)
Definition reginfo.cc:545
int memory_move_cost(machine_mode mode, reg_class_t rclass, bool in)
Definition reginfo.cc:553
int memory_move_secondary_cost(machine_mode mode, reg_class_t rclass, bool in)
Definition reginfo.cc:561
void compute_use_by_pseudos(HARD_REG_SET *to, regset from)
Definition reload1.cc:501
class insn_chain * reload_insn_chain
Definition reload1.cc:242
class insn_chain * new_insn_chain(void)
Definition reload1.cc:475
reg_class_t secondary_reload_class(bool in_p, reg_class_t rclass, machine_mode mode, rtx x)
Definition reload.cc:508
int n_reloads
Definition reload.cc:132
int safe_from_earlyclobber(rtx op, rtx clobber)
Definition reload.cc:2581
int remove_address_replacements(rtx in_rtx)
Definition reload.cc:1687
int regno_clobbered_p(unsigned int regno, rtx_insn *insn, machine_mode mode, int sets)
Definition reload.cc:7197
int reload_n_operands
Definition reload.cc:140
int find_reloads(rtx_insn *insn, int replace, int ind_levels, int live_known, short *reload_reg_p)
Definition reload.cc:2612
void transfer_replacements(int to, int from)
Definition reload.cc:1673
void subst_reloads(rtx_insn *insn)
Definition reload.cc:6258
enum reg_class scratch_reload_class(enum insn_code icode)
Definition reload.cc:536
rtx find_equiv_reg(rtx goal, rtx_insn *insn, enum reg_class rclass, int other, short *reload_reg_p, int goalreg, machine_mode mode)
Definition reload.cc:6680
rtx get_secondary_mem(rtx x, machine_mode mode, int opnum, enum reload_type type)
Definition reload.cc:557
void move_replacements(rtx *x, rtx *y)
Definition reload.cc:6368
DEBUG_FUNCTION void debug_reload_to_stream(FILE *f)
Definition reload.cc:7278
int earlyclobber_operand_p(rtx x)
Definition reload.cc:2110
rtx find_replacement(rtx *loc)
Definition reload.cc:6381
int reg_overlap_mentioned_for_reload_p(rtx x, rtx in)
Definition reload.cc:6553
struct reload rld[MAX_RELOADS]
Definition reload.cc:133
rtx reload_earlyclobbers[MAX_RECOG_OPERANDS]
Definition reload.cc:138
int push_reload(rtx in, rtx out, rtx *inloc, rtx *outloc, enum reg_class rclass, machine_mode inmode, machine_mode outmode, int strict_low, int optional, int opnum, enum reload_type type)
Definition reload.cc:950
void copy_replacements(rtx x, rtx y)
Definition reload.cc:6326
void clear_secondary_mem(void)
Definition reload.cc:624
rtx reload_adjust_reg_for_mode(rtx reloadreg, machine_mode mode)
Definition reload.cc:7244
DEBUG_FUNCTION void debug_reload(void)
Definition reload.cc:7376
int n_earlyclobbers
Definition reload.cc:137
reload_type
Definition reload.h:65
@ RELOAD_OTHER
Definition reload.h:70
@ RELOAD_FOR_INPADDR_ADDRESS
Definition reload.h:67
@ RELOAD_FOR_OUTADDR_ADDRESS
Definition reload.h:68
@ RELOAD_FOR_INSN
Definition reload.h:66
@ RELOAD_FOR_OUTPUT_ADDRESS
Definition reload.h:68
@ RELOAD_FOR_OUTPUT
Definition reload.h:66
@ RELOAD_FOR_INPUT_ADDRESS
Definition reload.h:67
@ RELOAD_FOR_OPERAND_ADDRESS
Definition reload.h:69
@ RELOAD_FOR_OPADDR_ADDR
Definition reload.h:69
@ RELOAD_FOR_INPUT
Definition reload.h:66
@ RELOAD_FOR_OTHER_ADDRESS
Definition reload.h:70
rtx eliminate_regs(rtx, machine_mode, rtx)
Definition reload1.cc:2943
void grow_reg_equivs(void)
Definition reload1.cc:644
bool elimination_target_reg_p(rtx)
Definition reload1.cc:3952
vec< reg_equivs_t, va_gc > * reg_equivs
Definition reload1.cc:320
void calculate_elim_costs_all_insns(void)
Definition reload1.cc:1558
int reload_first_uid
Definition reload1.cc:213
void init_reload(void)
Definition reload1.cc:414
bool reload(rtx_insn *, int)
Definition reload1.cc:750
int num_not_at_initial_offset
Definition reload1.cc:299
void deallocate_reload_reg(int r)
Definition reload1.cc:7011
struct target_reload default_target_reload
Definition reload1.cc:81
#define this_target_reload
Definition reload.h:198
#define MAX_RELOADS
Definition reload.h:38
void mark_home_live(int)
Definition reload1.cc:2312
rtx address
Definition reload.h:231
rtx memory_loc
Definition reload.h:226
rtx constant
Definition reload.h:215
rtx_insn_list * init
Definition reload.h:243
rtx invariant
Definition reload.h:220
rtx_expr_list * alt_mem_list
Definition reload.h:239
rtx mem
Definition reload.h:235
unsigned char x_spill_indirect_levels
Definition reload.h:168
machine_mode(x_regno_save_mode[FIRST_PSEUDO_REGISTER][MAX_MOVE_MAX/MIN_UNITS_PER_WORD+1])
bool x_indirect_symref_ok
Definition reload.h:160
bool x_caller_save_initialized_p
Definition reload.h:171
bool x_double_reg_address_ok[MAX_MACHINE_MODE]
Definition reload.h:183
int x_cached_reg_restore_code[FIRST_PSEUDO_REGISTER][MAX_MACHINE_MODE]
Definition reload.h:191
int x_cached_reg_save_code[FIRST_PSEUDO_REGISTER][MAX_MACHINE_MODE]
Definition reload.h:190
const T2 & y
Definition wide-int.h:3870