ira-conflicts.c (process_regs_for_copy): Check insn to check that the cost is already taken into account in ira-costs.c
2008-09-04 Vladimir Makarov <vmakarov@redhat.com> * ira-conflicts.c (process_regs_for_copy): Check insn to check that the cost is already taken into account in ira-costs.c * ira-int.h (ira_debug_copy, ira_debug_copies): New. * ira-build.c (print_copy, print_copies, ira_debug_copy, ira_debug_copies): New. (ira_bulid): Call print_copies. * doc/tm.texi (IRA_COVER_CLASSES): Fix the description. From-SVN: r140014
This commit is contained in:
parent
2f3b0d4ad6
commit
4cda38d572
@ -1,3 +1,16 @@
|
||||
2008-09-04 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
* ira-conflicts.c (process_regs_for_copy): Check insn to check
|
||||
that the cost is already taken into account in ira-costs.c
|
||||
|
||||
* ira-int.h (ira_debug_copy, ira_debug_copies): New.
|
||||
|
||||
* ira-build.c (print_copy, print_copies, ira_debug_copy,
|
||||
ira_debug_copies): New.
|
||||
(ira_bulid): Call print_copies.
|
||||
|
||||
* doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
|
||||
|
||||
2008-09-04 Samuel Tardieu <sam@rfc1149.net>
|
||||
|
||||
PR target/32783
|
||||
|
@ -2830,10 +2830,10 @@ as below:
|
||||
The macro defines cover classes for the Integrated Register Allocator
|
||||
(@acronym{IRA}). Cover classes are a set of non-intersecting register
|
||||
classes covering all hard registers used for register allocation
|
||||
purposes. Any move between two registers in the same cover class
|
||||
should be cheaper than load or store of the registers. The macro
|
||||
value should be the initializer for an array of register class values,
|
||||
with @code{LIM_REG_CLASSES} used as the end marker.
|
||||
purposes. If a move between two registers in the same cover class are
|
||||
possible, it should be cheaper than a load or store of the registers.
|
||||
The macro value should be the initializer for an array of register
|
||||
class values, with @code{LIM_REG_CLASSES} used as the end marker.
|
||||
|
||||
You must define this macro in order to use the integrated register
|
||||
allocator for the target.
|
||||
|
@ -1097,6 +1097,40 @@ ira_add_allocno_copy (ira_allocno_t first, ira_allocno_t second, int freq,
|
||||
return cp;
|
||||
}
|
||||
|
||||
/* Print info about copy CP into file F. */
|
||||
static void
|
||||
print_copy (FILE *f, ira_copy_t cp)
|
||||
{
|
||||
fprintf (f, " cp%d:a%d(r%d)<->a%d(r%d)@%d\n", cp->num,
|
||||
ALLOCNO_NUM (cp->first), ALLOCNO_REGNO (cp->first),
|
||||
ALLOCNO_NUM (cp->second), ALLOCNO_REGNO (cp->second), cp->freq);
|
||||
}
|
||||
|
||||
/* Print info about copy CP into stderr. */
|
||||
void
|
||||
ira_debug_copy (ira_copy_t cp)
|
||||
{
|
||||
print_copy (stderr, cp);
|
||||
}
|
||||
|
||||
/* Print info about all copies into file F. */
|
||||
static void
|
||||
print_copies (FILE *f)
|
||||
{
|
||||
ira_copy_t cp;
|
||||
ira_copy_iterator ci;
|
||||
|
||||
FOR_EACH_COPY (cp, ci)
|
||||
print_copy (f, cp);
|
||||
}
|
||||
|
||||
/* Print info about all copies into stderr. */
|
||||
void
|
||||
ira_debug_copies (void)
|
||||
{
|
||||
print_copies (stderr);
|
||||
}
|
||||
|
||||
/* Print info about copies involving allocno A into file F. */
|
||||
static void
|
||||
print_allocno_copies (FILE *f, ira_allocno_t a)
|
||||
@ -2409,6 +2443,8 @@ ira_build (bool loops_p)
|
||||
sort_conflict_id_allocno_map ();
|
||||
setup_min_max_conflict_allocno_ids ();
|
||||
ira_build_conflicts ();
|
||||
if (internal_flag_ira_verbose > 2 && ira_dump_file != NULL)
|
||||
print_copies (ira_dump_file);
|
||||
if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL)
|
||||
{
|
||||
int n, nr;
|
||||
|
@ -371,8 +371,8 @@ process_regs_for_copy (rtx reg1, rtx reg2, rtx insn, int freq)
|
||||
cover_class = ALLOCNO_COVER_CLASS (a);
|
||||
if (! ira_class_subset_p[rclass][cover_class])
|
||||
return false;
|
||||
if (reg_class_size[rclass] <= (unsigned) CLASS_MAX_NREGS (rclass, mode)
|
||||
&& only_regs_p)
|
||||
if (only_regs_p && insn != NULL_RTX
|
||||
&& reg_class_size[rclass] <= (unsigned) CLASS_MAX_NREGS (rclass, mode))
|
||||
/* It is already taken into account in ira-costs.c. */
|
||||
return false;
|
||||
index = ira_class_hard_reg_index[cover_class][hard_regno];
|
||||
|
@ -838,6 +838,8 @@ extern rtx *ira_reg_equiv_const;
|
||||
extern ira_loop_tree_node_t ira_curr_loop_tree_node;
|
||||
extern ira_allocno_t *ira_curr_regno_allocno_map;
|
||||
|
||||
extern void ira_debug_copy (ira_copy_t);
|
||||
extern void ira_debug_copies (void);
|
||||
extern void ira_debug_allocno_copies (ira_allocno_t);
|
||||
|
||||
extern void ira_traverse_loop_tree (bool, ira_loop_tree_node_t,
|
||||
|
Loading…
x
Reference in New Issue
Block a user