Commit fa86d337 by Bernd Schmidt Committed by Bernd Schmidt

ira-int.h (ira_object_conflict_iterator): Rename from ira_allocno_conflict_iterator.

	* ira-int.h (ira_object_conflict_iterator): Rename from
	ira_allocno_conflict_iterator.
	(ira_object_conflict_iter_init): Rename from
	ira_allocno_conflict_iter_init, second arg changed to
	* ira.c (check_allocation): Use FOR_EACH_OBJECT_CONFLICT rather than
	FOR_EACH_ALLOCNO_CONFLICT.
	* ira-color.c (assign_hard_reg, push_allocno_to_stack)
	setup_allocno_left_conflicts_size, coalesced_allocno_conflict_p,
	ira_reassign_conflict_allocnos, ira_reassign_pseudos): Likewise.
	* ira-conflicts.c (print_allocno_conflicts): Likewise.

From-SVN: r162168
parent 9140d27b
...@@ -126,6 +126,17 @@ ...@@ -126,6 +126,17 @@
remove_some_program_points_and_update_live_ranges, remove_some_program_points_and_update_live_ranges,
ira_debug_live_range_list): Likewise. ira_debug_live_range_list): Likewise.
* ira-int.h (ira_object_conflict_iterator): Rename from
ira_allocno_conflict_iterator.
(ira_object_conflict_iter_init): Rename from
ira_allocno_conflict_iter_init, second arg changed to
* ira.c (check_allocation): Use FOR_EACH_OBJECT_CONFLICT rather than
FOR_EACH_ALLOCNO_CONFLICT.
* ira-color.c (assign_hard_reg, push_allocno_to_stack)
setup_allocno_left_conflicts_size, coalesced_allocno_conflict_p,
ira_reassign_conflict_allocnos, ira_reassign_pseudos): Likewise.
* ira-conflicts.c (print_allocno_conflicts): Likewise.
2010-07-13 Joern Rennecke <joern.rennecke@embecosm.com> 2010-07-13 Joern Rennecke <joern.rennecke@embecosm.com>
PR other/44874 PR other/44874
......
...@@ -700,9 +700,8 @@ static void ...@@ -700,9 +700,8 @@ static void
print_allocno_conflicts (FILE * file, bool reg_p, ira_allocno_t a) print_allocno_conflicts (FILE * file, bool reg_p, ira_allocno_t a)
{ {
HARD_REG_SET conflicting_hard_regs; HARD_REG_SET conflicting_hard_regs;
ira_object_t obj; ira_object_t obj, conflict_obj;
ira_allocno_t conflict_a; ira_object_conflict_iterator oci;
ira_allocno_conflict_iterator aci;
basic_block bb; basic_block bb;
if (reg_p) if (reg_p)
...@@ -720,8 +719,9 @@ print_allocno_conflicts (FILE * file, bool reg_p, ira_allocno_t a) ...@@ -720,8 +719,9 @@ print_allocno_conflicts (FILE * file, bool reg_p, ira_allocno_t a)
fputs (" conflicts:", file); fputs (" conflicts:", file);
obj = ALLOCNO_OBJECT (a); obj = ALLOCNO_OBJECT (a);
if (OBJECT_CONFLICT_ARRAY (obj) != NULL) if (OBJECT_CONFLICT_ARRAY (obj) != NULL)
FOR_EACH_ALLOCNO_CONFLICT (a, conflict_a, aci) FOR_EACH_OBJECT_CONFLICT (obj, conflict_obj, oci)
{ {
ira_allocno_t conflict_a = OBJECT_ALLOCNO (conflict_obj);
if (reg_p) if (reg_p)
fprintf (file, " r%d,", ALLOCNO_REGNO (conflict_a)); fprintf (file, " r%d,", ALLOCNO_REGNO (conflict_a));
else else
......
...@@ -1159,14 +1159,13 @@ typedef struct { ...@@ -1159,14 +1159,13 @@ typedef struct {
/* The word of bit vector currently visited. It is defined only if /* The word of bit vector currently visited. It is defined only if
OBJECT_CONFLICT_VEC_P is FALSE. */ OBJECT_CONFLICT_VEC_P is FALSE. */
unsigned IRA_INT_TYPE word; unsigned IRA_INT_TYPE word;
} ira_allocno_conflict_iterator; } ira_object_conflict_iterator;
/* Initialize the iterator I with ALLOCNO conflicts. */ /* Initialize the iterator I with ALLOCNO conflicts. */
static inline void static inline void
ira_allocno_conflict_iter_init (ira_allocno_conflict_iterator *i, ira_object_conflict_iter_init (ira_object_conflict_iterator *i,
ira_allocno_t allocno) ira_object_t obj)
{ {
ira_object_t obj = ALLOCNO_OBJECT (allocno);
i->conflict_vec_p = OBJECT_CONFLICT_VEC_P (obj); i->conflict_vec_p = OBJECT_CONFLICT_VEC_P (obj);
i->vec = OBJECT_CONFLICT_ARRAY (obj); i->vec = OBJECT_CONFLICT_ARRAY (obj);
i->word_num = 0; i->word_num = 0;
...@@ -1190,8 +1189,8 @@ ira_allocno_conflict_iter_init (ira_allocno_conflict_iterator *i, ...@@ -1190,8 +1189,8 @@ ira_allocno_conflict_iter_init (ira_allocno_conflict_iterator *i,
case *A is set to the allocno to be visited. Otherwise, return case *A is set to the allocno to be visited. Otherwise, return
FALSE. */ FALSE. */
static inline bool static inline bool
ira_allocno_conflict_iter_cond (ira_allocno_conflict_iterator *i, ira_object_conflict_iter_cond (ira_object_conflict_iterator *i,
ira_allocno_t *a) ira_object_t *pobj)
{ {
ira_object_t obj; ira_object_t obj;
...@@ -1222,13 +1221,13 @@ ira_allocno_conflict_iter_cond (ira_allocno_conflict_iterator *i, ...@@ -1222,13 +1221,13 @@ ira_allocno_conflict_iter_cond (ira_allocno_conflict_iterator *i,
obj = ira_object_id_map[i->bit_num + i->base_conflict_id]; obj = ira_object_id_map[i->bit_num + i->base_conflict_id];
} }
*a = OBJECT_ALLOCNO (obj); *pobj = obj;
return true; return true;
} }
/* Advance to the next conflicting allocno. */ /* Advance to the next conflicting allocno. */
static inline void static inline void
ira_allocno_conflict_iter_next (ira_allocno_conflict_iterator *i) ira_object_conflict_iter_next (ira_object_conflict_iterator *i)
{ {
if (i->conflict_vec_p) if (i->conflict_vec_p)
i->word_num++; i->word_num++;
...@@ -1239,14 +1238,13 @@ ira_allocno_conflict_iter_next (ira_allocno_conflict_iterator *i) ...@@ -1239,14 +1238,13 @@ ira_allocno_conflict_iter_next (ira_allocno_conflict_iterator *i)
} }
} }
/* Loop over all allocnos conflicting with ALLOCNO. In each /* Loop over all objects conflicting with OBJ. In each iteration,
iteration, A is set to the next conflicting allocno. ITER is an CONF is set to the next conflicting object. ITER is an instance
instance of ira_allocno_conflict_iterator used to iterate the of ira_object_conflict_iterator used to iterate the conflicts. */
conflicts. */ #define FOR_EACH_OBJECT_CONFLICT(OBJ, CONF, ITER) \
#define FOR_EACH_ALLOCNO_CONFLICT(ALLOCNO, A, ITER) \ for (ira_object_conflict_iter_init (&(ITER), (OBJ)); \
for (ira_allocno_conflict_iter_init (&(ITER), (ALLOCNO)); \ ira_object_conflict_iter_cond (&(ITER), &(CONF)); \
ira_allocno_conflict_iter_cond (&(ITER), &(A)); \ ira_object_conflict_iter_next (&(ITER)))
ira_allocno_conflict_iter_next (&(ITER)))
......
...@@ -1609,33 +1609,40 @@ calculate_allocation_cost (void) ...@@ -1609,33 +1609,40 @@ calculate_allocation_cost (void)
static void static void
check_allocation (void) check_allocation (void)
{ {
ira_allocno_t a, conflict_a; ira_allocno_t a;
int hard_regno, conflict_hard_regno, nregs, conflict_nregs; int hard_regno, nregs;
ira_allocno_conflict_iterator aci;
ira_allocno_iterator ai; ira_allocno_iterator ai;
FOR_EACH_ALLOCNO (a, ai) FOR_EACH_ALLOCNO (a, ai)
{ {
ira_object_t obj, conflict_obj;
ira_object_conflict_iterator oci;
if (ALLOCNO_CAP_MEMBER (a) != NULL if (ALLOCNO_CAP_MEMBER (a) != NULL
|| (hard_regno = ALLOCNO_HARD_REGNO (a)) < 0) || (hard_regno = ALLOCNO_HARD_REGNO (a)) < 0)
continue; continue;
nregs = hard_regno_nregs[hard_regno][ALLOCNO_MODE (a)]; nregs = hard_regno_nregs[hard_regno][ALLOCNO_MODE (a)];
FOR_EACH_ALLOCNO_CONFLICT (a, conflict_a, aci) obj = ALLOCNO_OBJECT (a);
if ((conflict_hard_regno = ALLOCNO_HARD_REGNO (conflict_a)) >= 0) FOR_EACH_OBJECT_CONFLICT (obj, conflict_obj, oci)
{ {
conflict_nregs ira_allocno_t conflict_a = OBJECT_ALLOCNO (conflict_obj);
= (hard_regno_nregs int conflict_hard_regno = ALLOCNO_HARD_REGNO (conflict_a);
[conflict_hard_regno][ALLOCNO_MODE (conflict_a)]); if (conflict_hard_regno >= 0)
if ((conflict_hard_regno <= hard_regno {
&& hard_regno < conflict_hard_regno + conflict_nregs) int conflict_nregs
|| (hard_regno <= conflict_hard_regno = (hard_regno_nregs
&& conflict_hard_regno < hard_regno + nregs)) [conflict_hard_regno][ALLOCNO_MODE (conflict_a)]);
{ if ((conflict_hard_regno <= hard_regno
fprintf (stderr, "bad allocation for %d and %d\n", && hard_regno < conflict_hard_regno + conflict_nregs)
ALLOCNO_REGNO (a), ALLOCNO_REGNO (conflict_a)); || (hard_regno <= conflict_hard_regno
gcc_unreachable (); && conflict_hard_regno < hard_regno + nregs))
} {
} fprintf (stderr, "bad allocation for %d and %d\n",
ALLOCNO_REGNO (a), ALLOCNO_REGNO (conflict_a));
gcc_unreachable ();
}
}
}
} }
} }
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment