[PATCH 0/5] LRA fixes for MIPS-like targets

Matthew Fortune Matthew.Fortune@imgtec.com
Tue Feb 7 14:09:00 GMT 2017


Hi, 

This patch series addresses a variety of issues in LRA that the MIPS
target has exposed but are not specific to MIPS.

The fixes are primarily related to how WORD_REGISTER_OPERATIONS needs
to be accounted for in LRA SUBREG reloading.  In almost all cases LRA
needs to reload the inner REG/MEM/PLUS rather than simplify to use
the outer mode.  Following detailed analysis of the code in
simplify_operand_subreg there is scope for various improvements around
this area.  These changes will however be far too invasive for GCC 7 in
stage 4.

Notes on the current implementation are here:
https://gcc.gnu.org/ml/gcc/2017-02/msg00000.html

Background discussion on the fixes is here:
https://gcc.gnu.org/ml/gcc/2017-01/msg00130.html

Original bug report:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78660

Some fixes made in this series are written to ensure safety and minimize
impact.  As such further changes including reworking the fixes are
likely but as part of GCC 8 development.

This whole patch series has been run through bootstrap and regression
test on mips64el-linux-gnu.

@Vladimir: Although you have given approval in principle to some of these
already please could you double check as I have added comments in some
cases. Patch 5 has not been posted before in any form.

@Eric: thanks for the offer of sparc testing; please can you let me know
if there are any issues?

I'm running x86_64 testing too but most of the code won't trigger there
as it is not a WORD_REGISTER_OPERATIONS target. If anyone can give
a recipe for bootstrapping ARM on a compile farm machine I will do that
but I have no idea how to get the ARM multiarch stuff to work in Ubuntu.

Thanks,
Matthew

Matthew Fortune (4):
  Handle WORD_REGISTER_OPERATIONS when reloading (subreg (reg))
  Tighten condition for converting SUBREG reloads from OP_OUT to
    OP_INOUT
  Support WORD_REGISTER_OPERATIONS requirements in
    simplify_operand_subreg
  Partial revert of r243782 to restore previous behavior

Robert Suchanek (1):
  Ensure the mode used to create split registers is suppported

 gcc/lra-constraints.c | 61 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 53 insertions(+), 8 deletions(-)

-- 
2.2.1



More information about the Gcc-patches mailing list