mirror of git://gcc.gnu.org/git/gcc.git
ira-int.h (ira_allocno): Rename left_conflicts_num to left_conflicts_size.
2009-03-30 Vladimir Makarov <vmakarov@redhat.com> * ira-int.h (ira_allocno): Rename left_conflicts_num to left_conflicts_size. (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to ALLOCNO_LEFT_CONFLICTS_SIZE. * ira-color.c (allocno_spill_priority, push_allocno_to_stack, remove_allocno_from_bucket_and_push, allocno_spill_priority_compare, push_allocnos_to_stack, setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE instead of ALLOCNO_LEFT_CONFLICTS_NUM. (setup_allocno_left_conflicts_num): Ditto. Rename to setup_allocno_left_conflicts_size. (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE instead of ALLOCNO_LEFT_CONFLICTS_NUM and setup_allocno_left_conflicts_size instead of setup_allocno_left_conflicts_num. * ira-build.c (ira_create_allocno): Use ALLOCNO_LEFT_CONFLICTS_SIZE instead of ALLOCNO_LEFT_CONFLICTS_NUM. From-SVN: r145312
This commit is contained in:
parent
9a48a93f5f
commit
5b0c0b2c05
|
@ -1,3 +1,26 @@
|
||||||
|
2009-03-30 Vladimir Makarov <vmakarov@redhat.com>
|
||||||
|
|
||||||
|
* ira-int.h (ira_allocno): Rename left_conflicts_num to
|
||||||
|
left_conflicts_size.
|
||||||
|
(ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
|
||||||
|
ALLOCNO_LEFT_CONFLICTS_SIZE.
|
||||||
|
|
||||||
|
* ira-color.c (allocno_spill_priority, push_allocno_to_stack,
|
||||||
|
remove_allocno_from_bucket_and_push,
|
||||||
|
allocno_spill_priority_compare, push_allocnos_to_stack,
|
||||||
|
setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
|
||||||
|
instead of ALLOCNO_LEFT_CONFLICTS_NUM.
|
||||||
|
(setup_allocno_left_conflicts_num): Ditto. Rename to
|
||||||
|
setup_allocno_left_conflicts_size.
|
||||||
|
(put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
|
||||||
|
instead of ALLOCNO_LEFT_CONFLICTS_NUM and
|
||||||
|
setup_allocno_left_conflicts_size instead of
|
||||||
|
setup_allocno_left_conflicts_num.
|
||||||
|
|
||||||
|
* ira-build.c (ira_create_allocno): Use
|
||||||
|
ALLOCNO_LEFT_CONFLICTS_SIZE instead of
|
||||||
|
ALLOCNO_LEFT_CONFLICTS_NUM.
|
||||||
|
|
||||||
2009-03-30 Vladimir Makarov <vmakarov@redhat.com>
|
2009-03-30 Vladimir Makarov <vmakarov@redhat.com>
|
||||||
|
|
||||||
* reload.c (push_reload, find_dummy_reload): Use df_get_live_out
|
* reload.c (push_reload, find_dummy_reload): Use df_get_live_out
|
||||||
|
|
|
@ -468,7 +468,7 @@ ira_create_allocno (int regno, bool cap_p, ira_loop_tree_node_t loop_tree_node)
|
||||||
ALLOCNO_CONFLICT_HARD_REG_COSTS (a) = NULL;
|
ALLOCNO_CONFLICT_HARD_REG_COSTS (a) = NULL;
|
||||||
ALLOCNO_UPDATED_HARD_REG_COSTS (a) = NULL;
|
ALLOCNO_UPDATED_HARD_REG_COSTS (a) = NULL;
|
||||||
ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS (a) = NULL;
|
ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS (a) = NULL;
|
||||||
ALLOCNO_LEFT_CONFLICTS_NUM (a) = -1;
|
ALLOCNO_LEFT_CONFLICTS_SIZE (a) = -1;
|
||||||
ALLOCNO_COVER_CLASS (a) = NO_REGS;
|
ALLOCNO_COVER_CLASS (a) = NO_REGS;
|
||||||
ALLOCNO_UPDATED_COVER_CLASS_COST (a) = 0;
|
ALLOCNO_UPDATED_COVER_CLASS_COST (a) = 0;
|
||||||
ALLOCNO_COVER_CLASS_COST (a) = 0;
|
ALLOCNO_COVER_CLASS_COST (a) = 0;
|
||||||
|
|
|
@ -683,7 +683,7 @@ static int
|
||||||
allocno_spill_priority (ira_allocno_t a)
|
allocno_spill_priority (ira_allocno_t a)
|
||||||
{
|
{
|
||||||
return (ALLOCNO_TEMP (a)
|
return (ALLOCNO_TEMP (a)
|
||||||
/ (ALLOCNO_LEFT_CONFLICTS_NUM (a)
|
/ (ALLOCNO_LEFT_CONFLICTS_SIZE (a)
|
||||||
* ira_reg_class_nregs[ALLOCNO_COVER_CLASS (a)][ALLOCNO_MODE (a)]
|
* ira_reg_class_nregs[ALLOCNO_COVER_CLASS (a)][ALLOCNO_MODE (a)]
|
||||||
+ 1));
|
+ 1));
|
||||||
}
|
}
|
||||||
|
@ -861,7 +861,7 @@ static splay_tree uncolorable_allocnos_splay_tree[N_REG_CLASSES];
|
||||||
static void
|
static void
|
||||||
push_allocno_to_stack (ira_allocno_t allocno)
|
push_allocno_to_stack (ira_allocno_t allocno)
|
||||||
{
|
{
|
||||||
int conflicts_num, conflict_size, size;
|
int left_conflicts_size, conflict_size, size;
|
||||||
ira_allocno_t a, conflict_allocno;
|
ira_allocno_t a, conflict_allocno;
|
||||||
enum reg_class cover_class;
|
enum reg_class cover_class;
|
||||||
ira_allocno_conflict_iterator aci;
|
ira_allocno_conflict_iterator aci;
|
||||||
|
@ -896,20 +896,21 @@ push_allocno_to_stack (ira_allocno_t allocno)
|
||||||
if (ALLOCNO_IN_GRAPH_P (conflict_allocno)
|
if (ALLOCNO_IN_GRAPH_P (conflict_allocno)
|
||||||
&& ! ALLOCNO_ASSIGNED_P (conflict_allocno))
|
&& ! ALLOCNO_ASSIGNED_P (conflict_allocno))
|
||||||
{
|
{
|
||||||
conflicts_num = ALLOCNO_LEFT_CONFLICTS_NUM (conflict_allocno);
|
left_conflicts_size
|
||||||
|
= ALLOCNO_LEFT_CONFLICTS_SIZE (conflict_allocno);
|
||||||
conflict_size
|
conflict_size
|
||||||
= (ira_reg_class_nregs
|
= (ira_reg_class_nregs
|
||||||
[cover_class][ALLOCNO_MODE (conflict_allocno)]);
|
[cover_class][ALLOCNO_MODE (conflict_allocno)]);
|
||||||
ira_assert
|
ira_assert
|
||||||
(ALLOCNO_LEFT_CONFLICTS_NUM (conflict_allocno) >= size);
|
(ALLOCNO_LEFT_CONFLICTS_SIZE (conflict_allocno) >= size);
|
||||||
if (conflicts_num + conflict_size
|
if (left_conflicts_size + conflict_size
|
||||||
<= ALLOCNO_AVAILABLE_REGS_NUM (conflict_allocno))
|
<= ALLOCNO_AVAILABLE_REGS_NUM (conflict_allocno))
|
||||||
{
|
{
|
||||||
ALLOCNO_LEFT_CONFLICTS_NUM (conflict_allocno) -= size;
|
ALLOCNO_LEFT_CONFLICTS_SIZE (conflict_allocno) -= size;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
conflicts_num
|
left_conflicts_size
|
||||||
= ALLOCNO_LEFT_CONFLICTS_NUM (conflict_allocno) - size;
|
= ALLOCNO_LEFT_CONFLICTS_SIZE (conflict_allocno) - size;
|
||||||
if (uncolorable_allocnos_splay_tree[cover_class] != NULL
|
if (uncolorable_allocnos_splay_tree[cover_class] != NULL
|
||||||
&& !ALLOCNO_SPLAY_REMOVED_P (conflict_allocno)
|
&& !ALLOCNO_SPLAY_REMOVED_P (conflict_allocno)
|
||||||
&& USE_SPLAY_P (cover_class))
|
&& USE_SPLAY_P (cover_class))
|
||||||
|
@ -926,8 +927,9 @@ push_allocno_to_stack (ira_allocno_t allocno)
|
||||||
removed_splay_allocno_vec,
|
removed_splay_allocno_vec,
|
||||||
conflict_allocno);
|
conflict_allocno);
|
||||||
}
|
}
|
||||||
ALLOCNO_LEFT_CONFLICTS_NUM (conflict_allocno) = conflicts_num;
|
ALLOCNO_LEFT_CONFLICTS_SIZE (conflict_allocno)
|
||||||
if (conflicts_num + conflict_size
|
= left_conflicts_size;
|
||||||
|
if (left_conflicts_size + conflict_size
|
||||||
<= ALLOCNO_AVAILABLE_REGS_NUM (conflict_allocno))
|
<= ALLOCNO_AVAILABLE_REGS_NUM (conflict_allocno))
|
||||||
{
|
{
|
||||||
delete_allocno_from_bucket
|
delete_allocno_from_bucket
|
||||||
|
@ -967,11 +969,11 @@ remove_allocno_from_bucket_and_push (ira_allocno_t allocno, bool colorable_p)
|
||||||
}
|
}
|
||||||
cover_class = ALLOCNO_COVER_CLASS (allocno);
|
cover_class = ALLOCNO_COVER_CLASS (allocno);
|
||||||
ira_assert ((colorable_p
|
ira_assert ((colorable_p
|
||||||
&& (ALLOCNO_LEFT_CONFLICTS_NUM (allocno)
|
&& (ALLOCNO_LEFT_CONFLICTS_SIZE (allocno)
|
||||||
+ ira_reg_class_nregs[cover_class][ALLOCNO_MODE (allocno)]
|
+ ira_reg_class_nregs[cover_class][ALLOCNO_MODE (allocno)]
|
||||||
<= ALLOCNO_AVAILABLE_REGS_NUM (allocno)))
|
<= ALLOCNO_AVAILABLE_REGS_NUM (allocno)))
|
||||||
|| (! colorable_p
|
|| (! colorable_p
|
||||||
&& (ALLOCNO_LEFT_CONFLICTS_NUM (allocno)
|
&& (ALLOCNO_LEFT_CONFLICTS_SIZE (allocno)
|
||||||
+ ira_reg_class_nregs[cover_class][ALLOCNO_MODE
|
+ ira_reg_class_nregs[cover_class][ALLOCNO_MODE
|
||||||
(allocno)]
|
(allocno)]
|
||||||
> ALLOCNO_AVAILABLE_REGS_NUM (allocno))));
|
> ALLOCNO_AVAILABLE_REGS_NUM (allocno))));
|
||||||
|
@ -1084,11 +1086,11 @@ allocno_spill_priority_compare (splay_tree_key k1, splay_tree_key k2)
|
||||||
ira_allocno_t a1 = (ira_allocno_t) k1, a2 = (ira_allocno_t) k2;
|
ira_allocno_t a1 = (ira_allocno_t) k1, a2 = (ira_allocno_t) k2;
|
||||||
|
|
||||||
pri1 = (ALLOCNO_TEMP (a1)
|
pri1 = (ALLOCNO_TEMP (a1)
|
||||||
/ (ALLOCNO_LEFT_CONFLICTS_NUM (a1)
|
/ (ALLOCNO_LEFT_CONFLICTS_SIZE (a1)
|
||||||
* ira_reg_class_nregs[ALLOCNO_COVER_CLASS (a1)][ALLOCNO_MODE (a1)]
|
* ira_reg_class_nregs[ALLOCNO_COVER_CLASS (a1)][ALLOCNO_MODE (a1)]
|
||||||
+ 1));
|
+ 1));
|
||||||
pri2 = (ALLOCNO_TEMP (a2)
|
pri2 = (ALLOCNO_TEMP (a2)
|
||||||
/ (ALLOCNO_LEFT_CONFLICTS_NUM (a2)
|
/ (ALLOCNO_LEFT_CONFLICTS_SIZE (a2)
|
||||||
* ira_reg_class_nregs[ALLOCNO_COVER_CLASS (a2)][ALLOCNO_MODE (a2)]
|
* ira_reg_class_nregs[ALLOCNO_COVER_CLASS (a2)][ALLOCNO_MODE (a2)]
|
||||||
+ 1));
|
+ 1));
|
||||||
if ((diff = pri1 - pri2) != 0)
|
if ((diff = pri1 - pri2) != 0)
|
||||||
|
@ -1225,7 +1227,7 @@ push_allocnos_to_stack (void)
|
||||||
allocno = VEC_pop (ira_allocno_t, removed_splay_allocno_vec);
|
allocno = VEC_pop (ira_allocno_t, removed_splay_allocno_vec);
|
||||||
ALLOCNO_SPLAY_REMOVED_P (allocno) = false;
|
ALLOCNO_SPLAY_REMOVED_P (allocno) = false;
|
||||||
rclass = ALLOCNO_COVER_CLASS (allocno);
|
rclass = ALLOCNO_COVER_CLASS (allocno);
|
||||||
if (ALLOCNO_LEFT_CONFLICTS_NUM (allocno)
|
if (ALLOCNO_LEFT_CONFLICTS_SIZE (allocno)
|
||||||
+ ira_reg_class_nregs [rclass][ALLOCNO_MODE (allocno)]
|
+ ira_reg_class_nregs [rclass][ALLOCNO_MODE (allocno)]
|
||||||
> ALLOCNO_AVAILABLE_REGS_NUM (allocno))
|
> ALLOCNO_AVAILABLE_REGS_NUM (allocno))
|
||||||
splay_tree_insert
|
splay_tree_insert
|
||||||
|
@ -1288,7 +1290,7 @@ push_allocnos_to_stack (void)
|
||||||
}
|
}
|
||||||
ira_assert (ALLOCNO_IN_GRAPH_P (allocno)
|
ira_assert (ALLOCNO_IN_GRAPH_P (allocno)
|
||||||
&& ALLOCNO_COVER_CLASS (allocno) == cover_class
|
&& ALLOCNO_COVER_CLASS (allocno) == cover_class
|
||||||
&& (ALLOCNO_LEFT_CONFLICTS_NUM (allocno)
|
&& (ALLOCNO_LEFT_CONFLICTS_SIZE (allocno)
|
||||||
+ ira_reg_class_nregs[cover_class][ALLOCNO_MODE
|
+ ira_reg_class_nregs[cover_class][ALLOCNO_MODE
|
||||||
(allocno)]
|
(allocno)]
|
||||||
> ALLOCNO_AVAILABLE_REGS_NUM (allocno)));
|
> ALLOCNO_AVAILABLE_REGS_NUM (allocno)));
|
||||||
|
@ -1380,9 +1382,9 @@ setup_allocno_available_regs_num (ira_allocno_t allocno)
|
||||||
ALLOCNO_AVAILABLE_REGS_NUM (allocno) -= n;
|
ALLOCNO_AVAILABLE_REGS_NUM (allocno) -= n;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set up ALLOCNO_LEFT_CONFLICTS_NUM for ALLOCNO. */
|
/* Set up ALLOCNO_LEFT_CONFLICTS_SIZE for ALLOCNO. */
|
||||||
static void
|
static void
|
||||||
setup_allocno_left_conflicts_num (ira_allocno_t allocno)
|
setup_allocno_left_conflicts_size (ira_allocno_t allocno)
|
||||||
{
|
{
|
||||||
int i, hard_regs_num, hard_regno, conflict_allocnos_size;
|
int i, hard_regs_num, hard_regno, conflict_allocnos_size;
|
||||||
ira_allocno_t a, conflict_allocno;
|
ira_allocno_t a, conflict_allocno;
|
||||||
|
@ -1466,7 +1468,7 @@ setup_allocno_left_conflicts_num (ira_allocno_t allocno)
|
||||||
if (a == allocno)
|
if (a == allocno)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ALLOCNO_LEFT_CONFLICTS_NUM (allocno) = conflict_allocnos_size;
|
ALLOCNO_LEFT_CONFLICTS_SIZE (allocno) = conflict_allocnos_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Put ALLOCNO in a bucket corresponding to its number and size of its
|
/* Put ALLOCNO in a bucket corresponding to its number and size of its
|
||||||
|
@ -1482,9 +1484,9 @@ put_allocno_into_bucket (ira_allocno_t allocno)
|
||||||
if (ALLOCNO_FIRST_COALESCED_ALLOCNO (allocno) != allocno)
|
if (ALLOCNO_FIRST_COALESCED_ALLOCNO (allocno) != allocno)
|
||||||
return;
|
return;
|
||||||
ALLOCNO_IN_GRAPH_P (allocno) = true;
|
ALLOCNO_IN_GRAPH_P (allocno) = true;
|
||||||
setup_allocno_left_conflicts_num (allocno);
|
setup_allocno_left_conflicts_size (allocno);
|
||||||
setup_allocno_available_regs_num (allocno);
|
setup_allocno_available_regs_num (allocno);
|
||||||
if (ALLOCNO_LEFT_CONFLICTS_NUM (allocno)
|
if (ALLOCNO_LEFT_CONFLICTS_SIZE (allocno)
|
||||||
+ ira_reg_class_nregs[cover_class][ALLOCNO_MODE (allocno)]
|
+ ira_reg_class_nregs[cover_class][ALLOCNO_MODE (allocno)]
|
||||||
<= ALLOCNO_AVAILABLE_REGS_NUM (allocno))
|
<= ALLOCNO_AVAILABLE_REGS_NUM (allocno))
|
||||||
add_allocno_to_bucket (allocno, &colorable_allocno_bucket);
|
add_allocno_to_bucket (allocno, &colorable_allocno_bucket);
|
||||||
|
|
|
@ -405,10 +405,10 @@ struct ira_allocno
|
||||||
preferences of other allocnos not assigned yet during assigning
|
preferences of other allocnos not assigned yet during assigning
|
||||||
to given allocno. */
|
to given allocno. */
|
||||||
int *conflict_hard_reg_costs, *updated_conflict_hard_reg_costs;
|
int *conflict_hard_reg_costs, *updated_conflict_hard_reg_costs;
|
||||||
/* Number of the same cover class allocnos with TRUE in_graph_p
|
/* Size (in hard registers) of the same cover class allocnos with
|
||||||
value and conflicting with given allocno during each point of
|
TRUE in_graph_p value and conflicting with given allocno during
|
||||||
graph coloring. */
|
each point of graph coloring. */
|
||||||
int left_conflicts_num;
|
int left_conflicts_size;
|
||||||
/* Number of hard registers of the allocno cover class really
|
/* Number of hard registers of the allocno cover class really
|
||||||
available for the allocno allocation. */
|
available for the allocno allocation. */
|
||||||
int available_regs_num;
|
int available_regs_num;
|
||||||
|
@ -464,7 +464,7 @@ struct ira_allocno
|
||||||
((A)->conflict_hard_reg_costs)
|
((A)->conflict_hard_reg_costs)
|
||||||
#define ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS(A) \
|
#define ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS(A) \
|
||||||
((A)->updated_conflict_hard_reg_costs)
|
((A)->updated_conflict_hard_reg_costs)
|
||||||
#define ALLOCNO_LEFT_CONFLICTS_NUM(A) ((A)->left_conflicts_num)
|
#define ALLOCNO_LEFT_CONFLICTS_SIZE(A) ((A)->left_conflicts_size)
|
||||||
#define ALLOCNO_COVER_CLASS(A) ((A)->cover_class)
|
#define ALLOCNO_COVER_CLASS(A) ((A)->cover_class)
|
||||||
#define ALLOCNO_COVER_CLASS_COST(A) ((A)->cover_class_cost)
|
#define ALLOCNO_COVER_CLASS_COST(A) ((A)->cover_class_cost)
|
||||||
#define ALLOCNO_UPDATED_COVER_CLASS_COST(A) ((A)->updated_cover_class_cost)
|
#define ALLOCNO_UPDATED_COVER_CLASS_COST(A) ((A)->updated_cover_class_cost)
|
||||||
|
|
Loading…
Reference in New Issue