http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50751

Oleg Endo <oleg.e...@t-online.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #25684|0                           |1
        is obsolete|                            |

--- Comment #16 from Oleg Endo <oleg.e...@t-online.de> 2011-11-17 23:58:11 UTC 
---
Created attachment 25848
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25848
Proposed patch to add QImode displacement addressing

Just wanted to share some progress on this issue...

The FPUL case from before seems to be solved, but another issue is left which
is related to vector modes.  For example the 20050113-1.c target test case
compiled with -O0 causes:

20050113-1.c:16:1: internal compiler error: in change_address_1, at
emit-rtl.c:2001
Please submit a full bug report,
with preprocessed source if appropriate.

This is because of the following in function sh_cannot_change_mode_class:

  if (to == SFmode && VECTOR_MODE_P (from) && GET_MODE_INNER (from) == SFmode)
    return (reg_classes_intersect_p (GENERAL_REGS, rclass));


IRA's last words on that are:

Reloads for insn # 52
Reload 0: FPUL_REGS, RELOAD_FOR_INPUT_ADDRESS (opnum = 1), can't combine,
secondary_reload_p
    reload_reg_rtx: (reg:SI 150 fpul)
Reload 1: reload_in (SI) = (reg:SI 65 fr1 [orig:171 <retval> ] [171])
    GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 1)
    reload_in_reg: (reg:SI 65 fr1 [orig:171 <retval> ] [171])
    reload_reg_rtx: (reg/i:SI 0 r0)
    secondary_in_reload = 0
deleting insn with uid = 26.

Reply via email to