Commit 6e23f296 by Vladimir Makarov Committed by Vladimir Makarov

re PR rtl-optimization/59915 (LRA ICE - Repeated looping over subreg reloads…

re PR rtl-optimization/59915 (LRA ICE - Repeated looping over subreg reloads (gcc.c-torture/compile/simd-3.c))

2014-01-23  Vladimir Makarov  <vmakarov@redhat.com>

	PR regression/59915
	* lra-constraints.c (simplify_operand_subreg): Spill pseudo if
	there is a danger of looping.

From-SVN: r207007
parent f04dda30
2014-01-23 Vladimir Makarov <vmakarov@redhat.com>
PR regression/59915
* lra-constraints.c (simplify_operand_subreg): Spill pseudo if
there is a danger of looping.
2014-01-23 Pat Haugen <pthaugen@us.ibm.com>
* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
......
......@@ -1291,9 +1291,20 @@ simplify_operand_subreg (int nop, enum machine_mode reg_mode)
&& ! LRA_SUBREG_P (operand))
|| CONSTANT_P (reg) || GET_CODE (reg) == PLUS || MEM_P (reg))
{
/* The class will be defined later in curr_insn_transform. */
enum reg_class rclass
= (enum reg_class) targetm.preferred_reload_class (reg, ALL_REGS);
enum reg_class rclass;
if (REG_P (reg)
&& curr_insn_set != NULL_RTX
&& (REG_P (SET_SRC (curr_insn_set))
|| GET_CODE (SET_SRC (curr_insn_set)) == SUBREG))
/* There is big probability that we will get the same class
for the new pseudo and we will get the same insn which
means infinite looping. So spill the new pseudo. */
rclass = NO_REGS;
else
/* The class will be defined later in curr_insn_transform. */
rclass
= (enum reg_class) targetm.preferred_reload_class (reg, ALL_REGS);
if (get_reload_reg (curr_static_id->operand[nop].type, reg_mode, reg,
rclass, "subreg reg", &new_reg))
......
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