This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/83699] [8 regression] Many 64-bit SPARC gcc.dg/vect tests FAIL


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83699

--- Comment #2 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> ---
Created attachment 43047
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43047&action=edit
Hacky patch

In no-scevccp-outer-10.c, LRA enters a cycle trying to move
(subreg:SI (reg:V2SI R) 0) into a GPR.  It emits:

  (set (reg:SI tmp) (subreg:SI (reg:V2SI R) 0))
  (set (reg:SI dest) (reg:SI tmp))

and sets the class of "tmp" to ALL_REGS.  We then assign a GPR
to it, creating the same problem again.

The subreg is valid for SPARC because of REGMODE_NATURAL_SIZE.
I think the problem is that TMP needs to be restricted to
EXTRA_FP_REGS.

The attached patch does that in a hacky way.  I think a more
correct way of achieving the same thing would be to make LRA
take simplifiable_subregs into account when picking the
register for a subreg reload, just as IRA does.

I'm not sure whether this is the problem for all the
mentioned tests or not.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]