mirror of git://gcc.gnu.org/git/gcc.git
lra-constrints.c (process_alt_operands): Remove non allocatable hard regs when considering ira_prohibited_class_mode_regs.
2014-12-17 Vladimir Makarov <vmakarov@redhat.com> * lra-constrints.c (process_alt_operands): Remove non allocatable hard regs when considering ira_prohibited_class_mode_regs. From-SVN: r218835
This commit is contained in:
parent
f4e2df8970
commit
cdfc4dcf48
|
|
@ -1,3 +1,8 @@
|
|||
2014-12-17 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
* lra-constrints.c (process_alt_operands): Remove non allocatable
|
||||
hard regs when considering ira_prohibited_class_mode_regs.
|
||||
|
||||
2014-12-17 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* sreal.h (sreal::normalize): Implement inline.
|
||||
|
|
|
|||
|
|
@ -2280,11 +2280,16 @@ process_alt_operands (int only_alternative)
|
|||
not hold the mode value. */
|
||||
&& ! HARD_REGNO_MODE_OK (ira_class_hard_regs
|
||||
[this_alternative][0],
|
||||
GET_MODE (*curr_id->operand_loc[nop]))
|
||||
GET_MODE (*curr_id->operand_loc[nop])))
|
||||
{
|
||||
HARD_REG_SET temp;
|
||||
|
||||
COPY_HARD_REG_SET (temp, this_alternative_set);
|
||||
AND_COMPL_HARD_REG_SET (temp, lra_no_alloc_regs);
|
||||
/* The above condition is not enough as the first
|
||||
reg in ira_class_hard_regs can be not aligned for
|
||||
multi-words mode values. */
|
||||
&& hard_reg_set_subset_p (this_alternative_set,
|
||||
if (hard_reg_set_subset_p (temp,
|
||||
ira_prohibited_class_mode_regs
|
||||
[this_alternative]
|
||||
[GET_MODE (*curr_id->operand_loc[nop])]))
|
||||
|
|
@ -2297,6 +2302,7 @@ process_alt_operands (int only_alternative)
|
|||
nalt, nop);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check strong discouragement of reload of non-constant
|
||||
into class THIS_ALTERNATIVE. */
|
||||
|
|
|
|||
Loading…
Reference in New Issue