Commit ada2eb68 by Jiong Wang Committed by Jiong Wang

[LRA] PR70904, relax the restriction on subreg reload for wide mode

2016-05-12  Jiong Wang  <jiong.wang@arm.com>

gcc/
  PR rtl-optimization/70904
  * lra-constraint.c (process_addr_reg): Relax the restriction on
  subreg reload for wide mode.

From-SVN: r236181
parent 4f2e1536
2016-05-12 Jiong Wang <jiong.wang@arm.com>
PR rtl-optimization/70904
* lra-constraint.c (process_addr_reg): Relax the restriction on subreg
reload for wide mode.
2016-05-12 Marek Polacek <polacek@redhat.com>
PR c/70756
......
......@@ -1307,7 +1307,21 @@ process_addr_reg (rtx *loc, bool check_only_p, rtx_insn **before, rtx_insn **aft
subreg_p = GET_CODE (*loc) == SUBREG;
if (subreg_p)
loc = &SUBREG_REG (*loc);
{
reg = SUBREG_REG (*loc);
mode = GET_MODE (reg);
/* For mode with size bigger than ptr_mode, there unlikely to be "mov"
between two registers with different classes, but there normally will
be "mov" which transfers element of vector register into the general
register, and this normally will be a subreg which should be reloaded
as a whole. This is particularly likely to be triggered when
-fno-split-wide-types specified. */
if (in_class_p (reg, cl, &new_class)
|| GET_MODE_SIZE (mode) <= GET_MODE_SIZE (ptr_mode))
loc = &SUBREG_REG (*loc);
}
reg = *loc;
mode = GET_MODE (reg);
if (! REG_P (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