31#define ENABLE_IRA_CHECKING
34#ifdef ENABLE_IRA_CHECKING
35#define ira_assert(c) gcc_assert (c)
39#define ira_assert(c) ((void)(0 && (c)))
47#define REG_FREQ_FROM_EDGE_FREQ(freq) \
48 (optimize_function_for_size_p (cfun) \
49 ? REG_FREQ_MAX : (freq * REG_FREQ_MAX / BB_FREQ_MAX) \
50 ? (freq * REG_FREQ_MAX / BB_FREQ_MAX) : 1)
154#if defined ENABLE_IRA_CHECKING && (GCC_VERSION >= 2007)
155#define IRA_BB_NODE_BY_INDEX(index) __extension__ \
156(({ ira_loop_tree_node_t _node = (&ira_bb_nodes[index]); \
157 if (_node->children != NULL || _node->loop != NULL || _node->bb == NULL)\
160 "\n%s: %d: error in %s: it is not a block node\n", \
161 __FILE__, __LINE__, __FUNCTION__); \
162 gcc_unreachable (); \
166#define IRA_BB_NODE_BY_INDEX(index) (&ira_bb_nodes[index])
169#define IRA_BB_NODE(bb) IRA_BB_NODE_BY_INDEX ((bb)->index)
176#if defined ENABLE_IRA_CHECKING && (GCC_VERSION >= 2007)
177#define IRA_LOOP_NODE_BY_INDEX(index) __extension__ \
178(({ ira_loop_tree_node_t const _node = (&ira_loop_nodes[index]); \
179 if (_node->children == NULL || _node->bb != NULL \
180 || (_node->loop == NULL && current_loops != NULL)) \
183 "\n%s: %d: error in %s: it is not a loop node\n", \
184 __FILE__, __LINE__, __FUNCTION__); \
185 gcc_unreachable (); \
189#define IRA_LOOP_NODE_BY_INDEX(index) (&ira_loop_nodes[index])
192#define IRA_LOOP_NODE(loop) IRA_LOOP_NODE_BY_INDEX ((loop)->num)
310 unsigned int no_stack_reg_p : 1, total_no_stack_reg_p : 1;
331#ifndef NUM_REGISTER_FILTERS
332#error "insn-config.h not included"
333#elif NUM_REGISTER_FILTERS
431#define ALLOCNO_NUM(A) ((A)->num)
432#define ALLOCNO_REGNO(A) ((A)->regno)
433#define ALLOCNO_REG(A) ((A)->reg)
434#define ALLOCNO_NEXT_REGNO_ALLOCNO(A) ((A)->next_regno_allocno)
435#define ALLOCNO_LOOP_TREE_NODE(A) ((A)->loop_tree_node)
436#define ALLOCNO_CAP(A) ((A)->cap)
437#define ALLOCNO_CAP_MEMBER(A) ((A)->cap_member)
438#define ALLOCNO_NREFS(A) ((A)->nrefs)
439#define ALLOCNO_FREQ(A) ((A)->freq)
440#define ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P(A) \
441 ((A)->might_conflict_with_parent_p)
442#if NUM_REGISTER_FILTERS
443#define ALLOCNO_REGISTER_FILTERS(A) (A)->register_filters
444#define ALLOCNO_SET_REGISTER_FILTERS(A, X) ((A)->register_filters = (X))
446#define ALLOCNO_REGISTER_FILTERS(A) 0
447#define ALLOCNO_SET_REGISTER_FILTERS(A, X) ((void) (A), gcc_assert ((X) == 0))
449#define ALLOCNO_HARD_REGNO(A) ((A)->hard_regno)
450#define ALLOCNO_CALL_FREQ(A) ((A)->call_freq)
451#define ALLOCNO_CALLS_CROSSED_NUM(A) ((A)->calls_crossed_num)
452#define ALLOCNO_CHEAP_CALLS_CROSSED_NUM(A) ((A)->cheap_calls_crossed_num)
453#define ALLOCNO_CROSSED_CALLS_ABIS(A) ((A)->crossed_calls_abis)
454#define ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS(A) \
455 ((A)->crossed_calls_clobbered_regs)
456#define ALLOCNO_MEM_OPTIMIZED_DEST(A) ((A)->mem_optimized_dest)
457#define ALLOCNO_MEM_OPTIMIZED_DEST_P(A) ((A)->mem_optimized_dest_p)
458#define ALLOCNO_SOMEWHERE_RENAMED_P(A) ((A)->somewhere_renamed_p)
459#define ALLOCNO_CHILD_RENAMED_P(A) ((A)->child_renamed_p)
460#define ALLOCNO_DONT_REASSIGN_P(A) ((A)->dont_reassign_p)
462#define ALLOCNO_NO_STACK_REG_P(A) ((A)->no_stack_reg_p)
463#define ALLOCNO_TOTAL_NO_STACK_REG_P(A) ((A)->total_no_stack_reg_p)
465#define ALLOCNO_BAD_SPILL_P(A) ((A)->bad_spill_p)
466#define ALLOCNO_ASSIGNED_P(A) ((A)->assigned_p)
467#define ALLOCNO_MODE(A) ((A)->mode)
468#define ALLOCNO_WMODE(A) ((A)->wmode)
469#define ALLOCNO_PREFS(A) ((A)->allocno_prefs)
470#define ALLOCNO_COPIES(A) ((A)->allocno_copies)
471#define ALLOCNO_HARD_REG_COSTS(A) ((A)->hard_reg_costs)
472#define ALLOCNO_UPDATED_HARD_REG_COSTS(A) ((A)->updated_hard_reg_costs)
473#define ALLOCNO_CONFLICT_HARD_REG_COSTS(A) \
474 ((A)->conflict_hard_reg_costs)
475#define ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS(A) \
476 ((A)->updated_conflict_hard_reg_costs)
477#define ALLOCNO_CLASS(A) ((A)->aclass)
478#define ALLOCNO_CLASS_COST(A) ((A)->class_cost)
479#define ALLOCNO_UPDATED_CLASS_COST(A) ((A)->updated_class_cost)
480#define ALLOCNO_MEMORY_COST(A) ((A)->memory_cost)
481#define ALLOCNO_UPDATED_MEMORY_COST(A) ((A)->updated_memory_cost)
482#define ALLOCNO_EXCESS_PRESSURE_POINTS_NUM(A) \
483 ((A)->excess_pressure_points_num)
484#define ALLOCNO_OBJECT(A,N) ((A)->objects[N])
485#define ALLOCNO_NUM_OBJECTS(A) ((A)->num_objects)
486#define ALLOCNO_ADD_DATA(A) ((A)->add_data)
515#define ALLOCNO_EMIT_DATA(a) ((ira_emit_data_t) ALLOCNO_ADD_DATA (a))
527#define OBJECT_ALLOCNO(O) ((O)->allocno)
528#define OBJECT_SUBWORD(O) ((O)->subword)
529#define OBJECT_CONFLICT_ARRAY(O) ((O)->conflicts_array)
530#define OBJECT_CONFLICT_VEC(O) ((ira_object_t *)(O)->conflicts_array)
531#define OBJECT_CONFLICT_BITVEC(O) ((IRA_INT_TYPE *)(O)->conflicts_array)
532#define OBJECT_CONFLICT_ARRAY_SIZE(O) ((O)->conflicts_array_size)
533#define OBJECT_CONFLICT_VEC_P(O) ((O)->conflict_vec_p)
534#define OBJECT_NUM_CONFLICTS(O) ((O)->num_accumulated_conflicts)
535#define OBJECT_CONFLICT_HARD_REGS(O) ((O)->conflict_hard_regs)
536#define OBJECT_TOTAL_CONFLICT_HARD_REGS(O) ((O)->total_conflict_hard_regs)
537#define OBJECT_MIN(O) ((O)->min)
538#define OBJECT_MAX(O) ((O)->max)
539#define OBJECT_CONFLICT_ID(O) ((O)->id)
540#define OBJECT_LIVE_RANGES(O) ((O)->live_ranges)
666#define IRA_INT_BITS HOST_BITS_PER_WIDE_INT
667#define IRA_INT_TYPE HOST_WIDE_INT
672#if defined ENABLE_IRA_CHECKING && (GCC_VERSION >= 2007)
674#define SET_MINMAX_SET_BIT(R, I, MIN, MAX) __extension__ \
675 (({ int _min = (MIN), _max = (MAX), _i = (I); \
676 if (_i < _min || _i > _max) \
679 "\n%s: %d: error in %s: %d not in range [%d,%d]\n", \
680 __FILE__, __LINE__, __FUNCTION__, _i, _min, _max); \
681 gcc_unreachable (); \
683 ((R)[(unsigned) (_i - _min) / IRA_INT_BITS] \
684 |= ((IRA_INT_TYPE) 1 << ((unsigned) (_i - _min) % IRA_INT_BITS))); }))
687#define CLEAR_MINMAX_SET_BIT(R, I, MIN, MAX) __extension__ \
688 (({ int _min = (MIN), _max = (MAX), _i = (I); \
689 if (_i < _min || _i > _max) \
692 "\n%s: %d: error in %s: %d not in range [%d,%d]\n", \
693 __FILE__, __LINE__, __FUNCTION__, _i, _min, _max); \
694 gcc_unreachable (); \
696 ((R)[(unsigned) (_i - _min) / IRA_INT_BITS] \
697 &= ~((IRA_INT_TYPE) 1 << ((unsigned) (_i - _min) % IRA_INT_BITS))); }))
699#define TEST_MINMAX_SET_BIT(R, I, MIN, MAX) __extension__ \
700 (({ int _min = (MIN), _max = (MAX), _i = (I); \
701 if (_i < _min || _i > _max) \
704 "\n%s: %d: error in %s: %d not in range [%d,%d]\n", \
705 __FILE__, __LINE__, __FUNCTION__, _i, _min, _max); \
706 gcc_unreachable (); \
708 ((R)[(unsigned) (_i - _min) / IRA_INT_BITS] \
709 & ((IRA_INT_TYPE) 1 << ((unsigned) (_i - _min) % IRA_INT_BITS))); }))
713#define SET_MINMAX_SET_BIT(R, I, MIN, MAX) \
714 ((R)[(unsigned) ((I) - (MIN)) / IRA_INT_BITS] \
715 |= ((IRA_INT_TYPE) 1 << ((unsigned) ((I) - (MIN)) % IRA_INT_BITS)))
717#define CLEAR_MINMAX_SET_BIT(R, I, MIN, MAX) \
718 ((R)[(unsigned) ((I) - (MIN)) / IRA_INT_BITS] \
719 &= ~((IRA_INT_TYPE) 1 << ((unsigned) ((I) - (MIN)) % IRA_INT_BITS)))
721#define TEST_MINMAX_SET_BIT(R, I, MIN, MAX) \
722 ((R)[(unsigned) ((I) - (MIN)) / IRA_INT_BITS] \
723 & ((IRA_INT_TYPE) 1 << ((unsigned) ((I) - (MIN)) % IRA_INT_BITS)))
757 i->nel = max < min ? 0 : max - min + 1;
760 i->word =
i->nel == 0 ? 0 :
vec[0];
770 for (;
i->word == 0;
i->word =
i->vec[
i->word_num])
776 if (
i->bit_num >=
i->nel)
785 *n = (int)
i->bit_num +
i->start_val;
802#define FOR_EACH_BIT_IN_MINMAX_SET(VEC, MIN, MAX, N, ITER) \
803 for (minmax_set_iter_init (&(ITER), (VEC), (MIN), (MAX)); \
804 minmax_set_iter_cond (&(ITER), &(N)); \
805 minmax_set_iter_next (&(ITER)))
836 [FIRST_PSEUDO_REGISTER][NUM_MACHINE_MODES]);
948#define this_target_ira_int (&default_target_ira_int)
951#define ira_reg_mode_hard_regset \
952 (this_target_ira_int->x_ira_reg_mode_hard_regset)
953#define ira_register_move_cost \
954 (this_target_ira_int->x_ira_register_move_cost)
955#define ira_max_memory_move_cost \
956 (this_target_ira_int->x_ira_max_memory_move_cost)
957#define ira_may_move_in_cost \
958 (this_target_ira_int->x_ira_may_move_in_cost)
959#define ira_may_move_out_cost \
960 (this_target_ira_int->x_ira_may_move_out_cost)
961#define ira_reg_allocno_class_p \
962 (this_target_ira_int->x_ira_reg_allocno_class_p)
963#define ira_reg_pressure_class_p \
964 (this_target_ira_int->x_ira_reg_pressure_class_p)
965#define ira_non_ordered_class_hard_regs \
966 (this_target_ira_int->x_ira_non_ordered_class_hard_regs)
967#define ira_class_hard_reg_index \
968 (this_target_ira_int->x_ira_class_hard_reg_index)
969#define ira_useful_class_mode_regs \
970 (this_target_ira_int->x_ira_useful_class_mode_regs)
971#define ira_important_classes_num \
972 (this_target_ira_int->x_ira_important_classes_num)
973#define ira_important_classes \
974 (this_target_ira_int->x_ira_important_classes)
975#define ira_important_class_nums \
976 (this_target_ira_int->x_ira_important_class_nums)
977#define ira_uniform_class_p \
978 (this_target_ira_int->x_ira_uniform_class_p)
979#define ira_reg_class_intersect \
980 (this_target_ira_int->x_ira_reg_class_intersect)
981#define ira_reg_class_super_classes \
982 (this_target_ira_int->x_ira_reg_class_super_classes)
983#define ira_reg_class_subunion \
984 (this_target_ira_int->x_ira_reg_class_subunion)
985#define ira_reg_class_superunion \
986 (this_target_ira_int->x_ira_reg_class_superunion)
987#define ira_prohibited_mode_move_regs \
988 (this_target_ira_int->x_ira_prohibited_mode_move_regs)
989#define ira_hard_regno_nrefs \
990 (this_target_ira_int->x_ira_hard_regno_nrefs)
1162#define FOR_EACH_ALLOCNO(A, ITER) \
1163 for (ira_allocno_iter_init (&(ITER)); \
1164 ira_allocno_iter_cond (&(ITER), &(A));)
1199#define FOR_EACH_OBJECT(OBJ, ITER) \
1200 for (ira_object_iter_init (&(ITER)); \
1201 ira_object_iter_cond (&(ITER), &(OBJ));)
1235#define FOR_EACH_ALLOCNO_OBJECT(A, O, ITER) \
1236 for (ira_allocno_object_iter_init (&(ITER)); \
1237 ira_allocno_object_iter_cond (&(ITER), (A), &(O));)
1273#define FOR_EACH_PREF(P, ITER) \
1274 for (ira_pref_iter_init (&(ITER)); \
1275 ira_pref_iter_cond (&(ITER), &(P));)
1311#define FOR_EACH_COPY(C, ITER) \
1312 for (ira_copy_iter_init (&(ITER)); \
1313 ira_copy_iter_cond (&(ITER), &(C));)
1353 if (
i->conflict_vec_p)
1354 i->size =
i->bit_num =
i->base_conflict_id =
i->word = 0;
1378 if (
i->conflict_vec_p)
1387 unsigned int bit_num =
i->bit_num;
1407 i->bit_num = bit_num + 1;
1408 i->word = word >> 1;
1418#define FOR_EACH_OBJECT_CONFLICT(OBJ, CONF, ITER) \
1419 for (ira_object_conflict_iter_init (&(ITER), (OBJ)); \
1420 ira_object_conflict_iter_cond (&(ITER), &(CONF));)
1446 for (size =
i = 0;
i < FIRST_PSEUDO_REGISTER;
i++)
1486 for (
i = 0;
i < len;
i++)
1501 memcpy (*
vec, src,
sizeof (
int) * len);
1517 memset (*
vec, 0,
sizeof (
int) * len);
1519 for (
i = 0;
i < len;
i++)
1520 (*
vec)[
i] += src[
i];
1538 memcpy (reg_costs, src,
sizeof (
int) * len);
1541 for (
i = 0;
i < len;
i++)
1636 bool exclude_old_reload =
true)
reg_class m_class
Definition ira-int.h:1589
int move_between_loops_cost() const
Definition ira-int.h:1622
int spill_outside_loop_cost() const
Definition ira-int.h:1611
int spill_inside_loop_cost() const
Definition ira-int.h:1600
machine_mode m_mode
Definition ira-int.h:1588
int m_entry_freq
Definition ira-int.h:1592
int m_exit_freq
Definition ira-int.h:1592
ira_loop_border_costs(ira_allocno_t)
Definition ira-color.cc:2810
rtx mem
Definition ira-int.h:634
bitmap_head spilled_regs
Definition ira-int.h:632
poly_uint64 width
Definition ira-int.h:636
int x_ira_important_classes_num
Definition ira-int.h:890
struct costs * x_this_op_costs[MAX_RECOG_OPERANDS]
Definition ira-int.h:827
HARD_REG_SET x_ira_prohibited_mode_move_regs[NUM_MACHINE_MODES]
Definition ira-int.h:935
enum reg_class x_ira_reg_class_superunion[N_REG_CLASSES][N_REG_CLASSES]
Definition ira-int.h:925
enum reg_class x_ira_reg_class_intersect[N_REG_CLASSES][N_REG_CLASSES]
Definition ira-int.h:909
void free_register_move_costs()
Definition ira.cc:1665
enum reg_class x_ira_important_classes[N_REG_CLASSES]
Definition ira-int.h:894
move_table * x_ira_may_move_in_cost[MAX_MACHINE_MODE]
Definition ira-int.h:844
enum reg_class x_alloc_reg_class_subclasses[N_REG_CLASSES][N_REG_CLASSES]
Definition ira-int.h:930
size_t x_ira_hard_regno_nrefs[FIRST_PSEUDO_REGISTER]
Definition ira-int.h:941
~target_ira_int()
Definition ira.cc:1692
bool x_ira_prohibited_mode_move_regs_initialized_p
Definition ira-int.h:938
HARD_REG_SET x_no_unit_alloc_regs
Definition ira-int.h:831
move_table * x_ira_register_move_cost[MAX_MACHINE_MODE]
Definition ira-int.h:840
struct costs * x_init_cost
Definition ira-int.h:820
int x_ira_important_class_nums[N_REG_CLASSES]
Definition ira-int.h:899
short int x_ira_max_memory_move_cost[MAX_MACHINE_MODE][N_REG_CLASSES][2]
Definition ira-int.h:855
enum reg_class x_ira_reg_class_super_classes[N_REG_CLASSES][N_REG_CLASSES]
Definition ira-int.h:915
move_table * x_ira_may_move_out_cost[MAX_MACHINE_MODE]
Definition ira-int.h:848
void free_ira_costs()
Definition ira-costs.cc:2514
HARD_REG_SET(x_ira_reg_mode_hard_regset[FIRST_PSEUDO_REGISTER][NUM_MACHINE_MODES])
bool x_ira_reg_pressure_class_p[N_REG_CLASSES]
Definition ira-int.h:862
size_t x_max_struct_costs_size
Definition ira-int.h:816
short x_ira_class_hard_reg_index[N_REG_CLASSES][FIRST_PSEUDO_REGISTER]
Definition ira-int.h:873
bool x_ira_uniform_class_p[N_REG_CLASSES]
Definition ira-int.h:902
bool x_ira_reg_allocno_class_p[N_REG_CLASSES]
Definition ira-int.h:859
short x_ira_non_ordered_class_hard_regs[N_REG_CLASSES][FIRST_PSEUDO_REGISTER]
Definition ira-int.h:867
struct costs * x_temp_costs
Definition ira-int.h:823
int x_last_mode_for_init_move_cost
Definition ira-int.h:851
struct costs * x_op_costs[MAX_RECOG_OPERANDS]
Definition ira-int.h:826
HARD_REG_SET x_ira_useful_class_mode_regs[N_REG_CLASSES][NUM_MACHINE_MODES]
Definition ira-int.h:887
enum reg_class x_ira_reg_class_subunion[N_REG_CLASSES][N_REG_CLASSES]
Definition ira-int.h:924
bool debug
Definition collect-utils.cc:34
struct basic_block_def * basic_block
Definition coretypes.h:355
struct rtx_def * rtx
Definition coretypes.h:57
int reg_class_t
Definition coretypes.h:376
class bitmap_head * bitmap
Definition coretypes.h:51
@ IRA_REGION_MIXED
Definition flag-types.h:200
HARD_REG_SET call_clobbers_in_region(unsigned int abis, const_hard_reg_set mask, machine_mode mode)
Definition function-abi.cc:179
bool call_clobbered_in_region_p(unsigned int abis, const_hard_reg_set mask, machine_mode mode, unsigned int regno)
Definition function-abi.h:308
const size_t NUM_ABI_IDS
Definition function-abi.h:31
uint64_t alternative_mask
Definition genattrtab.cc:236
vec< const char * > register_filters
Definition gensupport.cc:408
#define TEST_HARD_REG_BIT(SET, BIT)
Definition hard-reg-set.h:170
HARD_REG_ELT_TYPE HARD_REG_SET
Definition hard-reg-set.h:47
const HARD_REG_SET const_hard_reg_set
Definition hard-reg-set.h:48
int ctz_hwi(unsigned HOST_WIDE_INT x)
Definition hwint.cc:86
ira_loop_tree_node_t ira_bb_nodes
Definition ira-build.cc:49
ira_pref_t * ira_prefs
Definition ira-build.cc:79
int ira_allocnos_num
Definition ira-build.cc:68
ira_copy_t * ira_copies
Definition ira-build.cc:87
ira_loop_tree_node_t ira_curr_loop_tree_node
Definition ira-build.cc:1754
ira_allocno_t * ira_curr_regno_allocno_map
Definition ira-build.cc:1755
ira_object_t * ira_object_id_map
Definition ira-build.cc:75
ira_loop_tree_node_t ira_loop_nodes
Definition ira-build.cc:53
ira_allocno_t * ira_allocnos
Definition ira-build.cc:65
int ira_loop_tree_height
Definition ira-build.cc:44
ira_allocno_t * ira_regno_allocno_map
Definition ira-build.cc:60
int ira_copies_num
Definition ira-build.cc:90
int ira_objects_num
Definition ira-build.cc:72
ira_loop_tree_node_t ira_loop_tree_root
Definition ira-build.cc:41
int ira_prefs_num
Definition ira-build.cc:82
static IRA_INT_TYPE ** conflicts
Definition ira-conflicts.cc:46
static enum reg_class * pref
Definition ira-costs.cc:94
ira_emit_data_t ira_allocno_emit_data
Definition ira-emit.cc:89
void ira_init_register_move_cost_if_necessary(machine_mode mode)
Definition ira-int.h:1121
#define ira_register_move_cost
Definition ira-int.h:953
void ira_add_live_range_to_object(ira_object_t, int, int)
Definition ira-build.cc:942
bool ira_conflict_vector_profitable_p(ira_object_t, int)
Definition ira-build.cc:632
void ira_object_conflict_iter_init(ira_object_conflict_iterator *i, ira_object_t obj)
Definition ira-int.h:1347
int ira_loop_edge_freq(ira_loop_tree_node_t, int, bool)
Definition ira-color.cc:2777
void ira_allocate_object_conflicts(ira_object_t, int)
Definition ira-build.cc:690
unsigned short move_table[N_REG_CLASSES]
Definition ira-int.h:71
int64_t ira_shuffle_cost
Definition ira-int.h:652
bool ira_object_iter_cond(ira_object_iterator *i, ira_object_t *obj)
Definition ira-int.h:1182
void ira_debug_copy(ira_copy_t)
Definition ira-build.cc:1519
bool ira_allocno_iter_cond(ira_allocno_iterator *i, ira_allocno_t *a)
Definition ira-int.h:1145
int ira_spilled_reg_stack_slots_num
Definition ira.cc:410
bool ira_hard_reg_set_intersection_p(int hard_regno, machine_mode mode, HARD_REG_SET hard_regset)
Definition ira-int.h:1428
bool ira_single_region_allocno_p(ira_allocno_t a, ira_allocno_t subloop_a)
Definition ira-int.h:1666
void ira_add_allocno_pref(ira_allocno_t, int, int)
Definition ira-build.cc:1228
#define OBJECT_MAX(O)
Definition ira-int.h:538
void ira_allocate_and_copy_costs(int **vec, enum reg_class aclass, int *src)
Definition ira-int.h:1493
#define OBJECT_CONFLICT_ARRAY(O)
Definition ira-int.h:529
void ira_finish_emit_data(void)
Definition ira-emit.cc:119
int64_t ira_overall_cost
Definition ira.cc:421
#define IRA_INT_TYPE
Definition ira-int.h:667
rtx allocno_emit_reg(ira_allocno_t a)
Definition ira-int.h:522
ira_allocno_t ira_soft_conflict(ira_allocno_t, ira_allocno_t)
Definition ira-color.cc:1789
void ira_traverse_loop_tree(bool, ira_loop_tree_node_t, void(*)(ira_loop_tree_node_t), void(*)(ira_loop_tree_node_t))
Definition ira-build.cc:1773
void ira_init_costs(void)
Definition ira-costs.cc:2533
bitmap ira_allocate_bitmap(void)
Definition ira.cc:681
live_range_t ira_merge_live_ranges(live_range_t, live_range_t)
Definition ira-build.cc:986
void ira_debug_prefs(void)
Definition ira-build.cc:1273
#define OBJECT_MIN(O)
Definition ira-int.h:537
#define ALLOCNO_MODE(A)
Definition ira-int.h:467
HARD_REG_SET ira_need_caller_save_regs(ira_allocno_t a)
Definition ira-int.h:1553
#define ALLOCNO_CALL_FREQ(A)
Definition ira-int.h:450
#define IRA_INT_BITS
Definition ira-int.h:666
int ira_caller_save_cost(ira_allocno_t a)
Definition ira-int.h:1694
void ira_free_allocno_updated_costs(ira_allocno_t)
Definition ira-build.cc:1095
void ira_debug_allocno_prefs(ira_allocno_t)
Definition ira-build.cc:1292
void ira_free_bitmap(bitmap)
Definition ira.cc:688
void ira_free(void *addr)
Definition ira.cc:669
int64_t ira_store_cost
Definition ira-int.h:652
void ira_debug_live_ranges(void)
Definition ira-lives.cc:1794
void ira_copy_iter_init(ira_copy_iterator *i)
Definition ira-int.h:1286
void ira_rebuild_start_finish_chains(void)
Definition ira-lives.cc:1643
#define ALLOCNO_OBJECT(A, N)
Definition ira-int.h:484
void ira_debug_pref(ira_pref_t)
Definition ira-build.cc:1255
void ira_allocate_and_set_or_copy_costs(int **vec, enum reg_class aclass, int val, int *src)
Definition ira-int.h:1527
void ira_init_costs_once(void)
Definition ira-costs.cc:2499
void * ira_allocate(size_t)
Definition ira.cc:655
bool ira_live_ranges_intersect_p(live_range_t, live_range_t)
Definition ira-build.cc:1058
live_range_t * ira_finish_point_ranges
Definition ira-int.h:222
live_range_t ira_create_live_range(ira_object_t, int, int, live_range_t)
Definition ira-build.cc:926
bool ira_build(void)
Definition ira-build.cc:3478
bool ira_subloop_allocnos_can_differ_p(ira_allocno_t a, bool allocated_p=true, bool exclude_old_reload=true)
Definition ira-int.h:1635
void ira_print_disposition(FILE *)
Definition ira.cc:698
#define ALLOCNO_CROSSED_CALLS_ABIS(A)
Definition ira-int.h:453
int ira_max_point
Definition ira-lives.cc:50
void ira_color(void)
Definition ira-color.cc:5324
void ira_create_allocno_live_ranges(void)
Definition ira-lives.cc:1803
void ira_reassign_conflict_allocnos(int)
Definition ira-color.cc:4024
void ira_emit(bool)
Definition ira-emit.cc:1254
#define ALLOCNO_EMIT_DATA(a)
Definition ira-int.h:515
struct ira_allocno_pref * ira_pref_t
Definition ira-int.h:62
live_range_t ira_copy_live_range_list(live_range_t)
Definition ira-build.cc:964
void ira_allocate_conflict_vec(ira_object_t, int)
Definition ira-build.cc:656
ira_allocno_t ira_parent_or_cap_allocno(ira_allocno_t)
Definition ira-build.cc:3064
void ira_remove_pref(ira_pref_t)
Definition ira-build.cc:1308
live_range_t * ira_start_point_ranges
Definition ira-lives.cc:54
void ira_create_allocno_objects(ira_allocno_t)
Definition ira-build.cc:558
void ira_allocno_object_iter_init(ira_allocno_object_iterator *i)
Definition ira-int.h:1211
void ira_finish_assign(void)
Definition ira-color.cc:5185
int ira_move_loops_num
Definition ira.cc:424
void ira_compress_allocno_live_ranges(void)
Definition ira-lives.cc:1826
void ira_set_allocno_class(ira_allocno_t, enum reg_class)
Definition ira-build.cc:542
void ira_flattening(int, int)
Definition ira-build.cc:3134
#define ALLOCNO_NUM_OBJECTS(A)
Definition ira-int.h:485
FILE * ira_dump_file
Definition ira.cc:407
struct ira_object * ira_object_t
Definition ira-int.h:64
void ira_destroy(void)
Definition ira-build.cc:3569
void ira_costs(void)
Definition ira-costs.cc:2587
void ira_tune_allocno_costs(void)
Definition ira-costs.cc:2633
bool ira_hard_reg_in_set_p(int hard_regno, machine_mode mode, HARD_REG_SET hard_regset)
Definition ira-int.h:1456
void ira_allocate_and_set_costs(int **vec, reg_class_t aclass, int val)
Definition ira-int.h:1477
struct ira_emit_data * ira_emit_data_t
Definition ira-int.h:489
struct ira_loop_tree_node * ira_loop_tree_node_t
Definition ira-int.h:69
void ira_init_register_move_cost(machine_mode)
Definition ira.cc:1544
ira_allocno_t ira_parent_allocno(ira_allocno_t)
Definition ira-build.cc:3047
void ira_finish_allocno_live_ranges(void)
Definition ira-lives.cc:1839
bool ira_allocno_object_iter_cond(ira_allocno_object_iterator *i, ira_allocno_t a, ira_object_t *o)
Definition ira-int.h:1220
void ira_debug_live_range_list(live_range_t)
Definition ira-lives.cc:1745
int ira_additional_jumps_num
Definition ira-int.h:653
void ior_hard_reg_conflicts(ira_allocno_t, const_hard_reg_set)
Definition ira-build.cc:617
#define ALLOCNO_CLASS(A)
Definition ira-int.h:477
void ira_implicitly_set_insn_hard_regs(HARD_REG_SET *, alternative_mask)
Definition ira-lives.cc:934
ira_copy_t ira_create_copy(ira_allocno_t, ira_allocno_t, int, bool, rtx_insn *, ira_loop_tree_node_t)
Definition ira-build.cc:1406
void ira_debug_allocno_classes(void)
Definition ira.cc:1399
int first_moveable_pseudo
Definition ira.cc:4655
class target_ira_int default_target_ira_int
Definition ira.cc:397
#define OBJECT_CONFLICT_VEC_P(O)
Definition ira-int.h:533
void ira_debug_disposition(void)
Definition ira.cc:730
#define ALLOCNO_REGNO(A)
Definition ira-int.h:432
ira_allocno_t ira_create_allocno(int, bool, ira_loop_tree_node_t)
Definition ira-build.cc:476
#define ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P(A)
Definition ira-int.h:440
void ira_free_cost_vector(int *, reg_class_t)
Definition ira-build.cc:1644
bool ira_caller_save_loop_spill_p(ira_allocno_t a, ira_allocno_t subloop_a, int spill_cost)
Definition ira-int.h:1718
int internal_flag_ira_verbose
Definition ira.cc:404
#define ALLOCNO_CALLS_CROSSED_NUM(A)
Definition ira-int.h:451
int hard_reg_set_size(HARD_REG_SET set)
Definition ira-int.h:1442
void ira_remove_allocno_prefs(ira_allocno_t)
Definition ira-build.cc:1330
bool minmax_set_iter_cond(minmax_set_iterator *i, int *n)
Definition ira-int.h:767
void ira_finish_live_range_list(live_range_t)
Definition ira-build.cc:1082
int ira_get_dup_out_num(int, alternative_mask, bool &)
Definition ira.cc:1940
int64_t ira_mem_cost
Definition ira-int.h:651
struct ira_allocno_copy * ira_copy_t
Definition ira-int.h:63
rtx ira_create_new_reg(rtx)
Definition ira-emit.cc:336
bool ira_pref_iter_cond(ira_pref_iterator *i, ira_pref_t *pref)
Definition ira-int.h:1256
void ira_debug_allocno_copies(ira_allocno_t)
Definition ira-build.cc:1588
bool ira_need_caller_save_p(ira_allocno_t a, unsigned int regno)
Definition ira-int.h:1564
int64_t ira_reg_cost
Definition ira.cc:422
#define this_target_ira_int
Definition ira-int.h:948
void ira_initiate_assign(void)
Definition ira-color.cc:5171
#define ALLOCNO_LOOP_TREE_NODE(A)
Definition ira-int.h:435
class ira_spilled_reg_stack_slot * ira_spilled_reg_stack_slots
Definition ira.cc:414
void ira_debug_allocno_live_ranges(ira_allocno_t)
Definition ira-lives.cc:1776
void ira_print_live_range_list(FILE *, live_range_t)
Definition ira-lives.cc:1721
int64_t ira_load_cost
Definition ira.cc:423
ira_pref_t ira_create_pref(ira_allocno_t, int, int)
Definition ira-build.cc:1200
void minmax_set_iter_next(minmax_set_iterator *i)
Definition ira-int.h:792
int last_moveable_pseudo
Definition ira-int.h:1547
void ira_initiate_emit_data(void)
Definition ira-emit.cc:101
bool ira_copy_iter_cond(ira_copy_iterator *i, ira_copy_t *cp)
Definition ira-int.h:1294
ira_copy_t ira_add_allocno_copy(ira_allocno_t, ira_allocno_t, int, bool, rtx_insn *, ira_loop_tree_node_t)
Definition ira-build.cc:1472
void ira_finish_live_range(live_range_t)
Definition ira-build.cc:1075
#define OBJECT_TOTAL_CONFLICT_HARD_REGS(O)
Definition ira-int.h:536
void ira_debug_hard_regs_forest(void)
Definition ira-color.cc:553
void ira_allocate_and_accumulate_costs(int **vec, enum reg_class aclass, int *src)
Definition ira-int.h:1507
bool ira_object_conflict_iter_cond(ira_object_conflict_iterator *i, ira_object_t *pobj)
Definition ira-int.h:1373
void ira_object_iter_init(ira_object_iterator *i)
Definition ira-int.h:1174
void ira_allocno_iter_init(ira_allocno_iterator *i)
Definition ira-int.h:1137
void ira_print_expanded_allocno(ira_allocno_t)
Definition ira-build.cc:860
void ira_build_conflicts(void)
Definition ira-conflicts.cc:804
alternative_mask ira_setup_alts(rtx_insn *)
Definition ira.cc:1766
int * ira_allocate_cost_vector(reg_class_t)
Definition ira-build.cc:1637
struct live_range * live_range_t
Definition ira-int.h:60
bool ira_equiv_no_lvalue_p(int regno)
Definition ira-int.h:1107
void ira_debug_conflicts(bool)
Definition ira-conflicts.cc:794
void ira_pref_iter_init(ira_pref_iterator *i)
Definition ira-int.h:1248
HARD_REG_SET ira_total_conflict_hard_regs(ira_allocno_t a)
Definition ira-int.h:1682
#define ira_assert(c)
Definition ira-int.h:39
void minmax_set_iter_init(minmax_set_iterator *i, IRA_INT_TYPE *vec, int min, int max)
Definition ira-int.h:752
struct ira_allocno * ira_allocno_t
Definition ira-int.h:61
#define ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS(A)
Definition ira-int.h:454
void ira_debug_copies(void)
Definition ira-build.cc:1537
bool ira_use_lra_p
Definition ira.cc:5525
int ira_reg_equiv_len
Definition ira.cc:2967
struct ira_reg_equiv_s * ira_reg_equiv
Definition ira.cc:2970
#define ira_pressure_class_translate
Definition ira.h:146
#define ira_class_hard_regs_num
Definition ira.h:158
#define ira_reg_class_max_nregs
Definition ira.h:150
#define ira_memory_move_cost
Definition ira.h:154
#define MACHINE_MODE_BITSIZE
Definition machmode.h:258
poly_int< NUM_POLY_INT_COEFFS, unsigned HOST_WIDE_INT > poly_uint64
Definition poly-int-types.h:25
i
Definition poly-int.h:776
Ca & a
Definition poly-int.h:770
ALWAYS_INLINE unsigned char hard_regno_nregs(unsigned int regno, machine_mode mode)
Definition regs.h:261
static int spill_cost[FIRST_PSEUDO_REGISTER]
Definition reload1.cc:1684
#define REGNO(RTX)
Definition rtl.h:1918
#define pic_offset_table_rtx
Definition rtl.h:3952
#define NULL_RTX
Definition rtl.h:706
#define MEM_READONLY_P(RTX)
Definition rtl.h:2619
Definition ira-costs.cc:54
Definition loop-invariant.cc:101
ira_allocno_t first
Definition ira-int.h:598
int freq
Definition ira-int.h:600
ira_loop_tree_node_t loop_tree_node
Definition ira-int.h:615
ira_allocno_t second
Definition ira-int.h:598
int num
Definition ira-int.h:595
rtx_insn * insn
Definition ira-int.h:607
ira_copy_t next_second_allocno_copy
Definition ira-int.h:613
ira_copy_t next_first_allocno_copy
Definition ira-int.h:610
ira_copy_t prev_first_allocno_copy
Definition ira-int.h:610
ira_copy_t prev_second_allocno_copy
Definition ira-int.h:613
bool constraint_p
Definition ira-int.h:601
Definition ira-int.h:1130
int n
Definition ira-int.h:1132
Definition ira-int.h:1204
int n
Definition ira-int.h:1206
ira_allocno_t allocno
Definition ira-int.h:574
ira_pref_t next_pref
Definition ira-int.h:577
int freq
Definition ira-int.h:572
int num
Definition ira-int.h:567
int hard_regno
Definition ira-int.h:569
unsigned int crossed_calls_abis
Definition ira-int.h:300
enum machine_mode mode
Definition ira-int.h:284
enum reg_class aclass
Definition ira-int.h:290
int class_cost
Definition ira-int.h:348
ira_copy_t allocno_copies
Definition ira-int.h:387
int num_objects
Definition ira-int.h:364
int freq
Definition ira-int.h:345
int regno
Definition ira-int.h:281
unsigned int bad_spill_p
Definition ira-int.h:315
int nrefs
Definition ira-int.h:343
ira_loop_tree_node_t loop_tree_node
Definition ira-int.h:381
unsigned int assigned_p
Definition ira-int.h:318
ira_allocno_t next_regno_allocno
Definition ira-int.h:376
unsigned int dont_reassign_p
Definition ira-int.h:305
ira_pref_t allocno_prefs
Definition ira-int.h:383
enum machine_mode wmode
Definition ira-int.h:287
int * hard_reg_costs
Definition ira-int.h:415
ira_allocno_t cap
Definition ira-int.h:390
HARD_REG_SET crossed_calls_clobbered_regs
Definition ira-int.h:400
unsigned int conflict_vec_p
Definition ira-int.h:323
void * add_data
Definition ira-int.h:425
int * updated_hard_reg_costs
Definition ira-int.h:415
int num
Definition ira-int.h:279
int cheap_calls_crossed_num
Definition ira-int.h:372
int updated_memory_cost
Definition ira-int.h:356
int updated_class_cost
Definition ira-int.h:348
int call_freq
Definition ira-int.h:367
int * conflict_hard_reg_costs
Definition ira-int.h:422
ira_object_t objects[2]
Definition ira-int.h:398
unsigned int might_conflict_with_parent_p
Definition ira-int.h:330
int * updated_conflict_hard_reg_costs
Definition ira-int.h:422
ira_allocno_t cap_member
Definition ira-int.h:393
int excess_pressure_points_num
Definition ira-int.h:362
int memory_cost
Definition ira-int.h:356
int calls_crossed_num
Definition ira-int.h:369
signed int hard_regno
Definition ira-int.h:297
Definition ira-int.h:1279
int n
Definition ira-int.h:1281
unsigned int mem_optimized_dest_p
Definition ira-int.h:499
ira_allocno_t mem_optimized_dest
Definition ira-int.h:512
rtx reg
Definition ira-int.h:508
unsigned int somewhere_renamed_p
Definition ira-int.h:503
unsigned int child_renamed_p
Definition ira-int.h:506
ira_loop_tree_node_t next
Definition ira-int.h:89
ira_loop_tree_node_t subloop_next
Definition ira-int.h:89
bitmap local_copies
Definition ira-int.h:139
bool to_remove_p
Definition ira-int.h:107
int level
Definition ira-int.h:97
ira_loop_tree_node_t subloops
Definition ira-int.h:92
bitmap border_allocnos
Definition ira-int.h:132
int loop_num
Definition ira-int.h:103
int reg_pressure[N_REG_CLASSES]
Definition ira-int.h:125
basic_block bb
Definition ira-int.h:84
class loop * loop
Definition ira-int.h:86
bool entered_from_non_parent_p
Definition ira-int.h:121
ira_loop_tree_node_t parent
Definition ira-int.h:94
bitmap all_allocnos
Definition ira-int.h:129
bitmap modified_regnos
Definition ira-int.h:136
ira_allocno_t * regno_allocno_map
Definition ira-int.h:116
ira_loop_tree_node_t children
Definition ira-int.h:92
Definition ira-int.h:1316
unsigned IRA_INT_TYPE word
Definition ira-int.h:1342
void * vec
Definition ira-int.h:1322
unsigned int word_num
Definition ira-int.h:1326
int base_conflict_id
Definition ira-int.h:1338
unsigned int size
Definition ira-int.h:1330
bool conflict_vec_p
Definition ira-int.h:1319
unsigned int bit_num
Definition ira-int.h:1334
Definition ira-int.h:1167
int n
Definition ira-int.h:1169
unsigned int conflict_vec_p
Definition ira-int.h:264
void * conflicts_array
Definition ira-int.h:233
int subword
Definition ira-int.h:242
int num_accumulated_conflicts
Definition ira-int.h:260
ira_allocno_t allocno
Definition ira-int.h:229
int id
Definition ira-int.h:247
int max
Definition ira-int.h:252
HARD_REG_SET total_conflict_hard_regs
Definition ira-int.h:257
live_range_t live_ranges
Definition ira-int.h:238
int min
Definition ira-int.h:252
HARD_REG_SET conflict_hard_regs
Definition ira-int.h:257
unsigned int conflicts_array_size
Definition ira-int.h:244
Definition ira-int.h:1241
int n
Definition ira-int.h:1243
ira_object_t object
Definition ira-int.h:201
int finish
Definition ira-int.h:203
int start
Definition ira-int.h:203
live_range_t next
Definition ira-int.h:206
live_range_t finish_next
Definition ira-int.h:208
live_range_t start_next
Definition ira-int.h:208
int start_val
Definition ira-int.h:743
unsigned int word_num
Definition ira-int.h:734
unsigned int bit_num
Definition ira-int.h:740
unsigned int nel
Definition ira-int.h:737
unsigned IRA_INT_TYPE word
Definition ira-int.h:746
IRA_INT_TYPE * vec
Definition ira-int.h:731
#define NULL
Definition system.h:50
#define gcc_assert(EXPR)
Definition system.h:814