From: Michael Meissner Date: Fri, 28 Sep 2018 00:32:46 +0000 (+0000) Subject: Backport pr 87033 to gcc 7 X-Git-Tag: releases/gcc-7.4.0~141 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7bc662b4016ecb4d92776054101c4b8b6d2d5dbf;p=thirdparty%2Fgcc.git Backport pr 87033 to gcc 7 From-SVN: r264686 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 471a203d2958..97544c28c591 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2018-09-27 Michael Meissner + + Backport from mainline + 2018-08-20 Michael Meissner + + PR target/87033 + * config/rs6000/rs6000.md (extendsi2): Change constraints + from 'Y' to 'YZ' to enable the LWAX instruction to be generated + for indexed loads. + 2018-09-21 Eric Botcazou * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 4428a1e29442..cfa96a4b4714 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -1006,7 +1006,7 @@ (define_insn "extendsi2" [(set (match_operand:EXTSI 0 "gpc_reg_operand" "=r,r,wl,wu,wj,wK,wH") - (sign_extend:EXTSI (match_operand:SI 1 "lwa_operand" "Y,r,Z,Z,r,wK,wH")))] + (sign_extend:EXTSI (match_operand:SI 1 "lwa_operand" "YZ,r,Z,Z,r,wK,wH")))] "" "@ lwa%U1%X1 %0,%1 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 55bf1c25c9c8..51c37c923f5f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2018-09-27 Michael Meissner + + Backport from mainline + 2018-08-20 Michael Meissner + + PR target/87033 + * gcc.target/powerpc/pr87033.c: New test. + 2018-09-21 Eric Botcazou * gcc.dg/nested-func-11.c: New test. diff --git a/gcc/testsuite/gcc.target/powerpc/pr87033.c b/gcc/testsuite/gcc.target/powerpc/pr87033.c new file mode 100644 index 000000000000..9d62ce73d321 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr87033.c @@ -0,0 +1,12 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-options "-O2" } */ + +/* Insure that a LWAX is generated instead of ADD + LWA. LP64 is needed + because the LWA and LWAX instructions are only available in 64-bit mode. */ +long func (int *p, unsigned long n) +{ + return p[n]; +} + +/* { dg-final { scan-assembler {\mlwax\M} } } */ +/* { dg-final { scan-assembler-not {\mlwa\M} } } */