24#define lra_assert(c) gcc_checking_assert (c)
29#define LRA_MAX_INSN_RELOADS (MAX_RECOG_OPERANDS * 3)
157 ENUM_BITFIELD(machine_mode)
mode : 16;
219#define LRA_UNKNOWN_ALT -1
220#define LRA_NON_CLOBBERED_ALT -2
263#define LRA_TEMP_CLOBBER_P(x) \
264 (RTL_FLAG_CHECK1 ("TEMP_CLOBBER_P", (x), CLOBBER)->unchanging)
269#define LRA_LOSER_COST_FACTOR 6
270#define LRA_MAX_REJECT 600
275#define LRA_MAX_ASSIGNMENT_ITERATION_NUMBER 30
283#define LRA_MAX_FAILED_SPLITS 10
285#if LRA_MAX_FAILED_SPLITS >= LRA_MAX_ASSIGNMENT_ITERATION_NUMBER
286#error wrong LRA_MAX_FAILED_SPLITS value
297#define LRA_MAX_INHERITANCE_PASSES 2
299#if LRA_MAX_INHERITANCE_PASSES <= 0 \
300 || LRA_MAX_INHERITANCE_PASSES >= LRA_MAX_ASSIGNMENT_ITERATION_NUMBER - 8
301#error wrong LRA_MAX_INHERITANCE_PASSES value
305#define LRA_MAX_REMATERIALIZATION_PASSES 2
307#if LRA_MAX_REMATERIALIZATION_PASSES <= 0 \
308 || LRA_MAX_REMATERIALIZATION_PASSES >= LRA_MAX_ASSIGNMENT_ITERATION_NUMBER - 8
309#error wrong LRA_MAX_REMATERIALIZATION_PASSES value
355 bool fixup_reg_args_size =
false);
486 const char *title,
bool nl_p)
507 *
id->dup_loc[
i] = *
id->operand_loc[nop];
525 *
id->dup_loc[
i] = *
id->operand_loc[ndup];
Definition genoutput.cc:150
rtx ** operand_loc
Definition lra-int.h:246
int used_insn_alternative
Definition lra-int.h:233
alternative_mask preferred_alternatives
Definition lra-int.h:255
rtx_insn * insn
Definition lra-int.h:240
rtx ** dup_loc
Definition lra-int.h:247
poly_int64 sp_offset
Definition lra-int.h:238
int asm_reloads_num
Definition lra-int.h:236
int * arg_hard_regs
Definition lra-int.h:253
struct lra_insn_reg * regs
Definition lra-int.h:257
struct lra_static_insn_data * insn_static_data
Definition lra-int.h:243
int icode
Definition lra-int.h:228
int preferred_hard_regno_profit1
Definition lra-int.h:109
int last_reload
Definition lra-int.h:117
int val
Definition lra-int.h:123
poly_int64 offset
Definition lra-int.h:125
int freq
Definition lra-int.h:116
HARD_REG_SET exclude_start_hard_regs
Definition lra-int.h:98
int nrefs
Definition lra-int.h:116
lra_live_range_t live_ranges
Definition lra-int.h:132
bitmap_head insn_bitmap
Definition lra-int.h:92
rtx restore_rtx
Definition lra-int.h:120
HARD_REG_SET conflict_hard_regs
Definition lra-int.h:95
machine_mode biggest_mode
Definition lra-int.h:130
int preferred_hard_regno1
Definition lra-int.h:105
vec< dependent_filter > dependent_filters
Definition lra-int.h:137
lra_copy_t copies
Definition lra-int.h:135
int preferred_hard_regno_profit2
Definition lra-int.h:109
int preferred_hard_regno2
Definition lra-int.h:105
bool debug
Definition collect-utils.cc:34
struct rtx_def * rtx
Definition coretypes.h:57
class bitmap_head * bitmap
Definition coretypes.h:51
int max_reg_num(void)
Definition emit-rtl.cc:1518
uint64_t alternative_mask
Definition genattrtab.cc:236
HARD_REG_ELT_TYPE HARD_REG_SET
Definition hard-reg-set.h:47
const char * reg_class_names[]
Definition reginfo.cc:119
short * reg_renumber
Definition ira.cc:2555
int lra_assignment_iter_after_spill
Definition lra-assigns.cc:102
int lra_assignment_iter
Definition lra-assigns.cc:101
int lra_coalesce_iter
Definition lra-coalesce.cc:173
bool check_and_force_assignment_correctness_p
Definition lra-constraints.cc:5654
int lra_constraint_iter
Definition lra-constraints.cc:5645
int lra_undo_inheritance_iter
Definition lra-constraints.cc:7935
int lra_inheritance_iter
Definition lra-constraints.cc:7862
void lra_pointer_equiv_set_add(rtx)
Definition lra-constraints.cc:505
void lra_update_dup(lra_insn_recog_data_t id, int nop)
Definition lra-int.h:500
bool lra_pointer_equiv_set_in(rtx)
Definition lra-constraints.cc:512
void lra_emit_move(rtx, rtx)
Definition lra.cc:499
void lra_print_live_range_list(FILE *, lra_live_range_t)
Definition lra-lives.cc:1285
bitmap_head lra_inheritance_pseudos
Definition lra.cc:2358
bool lra_intersected_live_ranges_p(lra_live_range_t, lra_live_range_t)
Definition lra-lives.cc:220
rtx lra_eliminate_regs_1(rtx_insn *, rtx, machine_mode, bool, bool, poly_int64, bool)
Definition lra-eliminations.cc:348
#define lra_assert(c)
Definition lra-int.h:24
hashval_t lra_rtx_hash(rtx x)
Definition lra.cc:1715
void lra_process_new_insns(rtx_insn *insn, rtx_insn *before, rtx_insn *after, const char *title, bool fixup_reg_args_size=false)
Definition lra.cc:1933
int lra_update_fp2sp_elimination(int *spilled_pseudos)
Definition lra-eliminations.cc:1441
bool lra_asm_error_p
Definition lra.cc:2391
void lra_constraints_init(void)
Definition lra-constraints.cc:6167
void lra_debug_live_ranges(void)
Definition lra-lives.cc:1344
bitmap_head lra_split_regs
Definition lra.cc:2361
int lra_live_range_iter
Definition lra-lives.cc:1364
void lra_eliminate_reg_if_possible(rtx *)
Definition lra-eliminations.cc:1393
lra_insn_recog_data_t lra_set_insn_recog_data(rtx_insn *)
Definition lra.cc:988
int lra_bad_spill_regno_start
Definition lra.cc:2352
int lra_new_regno_start
Definition lra.cc:2345
lra_live_range_t lra_merge_live_ranges(lra_live_range_t, lra_live_range_t)
Definition lra-lives.cc:165
int lra_curr_reload_num
Definition lra.cc:489
HARD_REG_SET lra_no_alloc_regs
Definition lra.cc:156
void lra_asm_insn_error(rtx_insn *insn)
Definition lra.cc:552
void lra_update_reg_val_offset(int val, poly_int64 incr)
Definition lra-int.h:551
struct lra_copy * lra_copy_t
Definition lra-int.h:71
void lra_create_live_ranges(bool, bool)
Definition lra-lives.cc:1516
bool lra_substitute_pseudo_within_insn(rtx_insn *, int, rtx, bool)
Definition lra.cc:2188
lra_insn_recog_data_t lra_get_insn_recog_data(rtx_insn *insn)
Definition lra-int.h:531
bool lra_hard_reg_split_p
Definition lra.cc:2388
bool lra_need_for_spills_p(void)
Definition lra-spills.cc:642
rtx_insn * lra_pop_insn(void)
Definition lra.cc:1863
FILE * lra_dump_file
Definition lra.cc:2382
int lra_get_regno_hard_regno(int regno)
Definition lra-int.h:476
void lra_spill(void)
Definition lra-spills.cc:659
void lra_debug_elim_table(void)
Definition lra-eliminations.cc:136
void lra_set_used_insn_alternative_by_uid(int, int)
Definition lra.cc:1319
void lra_emit_add(rtx, rtx, rtx)
Definition lra.cc:346
void lra_update_biggest_mode(int regno, machine_mode mode)
Definition lra-int.h:584
int lra_rematerialization_iter
Definition lra-remat.cc:1307
struct lra_insn_reg * lra_get_insn_regs(int)
Definition lra.cc:1703
void lra_set_used_insn_alternative(rtx_insn *, int)
Definition lra.cc:1308
void lra_dump_bitmap_with_title(const char *, bitmap, int)
Definition lra.cc:129
void lra_reset_live_range_list(lra_live_range_t &)
Definition lra-lives.cc:118
poly_int64 lra_update_sp_offset(rtx, poly_int64)
Definition lra-eliminations.cc:1383
void lra_update_dups(lra_insn_recog_data_t, signed char *)
Definition lra.cc:539
bitmap_head lra_postponed_insns
Definition lra.cc:2379
rtx lra_create_new_reg(machine_mode, rtx, enum reg_class, HARD_REG_SET *, const char *)
Definition lra.cc:229
int lra_get_elimination_hard_regno(int)
Definition lra-eliminations.cc:243
bool lra_assign(bool &)
Definition lra-assigns.cc:1647
int lra_hard_reg_usage[FIRST_PSEUDO_REGISTER]
Definition lra-lives.cc:60
void lra_init_equiv(void)
Definition lra-constraints.cc:521
void lra_init_dependent_filter_cache(void)
Definition lra-constraints.cc:2238
void lra_free_copies(void)
Definition lra.cc:1426
void eliminate_regs_in_insn(rtx_insn *insn, bool, bool, poly_int64)
Definition lra-eliminations.cc:921
void lra_update_insn_regno_info(rtx_insn *)
Definition lra.cc:1661
void lra_set_insn_deleted(rtx_insn *)
Definition lra.cc:261
void lra_delete_dead_insn(rtx_insn *)
Definition lra.cc:271
void lra_debug_live_range_list(lra_live_range_t)
Definition lra-lives.cc:1309
void lra_assign_reg_val(int from, int to)
Definition lra-int.h:575
void lra_clear_live_ranges(void)
Definition lra-lives.cc:1551
void lra_finish_dependent_filter_cache(void)
Definition lra-constraints.cc:2247
bool lra_remat(void)
Definition lra-remat.cc:1312
HARD_REG_SET hard_regs_spilled_into
Definition lra.cc:1339
bool lra_split_hard_reg_for(bool fail_p)
Definition lra-assigns.cc:1814
void lra_dump_insns_if_possible(const char *title)
Definition lra.cc:1921
bool lra_constraints(bool)
Definition lra-constraints.cc:5891
void lra_change_class(int regno, enum reg_class new_class, const char *title, bool nl_p)
Definition lra-int.h:485
bitmap_head lra_subreg_reload_pseudos
Definition lra.cc:2371
int lra_live_max_point
Definition lra-lives.cc:56
void lra_setup_reg_renumber(int, int, bool)
Definition lra-assigns.cc:822
int * lra_point_freq
Definition lra-lives.cc:533
bool lra_complete_live_ranges(void)
Definition lra-lives.cc:1540
void lra_dump_insns(FILE *f)
Definition lra.cc:1913
bool lra_constrain_insn(rtx_insn *)
Definition lra-constraints.cc:5501
void lra_set_regno_unique_value(int)
Definition lra.cc:244
void lra_constraints_finish(void)
Definition lra-constraints.cc:6175
bool lra_need_for_scratch_reg_p(void)
Definition lra-spills.cc:629
bool lra_reg_spill_p
Definition lra.cc:2395
void lra_push_insn_by_uid(unsigned int)
Definition lra.cc:1856
rtx lra_pmode_pseudo
Definition lra.cc:2355
int lra_constraint_offset(int, machine_mode)
Definition lra-constraints.cc:858
void lra_invalidate_insn_regno_info(rtx_insn *)
Definition lra.cc:1636
void lra_create_copy(int, int, int)
Definition lra.cc:1441
void lra_push_insn(rtx_insn *)
Definition lra.cc:1842
void lra_eliminate(bool, bool)
Definition lra-eliminations.cc:1506
bool lra_coalesce(void)
Definition lra-coalesce.cc:220
int lra_constraint_new_regno_start
Definition lra.cc:2348
bool lra_undo_inheritance(void)
Definition lra-constraints.cc:8329
void lra_setup_reload_pseudo_preferenced_hard_reg(int, int, int)
Definition lra-lives.cc:547
void lra_finish_equiv(void)
Definition lra-constraints.cc:538
bool lra_reg_val_equal_p(int regno, int val, poly_int64 offset)
Definition lra-int.h:564
bool lra_substitute_pseudo(rtx *, int, rtx, bool, bool)
Definition lra.cc:2082
bool spill_hard_reg_in_range(int, enum reg_class, rtx_insn *, rtx_insn *)
Definition lra-constraints.cc:6975
unsigned int lra_insn_stack_length(void)
Definition lra.cc:1872
lra_insn_recog_data_t lra_update_insn_recog_data(rtx_insn *)
Definition lra.cc:1232
int lra_insn_recog_data_len
Definition lra.cc:756
void lra_recompute_slots_live_ranges(void)
Definition lra-spills.cc:373
rtx lra_create_new_reg_with_unique_value(machine_mode, rtx, enum reg_class, HARD_REG_SET *, const char *)
Definition lra.cc:182
void lra_invalidate_insn_data(rtx_insn *)
Definition lra.cc:252
bool lra_fp_pseudo_p(void)
Definition lra-eliminations.cc:1485
void lra_update_operator_dups(lra_insn_recog_data_t id)
Definition lra-int.h:515
void lra_push_insn_and_update_insn_regno_info(rtx_insn *)
Definition lra.cc:1849
struct lra_live_range * lra_live_range_t
Definition lra-int.h:31
int lra_verbose
Definition lra.cc:2385
class lra_reg * lra_reg_info
Definition lra.cc:1337
void lra_inheritance(void)
Definition lra-constraints.cc:7866
lra_copy_t lra_get_copy(int)
Definition lra.cc:1471
void lra_live_ranges_finish(void)
Definition lra-lives.cc:1570
lra_live_range_t lra_copy_live_range_list(lra_live_range_t)
Definition lra-lives.cc:146
void lra_final_code_change(void)
Definition lra-spills.cc:770
void lra_debug_pseudo_live_ranges(int)
Definition lra-lives.cc:1326
class lra_insn_recog_data * lra_insn_recog_data_t
Definition lra-int.h:260
bitmap_head lra_optional_reload_pseudos
Definition lra.cc:2366
void lra_live_ranges_init(void)
Definition lra-lives.cc:1562
ALWAYS_INLINE poly_uint16 GET_MODE_SIZE(machine_mode mode)
Definition machmode.h:657
poly_int< NUM_POLY_INT_COEFFS, HOST_WIDE_INT > poly_int64
Definition poly-int-types.h:24
i
Definition poly-int.h:776
op_type
Definition recog.h:39
bool resize_reg_info(void)
Definition reginfo.cc:883
void setup_reg_classes(int regno, enum reg_class prefclass, enum reg_class altclass, enum reg_class allocnoclass)
Definition reginfo.cc:988
#define reg_raw_mode
Definition regs.h:243
static regset_head spilled_pseudos
Definition reload1.cc:202
int INSN_UID(const_rtx insn)
Definition rtl.h:1461
#define INSN_CODE(INSN)
Definition rtl.h:1549
bool partial_subreg_p(machine_mode outermode, machine_mode innermode)
Definition rtl.h:3255
#define HARD_REGISTER_NUM_P(REG_NO)
Definition rtl.h:1996
HARD_REG_SET allowed
Definition lra-int.h:47
machine_mode mode
Definition lra-int.h:36
machine_mode partner_mode
Definition lra-int.h:38
unsigned int partner_regno
Definition lra-int.h:37
bool is_ref
Definition lra-int.h:39
int id
Definition lra-int.h:35
int regno2
Definition lra-int.h:81
int freq
Definition lra-int.h:79
bool regno1_dest_p
Definition lra-int.h:77
lra_copy_t regno2_next
Definition lra-int.h:83
int regno1
Definition lra-int.h:81
lra_copy_t regno1_next
Definition lra-int.h:83
struct lra_insn_reg * next
Definition lra-int.h:185
enum op_type type
Definition lra-int.h:178
enum machine_mode biggest_mode
Definition lra-int.h:176
unsigned int subreg_p
Definition lra-int.h:181
int regno
Definition lra-int.h:183
alternative_mask early_clobber_alts
Definition lra-int.h:172
lra_live_range_t start_next
Definition lra-int.h:68
int finish
Definition lra-int.h:63
lra_live_range_t next
Definition lra-int.h:66
int start
Definition lra-int.h:63
int regno
Definition lra-int.h:61
unsigned int is_address
Definition lra-int.h:165
enum machine_mode mode
Definition lra-int.h:157
unsigned int is_operator
Definition lra-int.h:163
const char * constraint
Definition lra-int.h:152
alternative_mask early_clobber_alts
Definition lra-int.h:154
unsigned int strict_low
Definition lra-int.h:161
enum op_type type
Definition lra-int.h:159
const struct operand_alternative * operand_alternative
Definition lra-int.h:215
char n_dups
Definition lra-int.h:206
char n_operands
Definition lra-int.h:205
int commutative
Definition lra-int.h:202
struct lra_operand_data * operand
Definition lra-int.h:197
struct lra_insn_reg * hard_regs
Definition lra-int.h:211
char n_alternatives
Definition lra-int.h:207
int * dup_num
Definition lra-int.h:200
#define NULL
Definition system.h:50
#define gcc_checking_assert(EXPR)
Definition system.h:827