24#define lra_assert(c) gcc_checking_assert (c)
29#define LRA_MAX_INSN_RELOADS (MAX_RECOG_OPERANDS * 3)
135 ENUM_BITFIELD(machine_mode)
mode : 16;
197#define LRA_UNKNOWN_ALT -1
198#define LRA_NON_CLOBBERED_ALT -2
241#define LRA_TEMP_CLOBBER_P(x) \
242 (RTL_FLAG_CHECK1 ("TEMP_CLOBBER_P", (x), CLOBBER)->unchanging)
247#define LRA_LOSER_COST_FACTOR 6
248#define LRA_MAX_REJECT 600
253#define LRA_MAX_ASSIGNMENT_ITERATION_NUMBER 30
263#define LRA_MAX_INHERITANCE_PASSES 2
265#if LRA_MAX_INHERITANCE_PASSES <= 0 \
266 || LRA_MAX_INHERITANCE_PASSES >= LRA_MAX_ASSIGNMENT_ITERATION_NUMBER - 8
267#error wrong LRA_MAX_INHERITANCE_PASSES value
271#define LRA_MAX_REMATERIALIZATION_PASSES 2
273#if LRA_MAX_REMATERIALIZATION_PASSES <= 0 \
274 || LRA_MAX_REMATERIALIZATION_PASSES >= LRA_MAX_ASSIGNMENT_ITERATION_NUMBER - 8
275#error wrong LRA_MAX_REMATERIALIZATION_PASSES value
443 const char *title,
bool nl_p)
464 *
id->dup_loc[
i] = *
id->operand_loc[nop];
482 *
id->dup_loc[
i] = *
id->operand_loc[ndup];
Definition genoutput.cc:150
rtx ** operand_loc
Definition lra-int.h:224
int used_insn_alternative
Definition lra-int.h:211
alternative_mask preferred_alternatives
Definition lra-int.h:233
rtx_insn * insn
Definition lra-int.h:218
rtx ** dup_loc
Definition lra-int.h:225
poly_int64 sp_offset
Definition lra-int.h:216
int asm_reloads_num
Definition lra-int.h:214
int * arg_hard_regs
Definition lra-int.h:231
struct lra_insn_reg * regs
Definition lra-int.h:235
struct lra_static_insn_data * insn_static_data
Definition lra-int.h:221
int icode
Definition lra-int.h:206
int preferred_hard_regno_profit1
Definition lra-int.h:89
int last_reload
Definition lra-int.h:97
int val
Definition lra-int.h:103
poly_int64 offset
Definition lra-int.h:105
int freq
Definition lra-int.h:96
HARD_REG_SET exclude_start_hard_regs
Definition lra-int.h:78
int nrefs
Definition lra-int.h:96
lra_live_range_t live_ranges
Definition lra-int.h:112
bitmap_head insn_bitmap
Definition lra-int.h:72
rtx restore_rtx
Definition lra-int.h:100
HARD_REG_SET conflict_hard_regs
Definition lra-int.h:75
machine_mode biggest_mode
Definition lra-int.h:110
int preferred_hard_regno1
Definition lra-int.h:85
lra_copy_t copies
Definition lra-int.h:115
int preferred_hard_regno_profit2
Definition lra-int.h:89
int preferred_hard_regno2
Definition lra-int.h:85
bool debug
Definition collect-utils.cc:34
class bitmap_head * bitmap
Definition coretypes.h:51
int max_reg_num(void)
Definition emit-rtl.cc:1503
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:2478
void lra_update_dup(lra_insn_recog_data_t id, int nop)
Definition lra-int.h:457
void lra_emit_move(rtx, rtx)
Definition lra.cc:497
void lra_print_live_range_list(FILE *, lra_live_range_t)
Definition lra-lives.cc:1253
bitmap_head lra_inheritance_pseudos
Definition lra.cc:2304
bool lra_intersected_live_ranges_p(lra_live_range_t, lra_live_range_t)
Definition lra-lives.cc:209
rtx lra_eliminate_regs_1(rtx_insn *, rtx, machine_mode, bool, bool, poly_int64, bool)
Definition lra-eliminations.cc:335
#define lra_assert(c)
Definition lra-int.h:24
hashval_t lra_rtx_hash(rtx x)
Definition lra.cc:1700
int lra_update_fp2sp_elimination(int *spilled_pseudos)
Definition lra-eliminations.cc:1409
bool lra_asm_error_p
Definition lra.cc:2329
void lra_constraints_init(void)
Definition lra-constraints.cc:5536
void lra_debug_live_ranges(void)
Definition lra-lives.cc:1312
bitmap_head lra_split_regs
Definition lra.cc:2307
int lra_live_range_iter
Definition lra-lives.cc:1332
void lra_eliminate_reg_if_possible(rtx *)
Definition lra-eliminations.cc:1361
lra_insn_recog_data_t lra_set_insn_recog_data(rtx_insn *)
Definition lra.cc:977
int lra_assignment_iter_after_spill
Definition lra-assigns.cc:102
int lra_bad_spill_regno_start
Definition lra.cc:2298
int lra_new_regno_start
Definition lra.cc:2291
lra_live_range_t lra_merge_live_ranges(lra_live_range_t, lra_live_range_t)
Definition lra-lives.cc:154
int lra_curr_reload_num
Definition lra.cc:488
HARD_REG_SET lra_no_alloc_regs
Definition lra.cc:156
void lra_asm_insn_error(rtx_insn *insn)
Definition lra.cc:542
void lra_update_reg_val_offset(int val, poly_int64 incr)
Definition lra-int.h:508
struct lra_copy * lra_copy_t
Definition lra-int.h:51
void lra_create_live_ranges(bool, bool)
Definition lra-lives.cc:1484
bool lra_substitute_pseudo_within_insn(rtx_insn *, int, rtx, bool)
Definition lra.cc:2134
lra_insn_recog_data_t lra_get_insn_recog_data(rtx_insn *insn)
Definition lra-int.h:488
bool lra_hard_reg_split_p
Definition lra.cc:2326
bool lra_need_for_spills_p(void)
Definition lra-spills.cc:590
rtx_insn * lra_pop_insn(void)
Definition lra.cc:1838
FILE * lra_dump_file
Definition lra.cc:2320
int lra_get_regno_hard_regno(int regno)
Definition lra-int.h:433
void lra_spill(void)
Definition lra-spills.cc:606
void lra_debug_elim_table(void)
Definition lra-eliminations.cc:136
void lra_set_used_insn_alternative_by_uid(int, int)
Definition lra.cc:1308
void lra_emit_add(rtx, rtx, rtx)
Definition lra.cc:345
void lra_update_biggest_mode(int regno, machine_mode mode)
Definition lra-int.h:541
int lra_rematerialization_iter
Definition lra-remat.cc:1295
struct lra_insn_reg * lra_get_insn_regs(int)
Definition lra.cc:1688
void lra_set_used_insn_alternative(rtx_insn *, int)
Definition lra.cc:1297
bool check_and_force_assignment_correctness_p
Definition lra-constraints.cc:5028
void lra_dump_bitmap_with_title(const char *, bitmap, int)
Definition lra.cc:129
bool lra_split_hard_reg_for(void)
Definition lra-assigns.cc:1779
poly_int64 lra_update_sp_offset(rtx, poly_int64)
Definition lra-eliminations.cc:1351
void lra_update_dups(lra_insn_recog_data_t, signed char *)
Definition lra.cc:529
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:1613
int lra_hard_reg_usage[FIRST_PSEUDO_REGISTER]
Definition lra-lives.cc:59
void lra_init_equiv(void)
Definition lra-constraints.cc:498
void lra_free_copies(void)
Definition lra.cc:1411
void eliminate_regs_in_insn(rtx_insn *insn, bool, bool, poly_int64)
Definition lra-eliminations.cc:899
void lra_update_insn_regno_info(rtx_insn *)
Definition lra.cc:1646
void lra_set_insn_deleted(rtx_insn *)
Definition lra.cc:261
void lra_delete_dead_insn(rtx_insn *)
Definition lra.cc:270
int lra_constraint_iter
Definition lra-constraints.cc:5019
void lra_debug_live_range_list(lra_live_range_t)
Definition lra-lives.cc:1277
void lra_assign_reg_val(int from, int to)
Definition lra-int.h:532
void lra_clear_live_ranges(void)
Definition lra-lives.cc:1506
bool lra_remat(void)
Definition lra-remat.cc:1300
HARD_REG_SET hard_regs_spilled_into
Definition lra.cc:1328
void lra_dump_insns_if_possible(const char *title)
Definition lra.cc:1896
bool lra_constraints(bool)
Definition lra-constraints.cc:5265
void lra_change_class(int regno, enum reg_class new_class, const char *title, bool nl_p)
Definition lra-int.h:442
bitmap_head lra_subreg_reload_pseudos
Definition lra.cc:2317
int lra_live_max_point
Definition lra-lives.cc:55
void lra_setup_reg_renumber(int, int, bool)
Definition lra-assigns.cc:781
int * lra_point_freq
Definition lra-lives.cc:522
void lra_dump_insns(FILE *f)
Definition lra.cc:1888
bool lra_constrain_insn(rtx_insn *)
Definition lra-constraints.cc:4875
void lra_set_regno_unique_value(int)
Definition lra.cc:244
void lra_constraints_finish(void)
Definition lra-constraints.cc:5544
bool lra_need_for_scratch_reg_p(void)
Definition lra-spills.cc:577
bool lra_reg_spill_p
Definition lra.cc:2333
void lra_push_insn_by_uid(unsigned int)
Definition lra.cc:1831
rtx lra_pmode_pseudo
Definition lra.cc:2301
int lra_coalesce_iter
Definition lra-coalesce.cc:173
int lra_constraint_offset(int, machine_mode)
Definition lra-constraints.cc:777
int lra_undo_inheritance_iter
Definition lra-constraints.cc:7277
void lra_invalidate_insn_regno_info(rtx_insn *)
Definition lra.cc:1621
void lra_create_copy(int, int, int)
Definition lra.cc:1426
void lra_push_insn(rtx_insn *)
Definition lra.cc:1817
void lra_eliminate(bool, bool)
Definition lra-eliminations.cc:1435
bool lra_coalesce(void)
Definition lra-coalesce.cc:220
int lra_constraint_new_regno_start
Definition lra.cc:2294
bool lra_undo_inheritance(void)
Definition lra-constraints.cc:7672
void lra_setup_reload_pseudo_preferenced_hard_reg(int, int, int)
Definition lra-lives.cc:536
bool lra_reg_val_equal_p(int regno, int val, poly_int64 offset)
Definition lra-int.h:521
lra_insn_recog_data_t * lra_insn_recog_data
Definition lra.cc:748
bool lra_substitute_pseudo(rtx *, int, rtx, bool, bool)
Definition lra.cc:2028
bool spill_hard_reg_in_range(int, enum reg_class, rtx_insn *, rtx_insn *)
Definition lra-constraints.cc:6317
unsigned int lra_insn_stack_length(void)
Definition lra.cc:1847
lra_insn_recog_data_t lra_update_insn_recog_data(rtx_insn *)
Definition lra.cc:1221
int lra_insn_recog_data_len
Definition lra.cc:745
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
void lra_update_operator_dups(lra_insn_recog_data_t id)
Definition lra-int.h:472
void lra_push_insn_and_update_insn_regno_info(rtx_insn *)
Definition lra.cc:1824
void lra_process_new_insns(rtx_insn *, rtx_insn *, rtx_insn *, const char *)
Definition lra.cc:1908
struct lra_live_range * lra_live_range_t
Definition lra-int.h:31
int lra_verbose
Definition lra.cc:2323
int lra_inheritance_iter
Definition lra-constraints.cc:7204
class lra_reg * lra_reg_info
Definition lra.cc:1326
void lra_inheritance(void)
Definition lra-constraints.cc:7208
lra_copy_t lra_get_copy(int)
Definition lra.cc:1456
void lra_live_ranges_finish(void)
Definition lra-lives.cc:1525
int lra_assignment_iter
Definition lra-assigns.cc:101
lra_live_range_t lra_copy_live_range_list(lra_live_range_t)
Definition lra-lives.cc:135
void lra_final_code_change(void)
Definition lra-spills.cc:718
void lra_debug_pseudo_live_ranges(int)
Definition lra-lives.cc:1294
class lra_insn_recog_data * lra_insn_recog_data_t
Definition lra-int.h:238
bitmap_head lra_optional_reload_pseudos
Definition lra.cc:2312
void lra_live_ranges_init(void)
Definition lra-lives.cc:1517
ALWAYS_INLINE poly_uint16 GET_MODE_SIZE(machine_mode mode)
Definition machmode.h:647
i
Definition poly-int.h:776
rtx offset
Definition postreload.cc:691
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:1446
#define INSN_CODE(INSN)
Definition rtl.h:1534
bool partial_subreg_p(machine_mode outermode, machine_mode innermode)
Definition rtl.h:3189
#define HARD_REGISTER_NUM_P(REG_NO)
Definition rtl.h:1973
int regno2
Definition lra-int.h:61
int freq
Definition lra-int.h:59
bool regno1_dest_p
Definition lra-int.h:57
lra_copy_t regno2_next
Definition lra-int.h:63
int regno1
Definition lra-int.h:61
lra_copy_t regno1_next
Definition lra-int.h:63
struct lra_insn_reg * next
Definition lra-int.h:163
enum op_type type
Definition lra-int.h:156
enum machine_mode biggest_mode
Definition lra-int.h:154
unsigned int subreg_p
Definition lra-int.h:159
int regno
Definition lra-int.h:161
alternative_mask early_clobber_alts
Definition lra-int.h:150
lra_live_range_t start_next
Definition lra-int.h:48
int finish
Definition lra-int.h:43
lra_live_range_t next
Definition lra-int.h:46
int start
Definition lra-int.h:43
int regno
Definition lra-int.h:41
unsigned int is_address
Definition lra-int.h:143
enum machine_mode mode
Definition lra-int.h:135
unsigned int is_operator
Definition lra-int.h:141
const char * constraint
Definition lra-int.h:130
alternative_mask early_clobber_alts
Definition lra-int.h:132
unsigned int strict_low
Definition lra-int.h:139
enum op_type type
Definition lra-int.h:137
const struct operand_alternative * operand_alternative
Definition lra-int.h:193
char n_dups
Definition lra-int.h:184
char n_operands
Definition lra-int.h:183
int commutative
Definition lra-int.h:180
struct lra_operand_data * operand
Definition lra-int.h:175
struct lra_insn_reg * hard_regs
Definition lra-int.h:189
char n_alternatives
Definition lra-int.h:185
int * dup_num
Definition lra-int.h:178
#define NULL
Definition system.h:50
#define gcc_checking_assert(EXPR)
Definition system.h:828