re PR target/48336 (Error in generation of ARM ldrd instruction)

2011-03-29  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/48336
	PR middle-end/48342
	PR rtl-optimization/48345
	* ira-color.c (setup_conflict_profitable_regs): Exclude prohibited
	hard regs for given mode from profitable regs when doing secondary
	allocation.

From-SVN: r171713
This commit is contained in:
Vladimir Makarov 2011-03-30 02:11:04 +00:00 committed by Vladimir Makarov
parent 99ac3cea6e
commit ad3b266ba5
2 changed files with 19 additions and 3 deletions

View File

@ -1,3 +1,12 @@
2011-03-29 Vladimir Makarov <vmakarov@redhat.com>
PR target/48336
PR middle-end/48342
PR rtl-optimization/48345
* ira-color.c (setup_conflict_profitable_regs): Exclude prohibited
hard regs for given mode from profitable regs when doing secondary
allocation.
2011-03-29 Jeff Law <law@redhat.com>
PR bootstrap/48327

View File

@ -1447,7 +1447,9 @@ update_conflict_hard_regno_costs (int *costs, enum reg_class aclass,
}
/* Set up conflicting and profitable regs (through CONFLICT_REGS and
PROFITABLE_REGS) for each object of allocno A. */
PROFITABLE_REGS) for each object of allocno A. Remember that the
profitable regs exclude hard regs which can not hold value of mode
of allocno A. */
static inline void
setup_conflict_profitable_regs (ira_allocno_t a, bool retry_p,
HARD_REG_SET *conflict_regs,
@ -1463,8 +1465,13 @@ setup_conflict_profitable_regs (ira_allocno_t a, bool retry_p,
COPY_HARD_REG_SET (conflict_regs[i],
OBJECT_TOTAL_CONFLICT_HARD_REGS (obj));
if (retry_p)
COPY_HARD_REG_SET (profitable_regs[i],
reg_class_contents[ALLOCNO_CLASS (a)]);
{
COPY_HARD_REG_SET (profitable_regs[i],
reg_class_contents[ALLOCNO_CLASS (a)]);
AND_COMPL_HARD_REG_SET (profitable_regs[i],
ira_prohibited_class_mode_regs
[ALLOCNO_CLASS (a)][ALLOCNO_MODE (a)]);
}
else
COPY_HARD_REG_SET (profitable_regs[i],
OBJECT_COLOR_DATA (obj)->profitable_hard_regs);